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