I2C总线协议原理介绍
I2C總線協議原理介紹
- 1. I2C 簡介
- 2. I2C 協議有關的術語:
- 2.1 起始位
- 2.2 停止位
- 2.3 數據傳輸
- 2.4 應答信號
- 3. IC2時序
- 3.1 IC2寫時序
- 3.2 IC2讀時序
- 3.3 I2C多字節讀寫時序
1. I2C 簡介
I2C 是很常見的一種總線協議, I2C 是 NXP 公司設計的, I2C 使用兩條線在主控制器和從機之間進行數據通信。一條是 SCL(串行時鐘線),另外一條是 SDA(串行數據線),這兩條數據線需要接上拉電阻,總線空閑的時候 SCL 和 SDA 處于高電平。 I2C 總線標準模式下速度可以達到 100Kb/S,快速模式下可以達到 400Kb/S。 I2C 總線工作是按照一定的協議來運行的,接下來就看一下 I2C 協議。I2C 是支持多從機的,也就是一個 I2C 控制器下可以掛多個 I2C 從設備,這些不同的 I2C從設備有不同的器件地址,這樣 I2C 主控制器就可以通過 I2C 設備的器件地址訪問指定的 I2C設備了,一個 I2C 總線連接多個 I2C 設備如圖所示:
SDA 和 SCL 這兩根線必須要接一個上拉電阻,一般是 4.7K。其余的 I2C 從器件都掛接到 SDA 和 SCL 這兩根線上,這樣就可以通過 SDA 和 SCL 這兩根線來訪問多個 I2C設備。
2. I2C 協議有關的術語:
2.1 起始位
顧名思義,也就是 I2C 通信起始標志,通過這個起始位就可以告訴 I2C 從機,“我”要開始進行 I2C 通信了。在 SCL 為高電平的時候, SDA 出現下降沿就表示為起始位,如圖所示:
2.2 停止位
停止位就是停止 I2C 通信的標志位,和起始位的功能相反。在 SCL 位高電平的時候, SDA出現上升沿就表示為停止位,如圖所示:
2.3 數據傳輸
I2C 總線在數據傳輸的時候要保證在 SCL 高電平期間, SDA 上的數據穩定,因此 SDA 上的數據變化只能在 SCL 低電平期間發生,如圖所示:
2.4 應答信號
當 I2C 主機發送完 8 位數據以后會將 SDA 設置為輸入狀態,等待 I2C 從機應答,也就是等到 I2C 從機告訴主機它接收到數據了。應答信號是由從機發出的,主機需要提供應答信號所需的時鐘,主機發送完 8 位數據以后緊跟著的一個時鐘信號就是給應答信號使用的。從機通過將 SDA 拉低來表示發出應答信號,表示通信成功,否則表示通信失敗。
3. IC2時序
IC2時序有寫時序、讀時序和多字節讀寫時序。
3.1 IC2寫時序
主機通過 I2C 總線與從機之間進行通信不外乎兩個操作:寫和讀, I2C 總線單字節寫時序如圖:
圖中就是 I2C 寫時序,我們來看一下寫時序的具體步驟:
1)、開始信號
2)、發送 I2C 設備地址,每個 I2C 器件都有一個設備地址,通過發送具體的設備地址來決定訪問哪個 I2C 器件。這是一個 8 位的數據,其中高 7 位是設備地址,最后 1 位是讀寫位,為1 的話表示這是一個讀操作,為 0 的話表示這是一個寫操作。
3)、 I2C 器件地址后面跟著一個讀寫位,為 0 表示寫操作,為 1 表示讀操作。
4)、從機發送的 ACK 應答信號。
5)、重新發送開始信號。
6)、發送要寫寫入數據的寄存器地址。
7)、從機發送的 ACK 應答信號。
8)、發送要寫入寄存器的數據。
9)、從機發送的 ACK 應答信號。
10)、停止信號。
3.2 IC2讀時序
I2C 總線單字節讀時序如圖所示:
I2C 單字節讀時序比寫時序要復雜一點,讀時序分為 4 大步,第一步是發送設備地址,第二步是發送要讀取的寄存器地址,第三步重新發送設備地址,最后一步就是 I2C 從器件輸出要讀取的寄存器值,步驟如下:
1)、主機發送起始信號。
2)、主機發送要讀取的 I2C 從設備地址。
3)、讀寫控制位,因為是向 I2C 從設備發送數據,因此是寫信號。
4)、從機發送的 ACK 應答信號。
5)、重新發送 START 信號。
6)、主機發送要讀取的寄存器地址。
7)、從機發送的 ACK 應答信號。
8)、重新發送 START 信號。
9)、重新發送要讀取的 I2C 從設備地址。
10)、讀寫控制位,這里是讀信號,表示接下來是從 I2C 從設備里面讀取數據。
11)、從機發送的 ACK 應答信號。
12)、從 I2C 器件里面讀取到的數據。
13)、主機發出 NO ACK 信號,表示讀取完成,不需要從機再發送 ACK 信號了。
14)、主機發出 STOP 信號,停止 I2C 通信。
3.3 I2C多字節讀寫時序
有時候我們需要讀寫多個字節,多字節讀寫時序和單字節的基本一致,只是在讀寫數據的時候可以連續發送多個自己的數據,其他的控制時序都是和單字節一樣的。
總結
以上是生活随笔為你收集整理的I2C总线协议原理介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot(一)
- 下一篇: oracle t7-2报价,Sun/Or