<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 互連技術(shù) > 正文

I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus

發(fā)布時(shí)間:2021-12-02 來(lái)源:ADI 責任編輯:wenwei

【導讀】I2C,即Inter-Integrated Circuit,是一種常用的串行通信協(xié)議,用于在器件之間——特別是兩個(gè)或兩個(gè)以上不同電路之間建立通信。I2C Primer是最常用的I2C。本文將介紹I2C Primer的基本特性和標準,并重點(diǎn)說(shuō)明在通信實(shí)現過(guò)程中如何正確使用該協(xié)議。從I2C的基本原理出發(fā),我們將介紹其變體子集——系統管理總線(xiàn)(SMBus)和電源管理總線(xiàn)(PMBus)——的可用性及二者的區別。這三種協(xié)議各有專(zhuān)門(mén)的功能,旨在滿(mǎn)足不同的客戶(hù)需求。


為何重要?


I2C 有利于設計人員在系統的眾多節點(diǎn)之間建立簡(jiǎn)單、雙向、靈活的通信。I2C僅使用兩條雙向線(xiàn)來(lái)發(fā)送和接收信息,從而降低了復雜性。它還允許設計人員配置多個(gè)主節點(diǎn)系統IC之間的通信。I2C對管理系統和電源的開(kāi)發(fā)人員也很有利,讓他們能夠在盡可能短的時(shí)間內創(chuàng )建高質(zhì)量的產(chǎn)品。


"溝通(通信)對那些致力于溝通(通信)的人有用。"


—John Powell


通信協(xié)議在組織設備之間通信時(shí)扮演著(zhù)重要角色。它基于系統要求而以不同方式進(jìn)行設計。此類(lèi)協(xié)議具有明確的、為實(shí)現成功通信而協(xié)商一致的規則。


如果您曾經(jīng)使用LED顯示器、傳感器甚至加速度計模塊之類(lèi)的東西構建過(guò)系統,那么您很可能已經(jīng)使用過(guò)I2C。I2C支持多個(gè)節點(diǎn)連接單個(gè)主器件和多個(gè)主器件連接多個(gè)節點(diǎn)的特性。如果您希望物盡其用,讓一個(gè)微控制器將數據記錄到單個(gè)存儲卡,或向單個(gè)LCD顯示文本,則此特性非常有用。


除了最常用的I2C Primer,I2C還有兩個(gè)變體,分別專(zhuān)注于系統和電源應用,稱(chēng)為系統管理總線(xiàn)(SMBus)和電源管理總線(xiàn)(PMBus)。


根據定義,Inter-Integrated Circuit (I2C)——也稱(chēng)為Inter IC——是一種硬件通信協(xié)議,它通過(guò)一條多主器件、多節點(diǎn)、串行通信總線(xiàn)進(jìn)行同步通信。同步通信意味著(zhù)兩個(gè)(或兩個(gè)以上)交換數據的器件共享一條公共時(shí)鐘線(xiàn)。I2C廣泛用于將低速外圍IC連接到處理器和微控制器。I2C總線(xiàn)由飛利浦公司設計,它讓位于同一電路板上的器件之間可以輕松通信。


I2C Primer


接口


使用一條串行數據(SDA)線(xiàn)、一條串行時(shí)鐘(SCL)線(xiàn)和一個(gè)公共接地來(lái)承載所有通信,最大程度地減少連接。


1.png

圖 1. 集成電路彼此直接通信


每個(gè)I2C器件有兩條線(xiàn)路:


●    SDA是供主器件和節點(diǎn)發(fā)送和接收數據的線(xiàn)路。

●    SCL是承載時(shí)鐘信號的線(xiàn)路。SCL總是由I2C主器件生成。規范對時(shí)鐘信號的低相位和高相位有最短周期要求。


I2C總線(xiàn)僅使用兩條雙向線(xiàn)路:每個(gè)器件的SDA和SCL用于簡(jiǎn)單的IC間通信。


2.png

圖 2. I2C 上拉電阻連接


硬件最重要的注意是在SDA和SCL上加入上拉電阻。I2C器件通過(guò)開(kāi)集或開(kāi)漏引腳連接到總線(xiàn),將線(xiàn)路拉低。當沒(méi)有數據傳輸時(shí),I2C總線(xiàn)處于高電平空閑狀態(tài);線(xiàn)路被被動(dòng)拉高。要傳輸數據,須切換線(xiàn)路,即先拉低再釋放(又變?yōu)楦唠娖剑?。數據位在時(shí)鐘下降沿傳輸。


