1 簡(jiǎn)介
IIC-BUS的英文全稱是Inter-Integrated Circuit Bus,其主要的目的是實(shí)現(xiàn)微控制器與外圍設(shè)備進(jìn)行數(shù)據(jù)傳輸。它是一種半雙工通信方式,通信方式簡(jiǎn)單,僅包含SDA(數(shù)據(jù)總線)和SCL(時(shí)鐘總線)組成。通信總線通常由主設(shè)備和從設(shè)備組成,從設(shè)備是通過(guò)設(shè)備地址來(lái)進(jìn)行區(qū)分,在同一時(shí)刻,設(shè)備之間數(shù)據(jù)傳送只能由一個(gè)設(shè)備傳送給對(duì)應(yīng)地址的設(shè)備。

什么是I2C總線主設(shè)備和從設(shè)備?
主設(shè)備 :I2C總線的主導(dǎo)者,能向從西安發(fā)送起始信號(hào)和中止信號(hào),且能決定總線數(shù)據(jù)的發(fā)送與接收。另外,主設(shè)備能發(fā)送指令,同時(shí)既能向從設(shè)備讀取數(shù)據(jù)也能向從設(shè)備寫(xiě)入數(shù)據(jù)。
從設(shè)備 :I2C總線的被動(dòng)者,對(duì)主設(shè)備發(fā)送的數(shù)據(jù)做出及時(shí)響應(yīng)。從設(shè)備的類型比較多,具體可以是EEROM、各種傳感器等。
I2C總線最大可以掛在多少個(gè)設(shè)備?
最大電容限制(標(biāo)準(zhǔn)模式和快速模式為400pF,高速模式為500pF)。且在實(shí)際的應(yīng)用過(guò)程中最好保證I2C設(shè)備不超過(guò)8個(gè)(經(jīng)驗(yàn)之談)。
有些設(shè)備預(yù)留地址線的僅3位(相同設(shè)備最多掛在8個(gè),2^3=8),甚至更少。
I2C總線最大的傳輸速率為多少?
| 序號(hào) | 模式 | 最大速率 |
|---|---|---|
| 1 | 標(biāo)準(zhǔn)模式 | 100kb/s |
| 2 | 快速模式 | 400kbit/s |
| 3 | 高速模式 | 3.4Mbit/s |
之前在講串口電路時(shí),有講過(guò)一個(gè)“波特率”概念,不知道是否有人知道波特率和比特率的區(qū)別?
波特率:?jiǎn)挝粫r(shí)間內(nèi)傳輸?shù)拇a元個(gè)數(shù)。
比特率:?jiǎn)挝粫r(shí)間內(nèi)傳輸?shù)亩?jí)制位數(shù)。
二者換算關(guān)系為:比特率=波特率×log2n,此處分享一個(gè)計(jì)算的案例:

2 I2C總線特點(diǎn)
- 簡(jiǎn)單和靈活 :僅包含數(shù)據(jù)線和時(shí)鐘線,物理通信鏈路簡(jiǎn)單。
- 雙向傳輸 :主設(shè)備既能向從設(shè)備發(fā)送數(shù)據(jù),從設(shè)備也能向主設(shè)備發(fā)送數(shù)據(jù)。
- 時(shí)鐘同步 :采用串行時(shí)鐘總線,能有效保證數(shù)據(jù)的準(zhǔn)確性。
- 多種設(shè)備支持 :總線上掛載的設(shè)備,可以掛在多種不同設(shè)備,不受設(shè)備類型的影響。
3 編碼規(guī)則
- 起始信號(hào)和停止信號(hào)
- 起始信號(hào):當(dāng)時(shí)鐘信號(hào)為高電平時(shí),數(shù)據(jù)線由高電平變?yōu)榈碗娖降倪^(guò)程。
- 停止信號(hào):當(dāng)時(shí)鐘信號(hào)為高電平時(shí),數(shù)據(jù)線由低電平變?yōu)楦唠娖降倪^(guò)程。

