使用407模拟SPI,上电后AD7689要么采集的值是0x0000,要么采集的值就是0xFFFF,真实应该在1000左右,参考电压使用内部参考电压。使用STM32F103模拟SPI进行采集,相同的驱动程序,却可以正常进行采集。
基本的驱动程序如下:
配置程序
#define AD7689_MISO PAin(6)
#define AD7689_SCK PAout(5)
#define AD7689_MOSI PAout(7)
#define AD7689_CNV PAout(4)
#define AD7689_RB 1
#define AD7689_SEQ 0
#define AD7689_REF 1
#define AD7689_BW 0
#define AD7689_INCC 7
驱动程序
u16 SPI_AD7689_Read(u8 AD7689_CFG, u8 AD7689_INx)
{
u16 AD7689_Config=0,AD7689_Data;
u8 i;
AD7689_Config = AD7689_CFG<<13|AD7689_INCC<<10|AD7689_INx<<7|AD7689_BW<<6|AD7689_REF<<3|AD7689_SEQ<<1|AD7689_RB;
AD7689_Config <<=2;
AD7689_CNV = 0;
delay_us(1);
for(i=0;i<16;i++)
{
if(AD7689_Config&0x8000)
{
AD7689_MOSI = 1 ;
}
else
{
AD7689_MOSI = 0;
}
AD7689_SCK = 0;
AD7689_Config <<= 1;
AD7689_SCK = 1;
AD7689_Data <<=1;
if(AD7689_MISO)
{
AD7689_Data |=1;
}
}
delay_us(1);
AD7689_SCK = 0;
delay_us(1);
AD7689_CNV = 1;
return AD7689_Data;
}
采集部分
SPI_AD7689_Read(1, 0); |