開(kāi)漏輸出需要一個(gè)上拉電阻(圖2中的Rp)才能正確輸出高電平。上拉電阻連接在輸出引腳和高電平所需的輸出電壓(圖2中的VDD)之間。


對于VCC和VDD (5 V)的典型值,4700 Ω是最常用的上拉電阻值。


作為參考,屏蔽2 AWG雙絞線(xiàn)電纜的電容范圍為100 pF?m至240pF?m。因此,I2C鏈路的最大總線(xiàn)長(cháng)度約為1米(100 kBaud時(shí))或10米(10 kBaud時(shí))。非屏蔽電纜的電容通常要小得多,但只能用在以其他方式加以屏蔽的外殼內。


表1總結了I2C的關(guān)鍵特性。


表1. I2C匯總

1638151960436398.png


理論上,尋址模式的最大節點(diǎn)數為27或210,但有16個(gè)地址保留用于特殊用途。


I2C 是同步的,因此位的輸出通過(guò)主器件和節點(diǎn)之間共享的時(shí)鐘信號與位的采樣同步。時(shí)鐘信號始終由主器件控制。


保留I2C節點(diǎn)地址


有16個(gè)保留I2C地址。這些地址對應于以下兩種模式之一:0000 XXX或1111 XXX。表2顯示了為特殊目的而保留的I2C地址。


表2. I2C保留地址

1638151943575466.png


I2C 工作原理


I2C 數據在消息中傳輸,消息被分解為數據幀。讀寫(xiě)協(xié)議包含地址幀(即節點(diǎn)的二進(jìn)制地址)和另一個(gè)數據幀,后者包含所傳輸的數據、開(kāi)始和停止條件、重復起始位、讀?寫(xiě)位以及每個(gè)數據幀之間的應答?不應答位。


時(shí)序規格表


I2C 時(shí)序表也很重要,因為工程師利用它可以設計出與總線(xiàn)要求兼容的IC。每個(gè)數據速率都有自己的時(shí)序規格,主器件和節點(diǎn)必須遵守該規格才能正確傳輸數據。


表3顯示了時(shí)序規格表上給出的符號和參數。


表3. I2C時(shí)序規格表示例

1638151928342056.png


1638151916124664.jpg

圖 3. I2C 消息


I2C 傳輸子協(xié)議


總線(xiàn)上的傳輸要么是讀操作,要么是寫(xiě)操作。讀取和寫(xiě)入協(xié)議建立在一系列子協(xié)議之上,例如起始和停止條件、重復起始位、地址字節、數據傳輸位和應答?不應答位。


起始條件


顧名思義,起始條件總是在傳輸開(kāi)始時(shí)出現,并由主器件發(fā)起。這樣做是為了喚醒總線(xiàn)上的空閑節點(diǎn)器件。SDA線(xiàn)從高電平切換到低電平,然后SCL線(xiàn)從高電平切換到低電平。參見(jiàn)圖4。


重復起始條件


在不發(fā)出停止條件的情況下,起始條件可以在傳輸期間重復。這是一種特殊情況,稱(chēng)為重復起始,用于改變數據傳輸方向、重復嘗試傳輸、同步多個(gè)IC,甚至控制串行存儲器。參見(jiàn)圖5。


地址幀


地址幀包含7位或10位序列,具體取決于可用性(參見(jiàn)數據手冊)。參見(jiàn)圖6。


不像SPI,I2C沒(méi)有節點(diǎn)選擇線(xiàn)路,因此它需要另一種方法來(lái)讓節點(diǎn)知道數據正向其發(fā)送,而不是向另一個(gè)節點(diǎn)發(fā)送。這是通過(guò)尋址來(lái)實(shí)現的。地址幀始終是新消息中起始位之后的第一幀。


主器件將其想要與之通信的節點(diǎn)地址發(fā)送到其所連接的每個(gè)節點(diǎn)。然后,每個(gè)節點(diǎn)將主器件所發(fā)送的地址與其自己的地址進(jìn)行比較。如果地址匹配,它便向主器件發(fā)送一個(gè)低電壓ACK位。如果地址不匹配,則節點(diǎn)什么也不做,SDA線(xiàn)保持高電平。


