完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在使用ad7798/ad7799做精密AD转换,信号经放大后送到ad7798/ad7799,一般情况下,如果信号强度缓慢变化,工作一直正常;但如果信号强度剧烈变化时,ad7798/ad7799就停止转换,即使信号很弱了,也不能恢复。我在软件中重置ad7798/ad7799都无法解决问题,只能重启设备。
我想知道,这种情况该如何处理?还是我重置方法错了?文档中说如果出错,需要送四个0xff重置,但没有说如何检查出错。 ad7798/ad7799设置为连续转换,系统通过时钟中断检查转换结果。时钟中断5ms调用一次。check_ad7798在时钟中断中调用。 void check_ad7798(void) { static uchar count = 0; if(PINB & BIT(PB3)){ //每5ms调用一次,10次则是50ms。 按123HZ的转换速率,每次应该是10ms以下。 count++; //所以50ms还没有转换完的话,肯定是出问题了,需要重新初始化。 if(count<10) return; init_ad7798(); //重新初始化,送四个0xff init_ad7798_channel(CONF_CH1, 0); count = 0; return; } //在这里读取数据 } |
|
相关推荐
3个回答
|
|
|
|
|
|
你好,我仔细检查了一下。 发现所谓停止转换是由于信号大于1.25V,再进一步检查,发现大于1.25V时,而小于1.25V时,结果为0x7fxx,刚好是最高位读不到。怀疑是PINB &BIT(PB3)屏蔽掉了。所以把 if(PINB & BIT(PB3)){ }整个IF块注释掉。 结果发现ad转换可以一直进行。但注释掉上面的if语句块,中间会冒出不正确值。 我现在采用的模式是连续转换,连续读的方式。 现在是明白了,如果DOUT/RDY线为低时,数据已经准备好,马上读不会出错。但DOUT/RDY为高时,也可能是数据已经转换好,可以读到,但也可能是没有准备好。 ad7798/ad7799文档中提到When DOUT/RDY goes low to indicate the end of a conversion, sufficient SCLK cycles must be applied to the ADC, and the data conversion is placed on the DOUT/RDY line. 就是说DOUT/RDY为0,还要送足够的SCLK到ADC,这样读到的数据才放在DOUT/RDY上。这个“sufficient SCLK cycles must be applied to the ADC” 中的sufficient是多少?如何操作? |
|
|
|
djw200988 发表于 2018-9-28 19:57 看一下数据手册的figure3,需要时钟从MSB 到LSB |
|
|
|
只有小组成员才能发言,加入小组>>
984 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1381 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1936 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4266 浏览 2 评论
9057 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1512浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1691浏览 2评论
985浏览 2评论
1665浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1382浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 09:45 , Processed in 0.777973 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号