畢業設計--2020-1-13 DS3231秒出問題(秒讀數全部是偶數的原因)

今天測試了DS3231 這個傳感器,這個傳感器的其他的特點不在贅述,資料很齊全。 主要是和大家分享一下我遇到的問題。

先說明原因    缺少了一個 ACK位   SCL時鐘的第一個時鐘給了 ACK 之後  所有回讀的bit 都錯位了。 在 IIC 的讀時序裏面 少了一個ACK

 

測試的時候發現打印的數據裏面的 秒數據兩秒一跳  串口打印回來的數據是這樣的

已知我的串口打印的時間間隔是500ms,我很容易的就猜出是 bit 錯位了,然後就開始找bit 錯位的原因  查找代碼部分 

第一步是驗證  確實是bit 發生了錯位   我直接將數據右移一位  發現對得上了 , 數據全部是偶數,然後 時間間隔是兩秒鐘

接下來是找問題  一開始懷疑是  BCD 轉 HEX 部分出問題  所以我在最底層的bit 讀取部分加了 打印, 打印出每一個 bit

發現在讀取的時候就發生了bit的錯位,這樣基本就可以 確定是IIC的底層部分出了問題

讀數據手冊發現 了這個ACK 和我的代碼裏面以前寫過的不是很一樣, 加上ACK

解決了問題

問題就是因爲我缺少了一個 ACK位   SCL時鐘的第一個時鐘給了 ACK 之後  所有回讀的bit 都錯位了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章