讀?寫(xiě)位


地址幀的最后一位告知節點(diǎn),主器件是想要將數據寫(xiě)入其中還是從中接收數據。如果主器件希望將數據發(fā)送到節點(diǎn),則讀?寫(xiě)位處于低電平。如果主器件請求從節點(diǎn)得到數據,則該位處于高電平。參見(jiàn)圖7。


ACK?NACK位


消息中的每一幀后面都跟隨一個(gè)應答?不應答位。如果成功接收到一個(gè)地址幀或數據幀,則接收器件會(huì )向發(fā)件者返回一個(gè)ACK位。


圖例:在下面的圖中,白色框表示節點(diǎn),藍色框表示主器件。參見(jiàn)圖8。


1638151896705630.png

圖 4. 起始條件 


1638151885533682.jpg

圖 5. 重復起始條件


1638151868220114.jpg

圖 6. 地址幀


1638151857763268.jpg

圖 7. 讀 / 寫(xiě)位


1638151844571661.jpg

圖 8. 應答 / 不應答位


數據幀


主器件檢測到來(lái)自節點(diǎn)的ACK位之后,就準備發(fā)送第一數據幀。數據幀總是8位長(cháng),并以MSB優(yōu)先方式發(fā)送。每個(gè)數據幀之后緊接著(zhù)一個(gè)ACK?NACK位,以驗證該幀是否已成功接收。主器件或節點(diǎn)(取決于誰(shuí)發(fā)送數據)必須收到ACK位,然后才能發(fā)送下一數據幀。參見(jiàn)圖9。


停止條件


發(fā)送完所有數據幀之后,主器件可以向節點(diǎn)發(fā)送停止條件以停止傳輸。停止條件是指SCL線(xiàn)上的電壓從低電平變?yōu)楦唠娖?,然后在SCL線(xiàn)保持高電平的情況下,SDA線(xiàn)上的電壓從低電平變?yōu)楦唠娖健?/p>


在SCL線(xiàn)從低電平切換到高電平后,SDA線(xiàn)從低電平切換到高電平。參見(jiàn)圖10。


I2C傳輸步驟:寫(xiě)入


有關(guān)寫(xiě)入單個(gè)數據的I2C傳輸的示例,請參見(jiàn)圖11。


第1步


主器件將SDA線(xiàn)從高電平切換到低電平,然后將SCL線(xiàn)從高電平切換到低電平,以將起始條件發(fā)送到每個(gè)相連的節點(diǎn)。


第2步


主器件將其想要與之通信的節點(diǎn)的7位或10位地址以及寫(xiě)操作位發(fā)送給每個(gè)節點(diǎn)。


例如,7位地址為0x2D,加上寫(xiě)操作位(相當于0),結果將是0x5A。


第3步


每個(gè)節點(diǎn)將主器件所發(fā)送的地址與其自己的地址進(jìn)行比較。如果地址匹配,節點(diǎn)便將SDA線(xiàn)拉低一位的時(shí)間,以返回一個(gè)ACK位。如果來(lái)自主器件的地址與節點(diǎn)自己的地址不匹配,則節點(diǎn)讓SDA線(xiàn)保持高電平不變。


在SCL的第九個(gè)脈沖期間拉低SDA線(xiàn)路可以發(fā)送ACK位,保持浮空高電平則為NACK。


第4步


主器件發(fā)送或接收數據幀。


第5步


傳輸完每個(gè)數據幀之后,接收器件再向發(fā)送者返回一個(gè)ACK位,以確認成功接收該幀。


第6步


若要停止數據傳輸,主器件應將SCL切換為高電平,然后將SDA切換為高電平,從而發(fā)送停止條件。


1638151812149756.png

圖 9. 數據幀 


1638151798127850.png

圖 10. 停止條件


1638151784758614.png

圖 11.寫(xiě)入單個(gè)位置的 I2C 傳輸的數據手冊示例


1638151771636710.jpg

圖 12. 讀取單個(gè)位置的 I2C 傳輸的數據手冊示例


I2C數據傳輸步驟:讀取


第1步


主器件將SDA線(xiàn)從高電平切換到低電平,然后將SCL線(xiàn)從高電平切換到低電平,以將起始條件發(fā)送到每個(gè)相連的節點(diǎn)。


第2步


