ad7793.c

来自「Analog-to-digital converter AD7793 funct」· C语言 代码 · 共 128 行

C
128
字号
#include "ad7793.h"

static unsigned char (*send_byte)(unsigned char c);

void ad7793_init()
{
#ifdef SPI_COMMUNICATIONS
      send_byte = spi_send_byte;
      spi_init();
#endif
#ifdef UART_COMMUNICATIONS
      send_byte = uartspi_send_byte;
      uartspi_init();
#endif
}

unsigned char ad7793_get_ID()
{
      send_byte((1<<RW) | (1<<RS2));
      return send_byte(0xFF);
}


unsigned char ad7793_get_status()
{
      send_byte((1<<RW));
      return send_byte(0xFF);
}

unsigned int ad7793_get_mode()
{
unsigned int b1, b2;

      send_byte((1<<RW) | (1<<RS0));
      b1 = send_byte(0xFF);
      b2 = send_byte(0xFF);

      return (b2 | (b1 << 8));
}

unsigned int ad7793_get_config()
{
unsigned int b1, b2;

      send_byte((1<<RW) | (1<<RS1));

      b1 = send_byte(0xFF);
      b2 = send_byte(0xFF);

      return (b2 | (b1 << 8));
}


unsigned long int ad7793_get_data()
{
unsigned long int b1;
unsigned int  b2;
unsigned char b3;

      send_byte((1<<RW) | (1<<RS1) | (1<<RS0));

      b1 = send_byte(0xFF);
      b2 = send_byte(0xFF);
      b3 = send_byte(0xFF);

      return (b3 | (b2 << 8) | (b1 << 16));
}

unsigned char ad7793_get_IO()
{
      send_byte((1<<RW) | (1<<RS2) | (1<<RS0));
      return send_byte(0xFF);
}


unsigned long int ad7793_get_offset()
{
unsigned long int b1;
unsigned int  b2;
unsigned char b3;

      send_byte((1<<RW) | (1<<RS2) | (1<<RS1));

      b1 = send_byte(0xFF);
      b2 = send_byte(0xFF);
      b3 = send_byte(0xFF);

      return (b3 | (b2 << 8) | (b1 << 16));
}

unsigned long int ad7793_get_calibration()
{
unsigned long int b1;
unsigned int  b2;
unsigned char b3;

      send_byte((1<<RW) | (1<<RS2) | (1<<RS1) | (1<<RS0));

      b1 = send_byte(0xFF);
      b2 = send_byte(0xFF);
      b3 = send_byte(0xFF);

      return (b3 | (b2 << 8) | (b1 << 16));
}


void ad7793_set_mode(unsigned int mode)
{
      send_byte(1<<RS0);
      send_byte(mode >> 8);
      send_byte(mode & 0xFF);
}


void ad7793_set_config(unsigned int config)
{
      send_byte(1<<RS1);
      send_byte(config >> 8);
      send_byte(config & 0xFF);
}

void ad7793_set_IO(unsigned char io_mode)
{
      send_byte((1<<RS2)| (1<<RS0));
      send_byte(io_mode);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?