I2C總線規(guī)范詳細(xì)介紹
術(shù)語
發(fā)送器 發(fā)送數(shù)據(jù)到總線的器件
接收器 從總線接收數(shù)據(jù)的器件
主機(jī)
從機(jī)
多主機(jī) 同時(shí)有多于一個(gè)主機(jī)嘗試控制總線但不破壞報(bào)文
仲裁
同步
二、I2C 總線上數(shù)據(jù)傳輸?shù)倪^程
I2C 總線是一個(gè)多主機(jī)的總線,這就是說可以連接多于一個(gè)能控制總線的器件到總線。由于主機(jī)通常是微控制器,讓我們考慮以下數(shù)據(jù)在兩個(gè)連接到I2C 總線的微控制器之間傳輸?shù)那闆r。這突出了I2C 總線的主機(jī)--從機(jī)和接收器--發(fā)送器的關(guān)系。
應(yīng)當(dāng)注意的是這些關(guān)系不是持久的,只由當(dāng)時(shí)數(shù)據(jù)傳輸?shù)姆较驔Q定。
傳輸數(shù)據(jù)的過程如下:
1、假設(shè)微控制器A 要發(fā)送信息到微控制器B
1)微控制器A 主機(jī)尋址微控制器B 從機(jī)
2)微控制器A 主機(jī)發(fā)送器發(fā)送數(shù)據(jù)到微控制器B 從機(jī)接收器
3)微控制器A 終止傳輸
2、如果微控制器A 想從微控制器B 接收信息
1)微控制器A 主機(jī)尋址微控制器B 從機(jī)
2)微控制器A 主機(jī)接收器從微控制器B 從機(jī)發(fā)送器接收數(shù)據(jù)
3)微控制器A 終止傳輸,甚至在這種情況下主機(jī)微控制器A 也產(chǎn)生定時(shí)而且終止傳輸
三、I2C 總線的仲裁
連接多于一個(gè)微控制器到I2C 總線的可能性意味著超過一個(gè)主機(jī)可以同時(shí)嘗試初始化傳輸數(shù)據(jù)。為了避免由此產(chǎn)生混亂,發(fā)展出一個(gè)仲裁過程。它依靠線與連接所有I2C 總線接口到I2C 總線。如果兩個(gè)或多個(gè)主機(jī)嘗試發(fā)送信息到總線,在其他主機(jī)都產(chǎn)生“0” 的情況下,首先產(chǎn)生一個(gè)“1”的主機(jī)將丟失仲裁。仲裁時(shí)的時(shí)鐘信號(hào)是用線與連接到SCL 線的主機(jī)產(chǎn)生的時(shí)鐘的同步結(jié)合。
在I2C 總線上產(chǎn)生時(shí)鐘信號(hào)通常是主機(jī)器件的責(zé)任,當(dāng)在總線上傳輸數(shù)據(jù)時(shí)每個(gè)主機(jī)產(chǎn)生自己的時(shí)鐘信號(hào)。主機(jī)發(fā)出的總線時(shí)鐘信號(hào)只有在以下的情況才能被改變:慢速的從機(jī)器件控制時(shí)鐘線并延長(zhǎng)時(shí)鐘信號(hào),或者在發(fā)生仲裁時(shí)被另一個(gè)主機(jī)改變。
四、I2C 總線的配置
SDA 和SCL 都是雙向線路,都通過一個(gè)電流源或上拉電阻連接到正的電源電壓。當(dāng)總線空閑時(shí),這兩條線路都是高電平。連接到總線的器件輸出級(jí)必須是漏極開路或集電極開路才能執(zhí)行線與的功能。I2C 總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達(dá) 100kbit/s,在快速模式下可達(dá) 400kbit/s,在高速模式下可達(dá) 3.4Mbit/s 。連接到總線的接口數(shù)量只由總線電容是 400pF 的限制決定。
1)數(shù)據(jù)的有效性:SDA 線上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定。數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL 線的時(shí)鐘信號(hào)是低電平時(shí)才能改變。
2)起始和停止條件:在I2C 總線中唯一出現(xiàn)的是被定義為起始S 和停止P 條件的情況。其中一種情況是在SCL 線是高電平時(shí),SDA 線從高電平向低電平切換這個(gè)情況表示起始條件;當(dāng)SCL 是高電平時(shí),SDA 線由低電平向高電平切換表示停止條件。
起始和停止條件一般由主機(jī)產(chǎn)生??偩€在起始條件后被認(rèn)為處于忙的狀態(tài),在停止條件的某段時(shí)間后總線被認(rèn)為再次處于空閑狀態(tài)。如果連接到總線的器件合并了必要的接口硬件,那么用它們檢測(cè)起始和停止條件十分簡(jiǎn)便。但是沒有這種接口的MCU,在每個(gè)時(shí)鐘周期至少要采樣SDA 線兩次來判別有沒有發(fā)生電平切換。
Hs 模式器件的系統(tǒng)的物理I2C 總線配置:主機(jī)器件的SDA 和SCL 管腳只在速度混合的總線系統(tǒng)中使用,在只有Hs 模式的系統(tǒng)中不需要連接。此時(shí)這些管腳有其他功能。
可選的串連電阻RS 保護(hù)I2C 總線器件的I/O 級(jí),防止總線上高電壓的毛刺影響I/O 級(jí)并將振蕩和干擾減到最小。
上拉電阻Rp 使SDAH 和SCLH 線在總線空閑的時(shí)侯保持高電平,并確保信號(hào)在要求的上升時(shí)間內(nèi)從低電平變成高電平。對(duì)于電容負(fù)載很高>100pF 的總線線路,為了符合上升時(shí)間的要求,可以用外部上拉電流源代替Rp 。除非跟著一個(gè)響應(yīng)位,Hs 模式傳輸?shù)腟CLH 時(shí)鐘脈沖上升時(shí)間被激活主機(jī)的內(nèi)部電流源上拉電路MCS 縮短。
五、I2C 總線的電平兼容
I2C 總線器件的電氣規(guī)范和連接到它們的總線線路特性:有1.5V 和3V 固定輸入電平的 I2C 總線器件每個(gè)都有它們自己相應(yīng)的電源電壓上拉電阻必須連接到一個(gè)5V +-10% 的電源。輸入電平連接到VDD 的I2C 總線器件必須有一條公共的電源線連接到上拉電阻。當(dāng)有固定輸入電平的器件與輸入電平連接到VDD 的器件混合使用時(shí),后者必須連接到一條公共的5V +-10% 電源線,而且必須連接上拉電阻到SDA 和SCL 管腳。
如何將電壓不同的器件通過連接到電源電壓線的上拉電阻連接到相同的總線?盡管上述是最簡(jiǎn)單的解決方法,但低電壓的器件必須能容忍5V,這將使它們的生產(chǎn)更昂貴。
通過使用雙向電平轉(zhuǎn)換器,可以將電源電壓和邏輯電平不同的兩部分I2C 總線連接起來。“低電壓”部分有上拉電阻,而且器件連接到3.3V 的電源電壓;“高電平”部分有上拉電阻,器件連接到5V 電源電壓。兩部分的器件都有與邏輯輸入電平相關(guān)的電源電壓和開漏輸出配置的I/O。
每條總線線路的電平轉(zhuǎn)換器是相同的,而且由一個(gè)分立的N通道增強(qiáng)型MOS-FET 管、串行數(shù)據(jù)線SDA 的TR1 和串行時(shí)鐘線SCL 的TR2 組成。門極g 要連接到最電源電壓VDD1,源極s 連接到“低電壓”部分的總線線路,而漏極d 則連接到“高電壓”部分的總線線路。
評(píng)論