主器件將其想要與之通信的節點(diǎn)的7位或10位地址以及寫(xiě)操作位發(fā)送給每個(gè)節點(diǎn)。


例如,7位地址為0x2D,加上寫(xiě)操作位(相當于0),結果將是0x5A。


第3步


每個(gè)節點(diǎn)將主器件所發(fā)送的地址與其自己的地址進(jìn)行比較。如果地址匹配,節點(diǎn)便將SDA線(xiàn)拉低一位的時(shí)間,以返回一個(gè)ACK位。如果來(lái)自主器件的地址與節點(diǎn)自己的地址不匹配,則節點(diǎn)讓SDA線(xiàn)保持高電平不變。


第4步


經(jīng)過(guò)初始啟動(dòng)、尋址和應答之后,主器件已經(jīng)知道目標節點(diǎn)及指向的地址,因此某些器件具有重復起始條件來(lái)清理事務(wù)。


注意:僅用于閱讀目的!


第5步


主器件將其想要與之通信的節點(diǎn)的7位或10位地址以及讀操作位 發(fā)送給每個(gè)節點(diǎn)。


例如,7位地址為0x2D,加上讀操作位(相當于1),結果將是0x5B。


第6步


每個(gè)節點(diǎn)將主器件所發(fā)送的地址與其自己的地址進(jìn)行比較。如果地址匹配,節點(diǎn)便將SDA線(xiàn)拉低一位的時(shí)間,以返回一個(gè)ACK位。如果來(lái)自主器件的地址與節點(diǎn)自己的地址不匹配,則節點(diǎn)讓SDA線(xiàn)保持高電平不變。


第7步


得到ACK位之后,主器件接收來(lái)自節點(diǎn)的數據幀。


第8步


傳輸完每個(gè)數據幀之后,主器件再向發(fā)送者返回一個(gè)ACK位,以確認成功接收該幀,或者如果讀取請求已經(jīng)完成,則主器件返回NACK。


第9步


若要停止數據傳輸,主器件應將SCL切換為高電平,然后將SDA切換為高電平,從而發(fā)送停止條件。


單個(gè)主器件和多個(gè)節點(diǎn)


I2C使用尋址,所以單個(gè)主器件可以控制多個(gè)節點(diǎn)。使用7位地址可提供128 (27)個(gè)唯一地址。使用10位地址很罕見(jiàn),但可提供1024 (210)個(gè)唯一地址。要將多個(gè)節點(diǎn)連接到單個(gè)主器件,請使用4.7 kΩ上拉電阻連接這些節點(diǎn),并將SDA和SCL線(xiàn)連接到VCC。


多個(gè)主器件和多個(gè)節點(diǎn)


多個(gè)主器件可以連接到單個(gè)節點(diǎn)或多個(gè)節點(diǎn)。如果同一系統中有多個(gè)主器件,那么當兩個(gè)主器件爭著(zhù)在同一時(shí)間通過(guò)SDA線(xiàn)發(fā)送或接收數據時(shí),就會(huì )出現問(wèn)題。


為了解決這個(gè)問(wèn)題,每個(gè)主器件在傳輸消息之前,需要檢測SDA線(xiàn)是低電平還是高電平。


如果SDA線(xiàn)為低電平,則說(shuō)明總線(xiàn)由另一個(gè)主器件控制,該主器件應等待。如果SDA線(xiàn)為高電平,則它可以安全傳輸消息。要將多個(gè)主器件連接到多個(gè)節點(diǎn),請按照圖13所示,使用4.7 kΩ上拉電阻將SDA和SCL線(xiàn)連接到VCC。


16.png

圖 13. 連接多個(gè)節點(diǎn)的多個(gè)主器件


仲裁


若干I2C多主器件可以連接到同一I2C總線(xiàn)并同時(shí)運行。通過(guò)不斷監視SDA和SCL有無(wú)起始和停止條件,它們可以確定總線(xiàn)是否空閑。如果總線(xiàn)正忙,主器件將延遲掛起的I2C傳輸,直至停止條件指示總線(xiàn)再次空閑。


但是,可能發(fā)生兩個(gè)主器件同時(shí)開(kāi)始傳輸的情況。在傳輸過(guò)程中,主器件不斷監視SDA和SCL。如果其中一個(gè)檢測到SDA為低電平,而它應該為高電平,則該主器件將認為另一主器件處于活動(dòng)狀態(tài),因而立即停止傳輸。此過(guò)程稱(chēng)為仲裁。兩個(gè)主器件都會(huì )生成起始位并繼續各自的傳輸。


