I2C 協議詳解(一)—— 單幀數據發送


I2C 協議由 Philip 公司開發,是一種簡單高效的串行通信協議,具體詳細內容可參見 I2C 手冊,I2C 有兩個信號線,SCL 和 SDA。下圖為 I2C 的幀格式:

I2C 可以在一次傳輸中傳輸多個數據幀,這里以單幀為例,多幀傳輸的會在以后的文章中詳細介紹。

數據幀可以分為以下幾個部分:

  1. 起始位:當 SCL 為高電平的時候,SDA 拉低,表示起始位。
  2. 數據位:起始位之后的跟的 8 個數據位。
  3. 應答位(ACK),在 8 個數據為傳輸結束之后,主機釋放 SDA ,將其拉高,從機拉低 SDA作為應答,表示從機接受到了數據。
  4. 結束位,應答為結束之后,在 SCL 為高電平的時候,SDA 拉高,表示結束位。

需要特別注意的是應答位(ACK),在主機發送從機接受的狀況下,應答位由從機發送,具體內容因芯片而異。

這里使用單片機來發送一個 I2C 的數據幀 0xB2,代碼如下:

編譯下載運行,然后邏輯分析儀的顯示結果如下:

 

可以看到,雖然波形占空比一塌糊塗w(゚Д゚)w的,單片機忠誠的輸出了 0xB2 這個參數。I2C 還有連續發送的功能,實現起來也並不困難。下一章節會是 PCF 8563 的部分。

本篇就在這里告一段落了,ヾ(•ω•`)o。


免責聲明!

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



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