AD7124踩过的坑

AD7124踩过的坑花了正好一个星期的时间,终于基本上调通了,当然,不仅是指可以正确通过SPI和片子交互,而且采集氧量信号的精度也是非常高,至少在mv级别了。过程中遇到了一系列问题,搞的人也是很崩溃。先是SPI通讯的问题,ADI官方给的开发板的代码,用的并不是keil,spi的读写函数我根本没法用,因此只好自己来写

大家好,欢迎来到IT知识分享网。AD7124踩过的坑

花了正好一个星期的时间,终于基本上调通了,当然,不仅是指可以正确通过SPI和片子交互,而且采集氧量信号的精度也是非常高,至少在mv级别了。

过程中遇到了一系列问题,搞的人也是很崩溃。

先是SPI通讯的问题,ADI官方给的开发板的代码,用的并不是keil,spi的读写函数我根本没法用,因此只好自己来写。

我的spi代码从5420移植而来,但7124和5420有很大的不同,而且复杂了很多。

5420的读写是两函数,而7124的读写需要整合为一个.

在读写count个字节时,5420的for是从count开始,而7124是从0开始,因为刚开始时没有搞对,所以导致读出的数据都是反的,
比如读id,正确的是0x04,但我读出的却是0x20

还有,在5420中是CLR_SCL之后才给SDIN上放数据,但对于7124却需要在CLR_SCL之前放数据。
因为手册中描述:SCL下降沿驱动数据,上升沿锁存数据。

接着,遇到的问题是,读出的数据最后一位数据总是为0,比如 AD7124_Channel_0 手册上说读出来应该是0x8001,但我读出来却是0x8000,
又仔细研究了手册,手册上说,似乎在转换完成后DOUT/RDY脚会切换为RDY功能且为0表示数据有效可以被读取,而在读取之后才被重新置为1。
所以,怀疑是我读最后一位的时机不对(太晚了,以致于DOUT/RDY脚处于RDY功能且为0)
程序调整后(把从SDOUT读取数据的操作放在了SET_SCL之前),读取正确。

然后测试20mv标准信号,但始终得到的结果是18mv,尝试了各种校准,但都么有卵用。在崩溃,好心网友提示说可以测下内部2.5V,测量后竟然非常准确。
惊喜之余,又直接测了氧量信号(用信号源模拟),结果也非常精确。
我晕!难道是我对20mv标准信号的理解不对!!!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33872.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信