AD7790上电默认连续转换模式,初始化配置为100Hz速率,利用SPI_RDY作为
STM32的外部中断,读取ADC转换结果,相关代码如下:
// ADC初始化,配置100Hz更新速率
无效的 AD_ Init ()
{
spi1_init () ;
spi_cs1=0;
spi1_ readwritebyte( 0x20) ;
spi1_ readwritebyte( 0x01) ;
}
// ADC 数据读取
u16 ad_read()
{
u16 RXbuf;
/spi_cs1=0;
EE_CS=1;
spi1_ readwritebyte( 0x38) ;
SPI1->CR1|=1<<11; // 16 bit data
while((SPI1->SR 1<<1)==0);
SPI1->DR=0;
while((SPI1->SR 1<<0)==0);
RXbuf = SPI1->DR;
SPI1->CR1 =~(1<<11);
返回RXbuf;
}
测试结果如下:
1) 大部分情况下,上电测试读取数据正常;
2)存在一定概率,上电后数据读取异常,结果为0x00或0xFF;
3)异常数据时,观测SPI波形,显示更新速率为16.6Hz(ADC默认),但是数据结果异常(0xFF居多)
出现异常后,无论ADC如何再次配置,都无法恢复正常,只有ADC重新上电才可以恢复
根据芯片数据手册来看,目前的配置过程应该正确,但是不清楚为什么有时候无法正常读取数据,而且此状态不开恢复,除非芯片重新上电?
请教哪位用过的高人指点下,谢谢