注意: 在IIC空閑時(shí),SDA、SCL都是保持高電平 。(I2C信號(hào)出現(xiàn)故障時(shí),先查看SCL和SDA的電平)
- 應(yīng)答信號(hào)和非應(yīng)答信號(hào)
- 應(yīng)答信號(hào):當(dāng)主設(shè)備傳送8位數(shù)據(jù)結(jié)束后,主機(jī)會(huì)將SDA線拉高,此時(shí)如果從設(shè)備正確接收數(shù)據(jù)則會(huì)將SDA拉低并在SCL高電平時(shí)保持低電平,這個(gè)信號(hào)為ACK信號(hào)
- 非應(yīng)答信號(hào):如果在傳輸8位數(shù)據(jù)后從機(jī)沒(méi)有將SDA拉低則該信號(hào)為NACK。

4 信號(hào)傳輸
IIC總線上面的每一個(gè)設(shè)備都有唯一的地址與之對(duì)應(yīng),信號(hào)傳輸時(shí)也是根據(jù)指定的地址找到設(shè)備來(lái)傳輸信號(hào)。
- 寫(xiě)操作
- 主設(shè)備確定從設(shè)備地址,發(fā)送起始信號(hào);
- 向總線設(shè)備的地址以及數(shù)據(jù)傳輸方向;
- 從設(shè)備收到主設(shè)備的信號(hào)后沒(méi)回復(fù)一個(gè)應(yīng)答信號(hào);
- 主設(shè)備向從設(shè)備以字節(jié)為單位發(fā)送數(shù)據(jù),且每發(fā)送一個(gè)數(shù)據(jù),都會(huì)接收來(lái)自從設(shè)備的應(yīng)答信號(hào);
- 數(shù)據(jù)發(fā)送完成后,從設(shè)備發(fā)送一個(gè)停止信號(hào),表明此次數(shù)據(jù)傳輸結(jié)束。

- 讀數(shù)據(jù)
- 主設(shè)備確認(rèn)從設(shè)備地址,發(fā)送起始信號(hào);
- 向總線上發(fā)送從設(shè)備的地址以及讀取數(shù)據(jù)的命令;
- 對(duì)應(yīng)的從設(shè)備回復(fù)應(yīng)答信號(hào);
- 從設(shè)備向主設(shè)備回復(fù)主設(shè)備要讀取的數(shù)據(jù);
- 從設(shè)備數(shù)據(jù)發(fā)送給完成后,主機(jī)向從設(shè)備發(fā)送一個(gè)非應(yīng)答信號(hào),然后中止數(shù)據(jù)的讀取。

