前面也发过相关帖子,关于多片AD7177-2多通道采样的问题。
项目中我用到了3片AD7177-2,每片4路,一共12路信号,公用一个16MHZ有源晶振,公用SPI总线,片选信号是单独的。每个通道采样率50Hz,我配置AD7177-2采样率为200Hz。现在发现读取数据的不正常:
第1种方式:定时器中断1.667ms,定时器中断中轮流拉低3片AD7177-2的CS信号,用于读取数据,计数器t=0-12循环计数,t=1,4,7,10时,拉低第一片AD[size=14.6667px]片选;t=2,5,8,11时,拉低第2片AD[size=14.6667px]片选;t=3,6,9,12时,拉低第3片AD[size=14.6667px]片选,这样每片AD的读取速率均为200Hz。[size=14.6667px]DOUT/RDY配置为外部中断,下降沿触发中断,读取AD转换数据,然后拉高相应的AD片选。这种方式带来的问题是,AD芯片偶尔不工作,示波器可以测量到片选信号正常,但是没有[size=14.6667px]DOUT/RDY信号,导致最后没有数据输出。
[size=14.6667px] 第2中方式:定时器中断0.8ss,定时器中断中轮询3片AD7177-2的状态寄存器,判断是否转换完成,如果是,则拉低相应的AD[size=14.6667px]片选,准备读取数据。[size=14.6667px]DOUT/RDY配置为外部中断,下降沿触发中断,读取AD转换数据,然后拉高相应的AD片选。这种方式带来的问题是,AD转换的数据不连续,经常连续5.6次读取同一个数值,然后来一个台阶,出现跳变(输入信号为标准正弦波)[size=14.6667px]。感觉好像是[size=14.6667px]状态寄存器读的不对,好像[size=14.6667px]RDY一直在输出0,貌似多读了好多数据。
[size=14.6667px] 请问,3片AD7177-2共12路数据采集CPU怎么处理比较好?
2018-8-9 06:52:57
共用SPI总线同时处理三个器件确实比较麻烦。
1. 可以使用SYNC引脚将三颗器件同步,监测一个器件的转换完成信号,随后读取三个器件的转换结果。
2. 如果按照你描述的方法二中,查询状态寄存器,发现转换完成bit一直为低,应该是出错了,这里读取转换结果后,该比特会变高
共用SPI总线同时处理三个器件确实比较麻烦。
1. 可以使用SYNC引脚将三颗器件同步,监测一个器件的转换完成信号,随后读取三个器件的转换结果。
2. 如果按照你描述的方法二中,查询状态寄存器,发现转换完成bit一直为低,应该是出错了,这里读取转换结果后,该比特会变高
举报