SCL:上升沿將數據輸入到每個EEPROM器件中;下降沿驅動EEPROM器件輸出數據。(邊沿觸發)
SDA:雙向數據線,為OD門,與其它任意數量的OD與OC門成"線與"關系。
一、協議
1.空閑狀態 I2C總線總線的SDA和SCL兩條信號線同時處于高電平時,規定為總線的空閑狀態。此時各個器件的輸出級場效應管均處在截止狀態,即釋放總線, 由兩條信號線各自的上拉電阻把電平拉高。
2.起始位與停止位的定義:
起始信號:當SCL為高期間,SDA由高到低的跳變;啟動信號是一種電平跳變時序信號,而不是一個電平信號。
停止信號:當SCL為高期間,SDA由低到高的跳變;停止信號也是一種電平跳變時序信號,而不是一個電平信號。
3.ACK
發送器每發送一個字節,就在時鐘脈沖9期間釋放數據線,由接收器反饋一個應答信號。應答信號為低電平,表示接收器已經成功地接收了該字節;
應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。對于反饋有效應答位ACK的要求是,接收器在第9個時鐘脈沖
之前的低電平期間將SDA線拉低,并且確保在該時鐘的高電平期間為穩定的低電平。如果接收器是主控器,則在它收到最后一個字節后,發送一個NACK信號,
以通知被控發送器結束數據發送,并釋放SDA線,以便主控接收器發送一個停止信號P。
4.數據的有效性:
I2C總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩定,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。
5.數據的傳送:
在I2C總線上傳送的每一位數據都有一個時鐘脈沖相對應(或同步控制),即在SCL串行時鐘的配合下,在SDA上逐位地串行傳送每一位數據。數據位的傳輸是邊沿觸發。
一個字節的數據在發送過程中是先傳輸高位(MSB),再傳輸低位(LSB).
1.設備尋址
主設備發送起始位,這會通知總線上的所有設備傳輸開始了,接下來主機發送設備地址,與這一地址匹配的slave將會發送一個應答,再強調一下,如果地址匹配,從機
會在設備地址發送后發送一個應答,這樣主設備就尋址到了對就該設備地址的從設備。
2.延時處理
如果從機沒有準備好,就會把SCL拉低。
主設備寫數據到從機:(寫一個寄存器地址)
1、主設備發送起始位;
2、主設備發送8位的從機地址(其中最低位是讀寫控制位(0:寫,1:讀)此時是寫,高7位是從機地址位)
3、從機應答
4、主設備發送8位的從機寄存器地址
5、從機應答
6、主設備發送數據
7、從機應答
8、發送停止位
注:(1)步驟6和步驟7可以重復。
(2)應答信號是低電平
主設備讀取從機數據:(一個寄存器地址)
1、主設備發送起始位;
2、主設備發送8位的從機地址(其中最低位是讀寫控制位(0:寫,1:讀),高7位是從機地址位),此時是寫
3、從機應答
4、主設備發送8位的從機寄存器地址
5、從機應答
6、主設備發送停止位
7、主設備發送起始位
8、主設備發送8位的從機地址(其中最低位是讀寫控制位(0:寫,1:讀),高7位是從機地址位),此時是讀
9、從機應答
10、從機發送數據
11、主機應答(NACK)
12、從機釋放總線,主機發送停止位。
主設備讀從機多個地址:
1、起始位
2、主設備發送從機地址寫
3、主設備發送從機寄存器地址1
4、主設備發送從機地址讀
5、讀數據1(注意:從步驟5到步驟6是沒停止)
6、起始位
7、主設備發送從機寄存器地址2
8、主設備發送從機地址讀
9、讀數據2
10、起始位
停止位
在I2C總線上傳輸的數據都是8bit位為單位的,所以當主機要往從機寫數據時時序如下:
1、發送start信號
2、發送7位地址+1個讀寫位0(0表示寫,1表示讀)
3、從機收到地址后,發送ACK應答信號
4、主機收到應答信號后發送要寫的8位數據
5、若從機收到主機發送的數據,發送ACK應答信號
6、如果主機要繼續寫,那么回到步驟4,如果寫完了那么發送stop信號,終止通信
當主機要從從機讀取數據時時序如下:
發送start信號
1、發送7位地址+1個讀寫位1(0表示寫,1表示讀)
2、從機收到地址后,發送ACK應答信號
3、主機收到應答信號后等待接收從機的數據
4、從機發送主機要讀取的數據
5、若主機收到從機發送的數據,發送ACK應答信號
6、如果主機要繼續讀,那么回到步驟4,如果讀完了那么發送stop信號,終止通信
-
I2C
+關注
關注
28文章
1491瀏覽量
124080 -
I2C總線
+關注
關注
8文章
391瀏覽量
61052
發布評論請先 登錄
相關推薦
i2c總線ppt(I2C總線器件應用)
i2c總線的特點
I2C Guid I2C指南
基于I2C接口隔離的應用筆記
![基于<b class='flag-5'>I2C</b>接口隔離的應用<b class='flag-5'>筆記</b>](https://file.elecfans.com/web2/M00/49/D3/pYYBAGKhvGWAey0sAAAWtc0Qe7M215.jpg)
I2C和SPI學習筆記
![<b class='flag-5'>I2C</b>和SPI學習<b class='flag-5'>筆記</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
硬件I2C與模擬I2C
![硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ESP32 之 ESP-IDF 教學(六)——I2C數據總線(I2C)
![ESP32 之 ESP-IDF 教學(六)——<b class='flag-5'>I2C</b>數據總線(<b class='flag-5'>I</b>2<b class='flag-5'>C</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
I2C子系統SW Architecture
![<b class='flag-5'>I2C</b>子系統SW Architecture](https://file1.elecfans.com/web2/M00/8D/81/wKgaomS7jI6AcVIDAAFQF5uK5G8249.jpg)
I2C和I3C的區別有哪些
![<b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的區別有哪些](https://file1.elecfans.com/web2/M00/8D/81/wKgaomS7kJCAF9bvAAHDKhtdKbc905.jpg)
評論