调试调试AD7799遇到的问题遇到的问题
经历了四天的挣扎,AD7799终于调试成功啦!!!!!!!说说我遇到的问题一、不判忙的状态下,读出数据是ffffff二、不加判忙读出的数据一直是000000,加上判忙后,一直检
测不到RDY变低,程序一直执行在判忙函数中
一、不判忙的状态下,读出数据是ffffff
解决办法:
设置CONFIGURATIONREGISTER的con5为1,然后检测STATUSREGISTER的NOREF位是否为1,如果为1说明内部基准低于0.5v,也就是说没有基准。我检测到NOREF位为 1,用万用表检测ref+为
2.5,不是虚焊。检测来检测去没有问题,开始怀疑芯片,网上刚好也有说这个问题的,他说是芯片基准坏啦。我没办法重新焊了一块板子,问题依旧。没法硬着头皮看datasheet,最后发现还是设置的
事。在我的硬件上ref-是直接接在管脚psw上的,如图示:
问题就出在这,psw是个可以配置的开关,如图示
手册中MODEREGISTER的MR12是控制psw的,描述如下:电源开关控制位。当此位为1时器件的PSW管脚和GND导通,可以允许30MA的电流通过;当此为为0时,psw管脚悬空。我在写
MODEREGISTER时没有将MR12位置1,导致psw悬空,ref-接近2.5V,所以检测不到基准,读出数全部为ffffff。
改正方法有两个
1、置位MODEREGISTER的MR12
2、把ref-直接接到GND
二、不加判忙读出的数据一直是000000,加上判忙后,一直检测不到RDY变低,程序一直执行在判忙函数中
遇到这个问题我就直接崩溃了,这时候我已经不相信芯片是坏的了,没办法就怀疑时序,就拿中文手册加英文手册去看,看看错过了哪一点。看了一天多没啥发现。后来拉个同事一块看,没发现什么问
题,这时接近崩溃中,用逻辑分析仪也分析了,跟程序写的时序一样的,不是程序的事。肯定还是时序的事。插个小事,我给 ADI亚太地区技术支持打电话啦,这个问题拖了三天,直到今天才给我打电
话,但是给我的感觉就是这个技术支持对这个芯片不是很了解,没给我太大的帮助,不过还要谢谢今天技术支持的耐心讲解和指导。我就接着看程序,今天下午又把内部零刻度校准和片内满度校准都加
了上去,还是不行。然后接着和同事讨论,他提议直接把CS接GND,试试就试试,最后发现程序正常啦,赶紧看读出的数据,发现很准确。调节电位器,重新采集,电压还是准确。当时就有跳起来的冲
动,终于成功啦!!!这样肯定是CS的时序不对。然后对照手册发现单次转换模式下的时序中,CS一直是低电平,如图示
然后回想起21IC上的一篇日志上也是没有设置CS,这时候才恍然大悟,原来官方给的例程里都每次读写都改变了CS的值,移植官方的读写程序,如图
官方的读时序
评论0