完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
|
只有小组成员才能发言,加入小组>>
寻求ADF5355类似的微波源,在DC-15GHz内,锁频时间在1ms内
1787 浏览 0 评论
1627 浏览 0 评论
999 浏览 0 评论
1098 浏览 0 评论
ADF5355失锁: 在用ADF5355进行多次扫频时,延时给了500ms还是经常会失锁
1189 浏览 0 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
2842浏览 3评论
2086浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
2118浏览 2评论
1173浏览 2评论
使用ADI官方提供的no-OS來接收GPS L1(1575.42MHz)的資料
1405浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:38 , Processed in 0.675515 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
602