通过STM32F407的硬件SPI驱动AD7682,根据AD7682中文手册,上面写的是支持伪双极性输入,硬件上,VREF接的是外置ADR4525提供的2.5V,让COM接的是基准2.5V分压后的1.25V,IN0-IN3输入的电压范围是: -1.25 ~ 1.25。SPI配置CPOL = CPHA = 0,波特率预分频值为256,对AD7682读写设置如下,想请教大家这种接法是不是有误?现在程序采样到的AD值根据不对应,而且随意跳动。。。
u16 AD7682_ReadWriteByte(u16 ch)
{
u16 reg=0;
u16 DataL = 0;
u16 DataH = 0;
u16 AD7689_Data = 0;
reg = (1<<13)|(2<<10)|(ch<<7)|(1<<6)|(7<<3)|(1<<0)|(0<<1) ;
reg <<=2; //寄存器只用到了14位,所以要先移出高两位
SPI2_CS = 0;
DataH = SPI_ReadWriteByte(SPI2,(u8)((reg)>>8));
DataL = SPI_ReadWriteByte(SPI2,(u8)reg);
SPI2_CS = 1;
DataH = DataH << 8;
AD7689_Data = DataH | DataL;
return (AD7689_Data);
}