电路设计论坛
直播中

刘桂兰

7年用户 978经验值
私信 关注
[问答]

AD7790数据读取异常怎么处理?

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重新上电才可以恢复
  根据芯片数据手册来看,目前的配置过程应该正确,但是不清楚为什么有时候无法正常读取数据,而且此状态不开恢复,除非芯片重新上电?
  请教哪位用过的高人指点下,谢谢

回帖(1)

ilusin

2024-8-26 18:18:53
你好,我也遇到类似的情况,请问你解决了吗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分