如果主器件恰好選擇相同的邏輯電平,則什么也不會(huì )發(fā)生。


一旦主器件嘗試施加不同的邏輯電平,則將信號拉低的主器件將被宣布為獲勝者;失敗者將檢測到邏輯不匹配,因而放棄傳輸。


請花點(diǎn)時(shí)間理解一下這種安排的簡(jiǎn)單性和有效性:


●    獲勝者繼續傳輸而不中斷——沒(méi)有數據損壞,沒(méi)有驅動(dòng)器爭用,不需要重新啟動(dòng)事務(wù)。

●    理論上,失敗者可以在仲裁過(guò)程中監視節點(diǎn)地址,如果恰好是被尋址的節點(diǎn),它可以做出適當的響應。

●    如果相互競爭的主器件均請求同一節點(diǎn)的數據,則仲裁過(guò)程不會(huì )不必要地中斷任一事務(wù)——不會(huì )檢測到不匹配,節點(diǎn)會(huì )將其數據輸出到總線(xiàn),多個(gè)主器件可以接收到數據。


時(shí)鐘延展


也稱(chēng)為時(shí)鐘同步。


注意:I2C規范沒(méi)有為時(shí)鐘延展規定任何超時(shí)條件——也就是說(shuō),任何器件都可以根據需要保持SCL。


在I2C通信協(xié)議中,時(shí)鐘速度和信號始終由主器件產(chǎn)生。I2C主器件產(chǎn)生的信號提供主器件和節點(diǎn)連接之間的同步。


在某些情況下,節點(diǎn)或子節點(diǎn)不是以全狀態(tài)工作,在接收主器件生成的時(shí)鐘之前,需要減慢速度。這是通過(guò)一種稱(chēng)為"時(shí)鐘延展"的機制來(lái)實(shí)現的。


在時(shí)鐘延展期間,為了降低總線(xiàn)速度,允許節點(diǎn)壓低時(shí)鐘。而在主器件方面,在其變?yōu)楦唠娖綘顟B(tài)后,必須回讀時(shí)鐘信號。然后,它必須等待,直至線(xiàn)路達到高電平狀態(tài)。


帶寬


雖然時(shí)鐘延展是一種常見(jiàn)做法,但它對帶寬有影響。使用時(shí)鐘延展時(shí),共享總線(xiàn)的總帶寬可能會(huì )顯著(zhù)降低。即使使用這種技術(shù),總線(xiàn)性能仍然必須可靠且快速。有必要考慮使用時(shí)鐘延展的估計影響,尤其是在多個(gè)器件共享I2C總線(xiàn)的情況下。


1638151728722839.jpg

圖 14. 微控制器數據手冊


通過(guò)時(shí)鐘延展,I2C節點(diǎn)器件可以強制主器件進(jìn)入等待狀態(tài)。當節點(diǎn)器件需要更多時(shí)間來(lái)管理數據時(shí),例如存儲接收到的數據或準備發(fā)送另一字節的數據時(shí),它可能會(huì )執行時(shí)鐘延展。這通常發(fā)生在節點(diǎn)器件接收并確認收到一個(gè)字節的數據之后。


哪些I2C節點(diǎn)器件需要時(shí)鐘延展?


是否需要時(shí)鐘延展取決于節點(diǎn)器件的功能。這里有兩個(gè)例子:


●    處理器件(如微處理器或微控制器)可能需要額外的時(shí)間來(lái)處理中斷,接收和管理數據,以及執行適當的功能。

●    較簡(jiǎn)單的器件(如EEPROM)不在內部處理數據,因此不需要時(shí)鐘延展來(lái)執行任何功能。


I2C 數據手冊示例概述


不同公司和制造商采用不同方法來(lái)創(chuàng )建數據手冊。圖13顯示了一個(gè)簡(jiǎn)單的數據手冊示例和基本I2C細節,包括寄存器和電子規格。


1638151711752941.jpg

圖15. 微控制器存儲器映射


表4顯示了最常用的I2C寄存器。名稱(chēng)和描述可能因數據手冊而異,但功能和用法相同。


表4. I2C寄存器描述

1638151694979510.png


I2C的創(chuàng )建可能因使用情況而異。表5顯示了基本I2C驅動(dòng)程序API要求的示例。


