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標准信號的理解不對!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM