AD7732,AD7734,AD7738,AD7739驱动,STM32.

AD773X是AD模拟公司出的一款24bit高精度的模拟信号采集芯片,该芯片可以同时采集8路模拟信号,通过SPI接口的方式几乎可以与所有的mcu处理器通信,本人多个项目用到此模拟芯片,驱动代码如下,与大家分享。

1,SPI驱动

        首先要初始化SPI驱动,MCU的任一个SPI都可以使用。以stm32驱动为例

GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef  SPI_InitStructure;
    
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);//使能SPI1时钟
 
  //GPIOFB3,4,5初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5复用功能输出    
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化

2,AD773X驱动

        头文件定义所有寄存器和寄存器访问位

/*AD7739 Registers*/
#define AD7739_REG_COMM        0x00    /* Communications Register    (W,  8-bit) */
#define AD7739_REG_IO        0x01     /* I/P Port register          (RW, 8-bit  */
#define AD7739_REG_REV        0x02    /* Revision Register         (R,  8-bit) */
#define AD7739_REG_TEST        0x03     /* Test Register             (RW, 24-bit)*/
#define AD7739_REG_STATUS    0x04     /* ADC Status Register         (R,     8-bit) */
#define AD7739_REG_CKS        0x05     /* Checksum Register           (RW, 16-bit)*/
#define AD7739_REG_ZSCAL       0x06     /* ADC Zero-Scale Calibration Register    (RW, 24-bit)*/
#define AD7739_REG_FS        0x07     /* Full-Scale Register        (RW, 24-bit */
#define AD7739_REG_CH1_DATA 0x08    /* CH1 data Register        (R,  24-bit)*/
#define AD7739_REG_CH2_DATA 0x09    /* CH2 data Register        (R,  24-bit)*/
#define AD7739_REG_CH3_DATA 0x0A    /* CH3 data Register        (R,  24-bit)*/
#define AD7739_REG_CH4_DATA 0x0B    /* CH4 data Register        (R,  24-bit)*/

        头文件函数原型定义

/* Initialize AD7739 and  check if the device is present*/
unsigned char AD7739_Init(void);
/* Sends 32 consecutive 1's on SPI in order to reset the part. */
void AD7739_Reset(void);
/* Reads the value of the selected register. */
unsigned long AD7739_GetRegisterValue(unsigned char regAddress, 
                                      unsigned char size);
/* Writes a value to the register. */
void AD7739_SetRegisterValue(unsigned char regAddress,
                             unsigned long regValue, 
                             unsigned char size);
/* Sets the operating mode of AD7739. */
void AD7739_Setup(void);
/* Reads /RDY bit of Status register. */
unsigned char AD7739_Ready(char ch);              
 

各位读者,代码系本人原创,耗费了不少心血,如需完整驱动代码,与本人联系扣扣: 48445803。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值