通過例項來分析I2C基本通訊協議
阿新 • • 發佈:2018-11-26
本文旨在用最通俗易懂的方式。讓大家明確I2C通訊的過程到底是怎麼回事。
I2C起源於飛利浦公司的電視設計,但之後朝通用路線發展,各種電子設計都有機會用到I2C
我們還是簡單回想一下《I2C 簡單介紹》中的 I2C 匯流排的幾種訊號狀態
1. 空暇狀態: SDA 和 SCL 都為高電平。 的改變僅僅能發生在 SCL 的低電平期間。
二進位制串為 S 001111000 000010000 {RS} 001111010 110111101 P 翻譯就是 3C 08 3D DE 另外能夠看出, RS restart 和 start 波形非常類似,並且 P 之前 slave 沒有 ack ,就說明 slave 不準備再提供資料了,說明是 byte 讀。 假設要讀多 byte ,由於這個是 st 的 sensor 。所以在 offset 位最高位寫 1 即可了。這是 st 的 private 規定。
資料位是S 001100000 001000000 001001110 P 翻譯一下就是30 20 27。slave address 18 (30/2) offset 20, data 27.
從圖中能夠看出。第九位應答位為高。說明並沒有master並沒有收到應答 資料位是S 001111001 000000001(並非完整的波形) 翻譯一下slave address 1e(3c/2) offset 0 .....
本文簡單分析了I2C的讀寫的詳細過程。以及依據幾個波形圖的例項,分析了詳細傳送的資料,供大家參考。
我們還是簡單回想一下《I2C 簡單介紹》中的 I2C
1. 空暇狀態: SDA 和 SCL 都為高電平。
2. 開始條件(S):SCL 為高電平時,SDA 由高電平向低電平跳變。開始傳送資料。
3. 結束條件(P):SCL 為高電平時,SDA 由低電平向高電平跳變,結束傳送資料。
4. 資料有效:在 SCL 的高電平期間,SDA 保持穩定,資料有效。
SDA
5. ACK 訊號:資料傳輸的過程中,接收器件每接收一個位元組資料要產生一個 ACK 訊號,向傳送器件發出特定的低電平脈衝。表示已經收到資料。
- 空暇狀態
當沒有資料須要讀寫時,大家風平浪靜,時鐘和資料線都是出於高電平狀態,可是當資料傳輸時,就必須有一個規則產生,那就是
- 開始條件(S)
- 結束條件(P)
- 資料有效
Clk為低。資料無效。
- ACK 訊號
- 讀寫協議
- 例項分析
二進位制串為 S 001111000 000010000 {RS} 001111010 110111101 P 翻譯就是 3C 08 3D DE 另外能夠看出, RS restart 和 start 波形非常類似,並且 P 之前 slave 沒有 ack ,就說明 slave 不準備再提供資料了,說明是 byte 讀。 假設要讀多 byte ,由於這個是 st 的 sensor 。所以在 offset 位最高位寫 1 即可了。這是 st 的 private 規定。
資料位是S 001100000 001000000 001001110 P 翻譯一下就是30 20 27。slave address 18 (30/2) offset 20, data 27.
從圖中能夠看出。第九位應答位為高。說明並沒有master並沒有收到應答 資料位是S 001111001 000000001(並非完整的波形) 翻譯一下slave address 1e(3c/2) offset 0 .....
本文簡單分析了I2C的讀寫的詳細過程。以及依據幾個波形圖的例項,分析了詳細傳送的資料,供大家參考。