5 總線仲裁
總線上存在兩個(gè)及兩個(gè)以上主設(shè)備時(shí),每個(gè)節(jié)點(diǎn)都可以作為主設(shè)備向總線上發(fā)送命令或者數(shù)據(jù)。當(dāng)總線上同時(shí)存在兩個(gè)或者兩個(gè)以上主設(shè)備發(fā)送信號(hào)時(shí),就會(huì)造成總線沖突。此時(shí),就需要進(jìn)行I2C總線仲裁。分以下兩個(gè)方面來(lái)說(shuō):
時(shí)鐘同步
時(shí)鐘總線(SCL)具有“線與”的邏輯功能,就是當(dāng)總線有任意一個(gè)節(jié)點(diǎn)向總線發(fā)送低電平時(shí),總線就會(huì)呈現(xiàn)低電平的狀態(tài)。(所有節(jié)點(diǎn)呈現(xiàn)高電平時(shí),總線表現(xiàn)為高電平)
SDA仲裁
SDA仲裁也是基于“線與”的邏輯功能,節(jié)點(diǎn)發(fā)送數(shù)據(jù)后,比較總線與發(fā)送的數(shù)據(jù)是否一致,保持一致則繼續(xù)發(fā)送,否則退出競(jìng)爭(zhēng)。SDA仲裁這種機(jī)制保證了I2C中線上即使有多個(gè)主設(shè)備,也不會(huì)造成數(shù)據(jù)丟失。
仲裁過(guò)程
- 設(shè)備1和設(shè)備2同時(shí)向設(shè)備發(fā)送起始信號(hào),總線上電平與發(fā)送電平一致,繼續(xù)發(fā)送數(shù)據(jù);
- 設(shè)備1和設(shè)備2同時(shí)向設(shè)備發(fā)送低電平,總線上電平與發(fā)送電平一致,繼續(xù)發(fā)送數(shù)據(jù);
- 設(shè)備1發(fā)送高電平。設(shè)備2發(fā)送低電平。此時(shí),總線呈現(xiàn)低電平狀態(tài)??偩€的電平與設(shè)備1發(fā)送的電平不一致,退出競(jìng)爭(zhēng),且變?yōu)閺脑O(shè)備。設(shè)備2繼續(xù)發(fā)送數(shù)據(jù)。
5 上拉電阻計(jì)算
由于I2C總線端口的高電平是通過(guò)上拉電阻實(shí)現(xiàn),線上的電平從低變高時(shí),電源通過(guò)上拉電阻對(duì)線上負(fù)載電容CL充電,這需要一定的上升時(shí)間。
電容充電一般公式:

整理可得:

I2C規(guī)范將低于VIL或0.3VDD的電壓定義為邏輯低電平,同樣將高于VIH或0.7VDD的電壓定義為邏輯高電平。由上式可以求得:

即T1=0.356675*CL

所以最大上拉電阻為:

結(jié)論:電源電壓決定上拉電阻的最小值,總線負(fù)載電容決定上拉電阻的最大值。
當(dāng)Tr取最大值,CL取最小值時(shí),R有最大值。
| 模式 | 上升沿的最大時(shí)間 | 總線負(fù)載最大容限 |
|---|---|---|
| 標(biāo)準(zhǔn)模式 | 1000ns | 400pF |
| 快速模式 | 300ns | 400pF |
| 高速模式 | 120ns | 550pF |
所以快速模式下,負(fù)載電容為50pF:

-
微控制器
+關(guān)注
關(guān)注
48文章
8250瀏覽量
162421 -
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6732文章
2576瀏覽量
217991 -
總線
+關(guān)注
關(guān)注
10文章
3014瀏覽量
91307 -
I2C
+關(guān)注
關(guān)注
28文章
1547瀏覽量
130499 -
I2C總線
+關(guān)注
關(guān)注
8文章
411瀏覽量
63001
發(fā)布評(píng)論請(qǐng)先 登錄
虛擬I2C總線串行顯示電路介紹
I2C總線的電路設(shè)計(jì)
I2C總線硬件電路設(shè)計(jì)
I2C總線信號(hào)與測(cè)試案例(二)
使用GPIO模擬I2C的電路設(shè)計(jì)
硬件電路設(shè)計(jì)流程系列
使用GPIO模擬I2C的電路設(shè)計(jì)
基于CP2120的SPI與I2C總線接口轉(zhuǎn)換電路設(shè)計(jì)
基于I2C總線控制的音頻處理電路設(shè)計(jì)
基于I2C總線控制的音頻處理電路設(shè)計(jì)
基于CPLD的I2C總線接口設(shè)計(jì)
基于I2C總線的單片機(jī)鍵盤控制電路設(shè)計(jì)與實(shí)現(xiàn)
硬件I2C與模擬I2C
硬件設(shè)計(jì):接口--不同電源系統(tǒng)下I2C總線電平轉(zhuǎn)換電路(電橋)設(shè)計(jì)

硬件電路設(shè)計(jì)之I2C電路設(shè)計(jì)
評(píng)論