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