表5. I2C驅動(dòng)開(kāi)發(fā)

1638151680436810.png


SMBus


眾所周知,SMBus可用于需要對參數進(jìn)行關(guān)鍵監控的應用。它最常見(jiàn)的應用是計算機主板和嵌入式系統。對于溫度、電源電壓、風(fēng)扇監控和?或控制集成芯片,它有額外的監控規范。


SMBus是一種2線(xiàn)總線(xiàn),類(lèi)似于飛利浦公司于1980年代開(kāi)發(fā)的I2C總線(xiàn)。兩個(gè)主要信號是時(shí)鐘(SMBCLK)和數據(SMBDAT)。I2C Primer和SMBus相互兼容,但存在明顯差異,例如:


●    SMBus邏輯電平閾值是固定的,與器件的電源電壓不成比例。因此,具有不同電源電壓的器件可以在同一Primer上運行。例如,一個(gè)SMBus可能具有多個(gè)由1.8 V、3.3 V和5 V電源供電的器件。

●    它們都以最高100 kHz的相同速度運行,但I2C Primer有400 kHz和2 MHz兩個(gè)版本。

●    SMBus規定了最低時(shí)鐘速度,并限制了時(shí)鐘在一個(gè)事務(wù)中可以延展的量。違反超時(shí)限制會(huì )導致所有SMBus器件復位其I?O邏輯以允許總線(xiàn)重啟。這種設計增強了總線(xiàn)的魯棒性。

●    二者的超時(shí)也不同。I2C Primer沒(méi)有超時(shí),而SMBus有超時(shí)——對于10 kHz最低時(shí)鐘速度,可以考慮35 ms的超時(shí)。

●    分組差錯校驗(PEC)最初是為SMBus定義的。在每個(gè)事務(wù)的末尾添加一個(gè)分組錯誤碼字節。

●    其余的一些差異涉及傳輸類(lèi)型、警報線(xiàn)、暫停線(xiàn)、關(guān)斷或上電。


SMBus器件每次收到其自己的地址時(shí),無(wú)論在做什么,它都必須應答(ACK),這是一個(gè)明確要求,目的是確保主器件可以準確地判斷總線(xiàn)上哪些器件處于活動(dòng)狀態(tài)。


所有SMBus事務(wù)都通過(guò)指定的SMBus協(xié)議之一執行。


SMBus還有一個(gè)可選信號SMBALERT#,節點(diǎn)器件可以使用該信號快速通知主器件或系統主機,它有主器件需要的信息,例如報告故障情況。


1638151662377965.jpg

圖16. SMBus拓撲結構


SMBus上拉電路


22.png

圖17. SMBus上拉電路


SMBus地址


SMBus地址有7個(gè)二進(jìn)制位,通常表示為前4位、后3位以及最后一個(gè)字母b,例如0001 110b。這些地址占據總線(xiàn)上一個(gè)8位字段的高7位。然而,該字段的最低位另有含義,不屬于SMBus地址的范圍。


1638151636452174.jpg

圖18. 節點(diǎn)地址


7位目標地址從主器件發(fā)送到總線(xiàn)上的一個(gè)或多個(gè)器件(例如通過(guò)廣播地址)。


請注意,起始條件和停止條件是轉換,而不是位,在符號上方未顯示位計數。在事務(wù)圖中顯示時(shí),重復起始也是一個(gè)轉換,而不是一位,在符號上方也不顯示位計數。


1638151614327939.jpg

圖19. SMBus消息


SMBus時(shí)序測量


表6. SMBus參數

1638151597230401.png


PMBus:重新定義電源管理


除了SMBus之外,還有一個(gè)變體PMBus,它是一種開(kāi)放標準電源管理協(xié)議。這種靈活且高度通用的標準允許基于模擬和數字技術(shù)的器件之間進(jìn)行通信,并提供真正的互操作性,由此將能降低電源系統設計的復雜性并縮短產(chǎn)品上市時(shí)間。


PMBus用于帶有電源控制和管理器件的電源的數字管理。它具有支持電源管理要求的命令和結構。這意味著(zhù)I2C Primer和PMBus在電氣要求和命令語(yǔ)義上是兼容和可互操作的。


電源管理的基本參數之一是過(guò)壓電平監控,PMBus提供了設置和讀取該值的命令。PMBus可以附加在I2C Primer和SMBus的已有特性上,充當現有標準(尤其是SMBus)之上的協(xié)議層。


I2C 規范僅描述了2線(xiàn)總線(xiàn)的物理層、時(shí)序和流控制。I2C規范沒(méi)有(像SMBus協(xié)議那樣)描述消息的格式,也沒(méi)有描述消息的內容。


PMBus規范是一個(gè)完整的電源管理協(xié)議。它說(shuō)明了如何將比特和字節從一個(gè)器件傳送到另一個(gè)器件(即傳輸)。它還描述了一種命令語(yǔ)言,賦予這些比特和字節以意義。


尋址


對于冗余系統,一旦電源安裝到系統中,最多有三個(gè)信號來(lái)設置電源的地址位置:地址2、地址1和地址0。對于非冗余系統,電源器件地址位置應為B0h。


硬件


針對基于I2C VDD的電源和驅動(dòng)(對于VDD = 3.3 V),電源中的器件應 與SMBus 2.0高功率規范兼容。該總線(xiàn)應以3.3 V運行。


電源


電源內部的電路應從備用輸出獲得電源。對于冗余電源,器件應從"邏輯或"器件的系統側供電。只要系統中的電源或并聯(lián)冗余電源接通交流電源,PMBus器件就應處于開(kāi)啟狀態(tài)。


上拉電阻


電源內部的SCL或SDA線(xiàn)上只能使用弱上拉電阻。主要上拉電阻由系統提供,可以連接到3.3 V或5 V。對于系統設計,主要上拉電阻應位于電源外部,并從備用電源軌獲取電源。


數據速度


電源中的PMBus器件應以100 kbps SMBus全速運行,并盡可能避免使用時(shí)鐘延展,因為它會(huì )減慢總線(xiàn)速度。


總結


表8概述并總結了I2C Primer、SMBus(高功率和低功率)、PMBus的信號、時(shí)序和電氣規格。


I2C Primer、SMBus和PMBus有何關(guān)系?


SMBus最初開(kāi)發(fā)用于協(xié)助電池管理系統,使用I2C硬件,但增加了第二級軟件,最終允許器件熱插拔,而無(wú)需重新啟動(dòng)系統。PMBus擴展了SMBus,定義了一組專(zhuān)門(mén)用于管理功率轉換器的器件命令,暴露了器件的測量電壓、電流、溫度等屬性。一般而言,I2C Primer、SMBus和PMBus器件可以共享總線(xiàn)而不會(huì )發(fā)生什么大問(wèn)題。


I2C、SMB、PMB的優(yōu)勢


●    僅使用兩條線(xiàn)

●    具有ACK?NACK位

●    廣為人知的協(xié)議

●    支持多個(gè)主器件和多個(gè)節點(diǎn)

●    硬件不如UART復雜

●    廣泛使用的方法


缺點(diǎn)


●    數據傳輸速率比SPI慢

●    數據幀的大小限制為8位

●    實(shí)現所需的硬件比SPI復雜


1638151573959872.png

圖20. SMBus時(shí)序測量


表7. PMBus尋址

1638151556926709.png


用例


●    傳感器讀取

●    傳感器寫(xiě)入

●    EEPROM、溫度傳感器、觸摸屏、接近傳感器

●    傳輸和控制用戶(hù)指引的操作

●    與多個(gè)微控制器通信

●    消費類(lèi)電子設備

●    系統管理

●    電源管理

●    調試


表8. I2C Primer、SMBus和PMBus規格總結

1638151536428694.png

1638151522160477.png


參考電路


“I2C通信的優(yōu)勢和局限” 。Total Phase,2016年8月。


Afzal, Sal。 “I2C Primer:什么是I2C?(第一部分)” 。ADI公司。


Afzal, Sal。 “I2C時(shí)序:定義和規范指南(第2部分)” 。ADI公司。


Campbell, Scott。 “I2C通信協(xié)議基礎” 。Circuit Basics。


“I2C快速指南“。ADI公司。


“I2C是什么?” I2C 總線(xiàn)。



免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。


推薦閱讀:


為應用選擇合適的射頻放大器指南

ADALM2000實(shí)驗:放大器輸出級

通過(guò)之前的模塊構建運算放大器

ADALM2000實(shí)驗:從三角波生成正弦波

降額曲線(xiàn)和最大電流(下)

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>