作者:Mary Grace Legaspi and Eric Peňa
I2C或內(nèi)部集成電路是建立設(shè)備之間通信的常用串行通信協(xié)議,特別是對于兩個或多個不同的電路。I2C引物是最常用的 I2C. 本文將提供 I 的基本功能和標(biāo)準(zhǔn)2C 入門,主要用于解決通信實現(xiàn)過程中的正確用法。從我的基本原理2C,我們將介紹其變體子集系統(tǒng)管理總線 (SMBus) 和電源管理總線 (PMBus) 的可用性以及它們的差異。這三者中的每一個都有專門的功能,旨在滿足不同的客戶需求。
為什么它很重要?
I2C語言為設(shè)計人員在系統(tǒng)中的眾多節(jié)點之間建立簡單、雙向、靈活的通信提供了好處。I2C語言通過僅使用兩條雙向線來發(fā)送和接收信息來降低復(fù)雜性。它還允許設(shè)計人員配置多個主節(jié)點系統(tǒng)IC之間的通信。I2C語言還有利于開發(fā)人員管理系統(tǒng)和電源,這使他們在最佳時間線內(nèi)創(chuàng)建高質(zhì)量產(chǎn)品的優(yōu)勢。
“溝通對那些從事溝通的人有用?!?/p>
——約翰·鮑威爾
通信協(xié)議在組織設(shè)備之間的通信方面起著重要作用。它根據(jù)系統(tǒng)要求以不同的方式設(shè)計,這些協(xié)議具有特定的、商定的規(guī)則來實現(xiàn)成功的通信。
你可能用過I2C如果您曾經(jīng)構(gòu)建過帶有 LED 顯示屏、傳感器甚至加速度計模塊的系統(tǒng),僅舉幾例。I2C支持多個節(jié)點連接到單個主設(shè)備,多個主設(shè)備連接到多個節(jié)點的功能。如果您希望最大限度地讓一個微控制器將數(shù)據(jù)記錄到單個存儲卡或?qū)⑽谋撅@示到單個 LCD,則此功能非常有用。
除了最常用的I2C Primer,我還有兩個額外的變體2C,專注于系統(tǒng)和電源應(yīng)用的用法。這些稱為系統(tǒng)管理總線 (SMBus) 和電源管理總線 (PMBus)。
根據(jù)定義,內(nèi)部集成電路(I2C)(也稱為 Inter IC)是一種硬件通信協(xié)議,它使用與多主、多節(jié)點和串行通信總線的同步通信。同步通信意味著交換數(shù)據(jù)的兩個(或多個)設(shè)備共享一條公共時鐘線。I2C語言廣泛用于將低速外設(shè) IC 連接到處理器和微控制器。I2C總線由飛利浦設(shè)計,允許駐留在同一電路板上的組件之間輕松通信。
我2C 引物
通過使用串行數(shù)據(jù) (SDA) 線、串行時鐘 (SCL) 線和用于承載所有通信的公共接地,可以最大限度地減少連接。
圖1.集成電路直接相互通信。
每根 I 中有兩根電線2C 設(shè)備:
SDA是主設(shè)備和節(jié)點發(fā)送和接收數(shù)據(jù)的線路。
SCL 是傳輸時鐘信號的線路。SCL 始終由 I 生成2C 主。該規(guī)范要求時鐘信號的低相位和高相位的最小周期。
I2C總線僅使用兩條雙向線路:每個器件的 SDA 和 SCL,用于簡單的 IC 間通信。
圖2.I2C 上拉電阻連接。
最重要的硬件部件是上拉電阻,由SDA和SCL線路使用。I2C兼容器件通過集電極開路或漏極開路引腳連接到總線,從而將線路拉低。當(dāng)沒有數(shù)據(jù)傳輸時,I2C總線線路在高電平狀態(tài)下閑置;線條被動拉高。通過切換線路、拉低和釋放高電平來發(fā)生傳輸。位在下降的時鐘邊沿上計時。
漏極開路輸出需要一個上拉電阻(圖2中的Rp)才能正確輸出高電平。上拉電阻連接在輸出引腳和輸出電壓(VDD在圖 2) 中,這是高狀態(tài)所需的。
四千七百歐姆(4700 Ω)是上拉電阻最常用的值,典型值為V抄送和 VDD(5 V)。
作為參考,屏蔽 2 AWG 雙絞線電纜的電容范圍為 100 pF/m 至 240 pF/m。因此,I 的最大總線長度2C 鏈路在 100 kBaud 時約為 1 米,在 10 kBaud 時約為 10 米。非屏蔽電纜通常具有小得多的電容,但只能在其他屏蔽外殼內(nèi)使用。
表1總結(jié)了I2C.
特征 | 規(guī)格 |
電線 | 2 |
最大速度 | 標(biāo)準(zhǔn)模式 = 100 kbps 快速模式 = 400 kbps 高速模式 = 3.4 Mbps 超快模式 = 5 Mbps |
同步還是異步? | 同步 |
串行還是并行? | 串行 |
最大電源數(shù)量 | 無限 |
最大節(jié)點數(shù) | 1008 |
理論上,最大節(jié)點數(shù)為 27或 210用于尋址模式;但是,有 16 個地址是為特殊目的保留的。
I2C是同步的,因此位的輸出通過主節(jié)點和節(jié)點之間共享的時鐘信號與位采樣同步。時鐘信號始終由主設(shè)備控制。
保留 I2C 節(jié)點地址
有 16 個保留 I2C 地址。這些地址對應(yīng)于兩種模式之一:0000 XXX 或 1111 XXX。表 2 顯示 I2C地址保留用于特殊用途。
我2C 節(jié)點地址 | R/W | 位說明 |
0000 000 | 0 | 一般呼叫地址 |
0000 000 | 1 | 起始字節(jié) |
0000 001 | X | CBUS地址 |
0000 010 | X | 保留用于不同的總線格式 |
0000 011 | X | 保留用于將來的目的 |
0000 1XX | X | 高速模式主碼 |
1111 1XX | X | 保留用于將來的目的 |
1111 0XX | X | 10 位節(jié)點地址 |
我該怎么做2C 工作?
I2C 數(shù)據(jù)在消息中傳輸,消息被分解為數(shù)據(jù)幀。讀寫協(xié)議包含具有節(jié)點二進制地址的地址幀和另一個數(shù)據(jù)幀,其中包含正在傳輸?shù)臄?shù)據(jù)、開始和停止條件、重復(fù)開始位、讀/寫位以及每個數(shù)據(jù)幀之間的確認(rèn)/不確認(rèn)位。
時序規(guī)格表
I2C時序表也很重要,因為它允許工程師設(shè)計與總線要求兼容的IC。每個數(shù)據(jù)速率都有自己的時序規(guī)范,主節(jié)點和節(jié)點必須遵守該規(guī)范才能正確傳輸數(shù)據(jù)。
表3顯示了時序規(guī)格表上可用的符號和參數(shù)。
象征 | 參數(shù) | 單位 |
f標(biāo)準(zhǔn)及校正實驗所 | 標(biāo)準(zhǔn)與校正實驗所時鐘頻率 | 千 赫 |
t高清(斯塔) | 保持時間(重復(fù))啟動條件 | 微秒 |
t低 | 標(biāo)準(zhǔn)及校正實驗所引腳的低周期 | 微秒 |
t高 | 高周期 SCL 引腳 | 微秒 |
t蘇(斯塔) | 重復(fù)啟動條件的設(shè)置時間 | 微秒 |
t高清(達特) | 數(shù)據(jù)保持時間 | 微秒 |
t蘇(嘎嘎) | 數(shù)據(jù)設(shè)置時間 | 納 |
tr | SDA信號的上升時間 | 納 |
tf | SDA 信號的下降時間 | 納 |
t蘇(中) | 停止條件的設(shè)置時間 | 微秒 |
圖3.一個I2C消息。
I2C 傳輸子協(xié)議
通過總線傳輸是讀取或?qū)懭氩僮?。讀寫協(xié)議建立在一系列子協(xié)議之上,例如開始和停止條件、重復(fù)起始位、地址字節(jié)、數(shù)據(jù)傳輸位和確認(rèn)/不確認(rèn)位。
啟動條件
顧名思義,啟動條件總是發(fā)生在傳輸開始時,并由主設(shè)備啟動。這樣做是為了喚醒總線上的空閑節(jié)點設(shè)備。在 SCL 線路從高電平切換到低電平之前,SDA 線從高電壓電平切換到低電壓電平。參見圖 4。
重復(fù)啟動條件
在不發(fā)出停止條件的情況下,可以在傳輸過程中重復(fù)啟動條件。這是一種特殊情況,稱為重復(fù)啟動,用于改變數(shù)據(jù)傳輸方向、重復(fù)傳輸嘗試、同步多個 IC,甚至控制串行存儲器。參見圖 5。
地址框
地址幀包含 7 位或 10 位序列,具體取決于可用性(請參閱數(shù)據(jù)手冊)。參見圖 6。
I2C沒有像 SPI 那樣的節(jié)點選擇行,因此它需要另一種方式讓節(jié)點知道數(shù)據(jù)正在發(fā)送到它,而不是另一個節(jié)點。它通過尋址來實現(xiàn)這一點。地址幀始終是新消息中起始位之后的第一幀。
main 將要與之通信的節(jié)點的地址發(fā)送到與其連接的每個節(jié)點。然后,每個節(jié)點將從主節(jié)點發(fā)送的地址與其自己的地址進行比較。如果地址匹配,它將一個低壓ACK位發(fā)送回主電源。如果地址不匹配,節(jié)點將不執(zhí)行任何操作,并且 SDA 線路保持高電平。
讀/寫位
地址幀末尾包含一個位,用于通知節(jié)點主節(jié)點是要向其寫入數(shù)據(jù)還是從中接收數(shù)據(jù)。如果主設(shè)備要向節(jié)點發(fā)送數(shù)據(jù),則讀/寫位處于低電壓電平。如果主節(jié)點從節(jié)點請求數(shù)據(jù),則位處于高壓電平。參見圖 7。
ACK/NACK 位
消息中的每個幀后跟一個確認(rèn)/不確認(rèn)位。如果成功接收到地址幀或數(shù)據(jù)幀,則接收設(shè)備將向發(fā)送方返回ACK位。
圖例:對于下圖,白框表示節(jié)點,而藍色框表示主節(jié)點。參見圖 8。
數(shù)據(jù)框
主節(jié)點檢測到來自節(jié)點的ACK位后,第一個數(shù)據(jù)幀就可以發(fā)送了。數(shù)據(jù)幀始終為 8 位長,并以最高有效位優(yōu)先發(fā)送。每個數(shù)據(jù)幀后面緊跟一個ACK/NACK位,以驗證該幀是否已成功接收。在發(fā)送下一個數(shù)據(jù)幀之前,主節(jié)點或節(jié)點(取決于發(fā)送數(shù)據(jù)的人)必須接收 ACK 位。參見圖 9。
停止條件
發(fā)送完所有數(shù)據(jù)幀后,主節(jié)點可以向節(jié)點發(fā)送停止條件以停止傳輸。停止條件是在SCL線路上從低到高轉(zhuǎn)換后,SDA線路上的電壓從低到高轉(zhuǎn)換,而SCL線路保持高電平。
在 SCL 線路從低電平切換到高電平后,SDA 線從低電壓電平切換到高壓電平。參見圖 10。
I 的步驟2C 傳輸:寫入
舉個例子 I2C傳輸寫入位置的單個位置,見圖11。
步驟 1
主設(shè)備通過將SDA線從高壓電平切換到低電壓電平,然后再將SCL線從高電平切換到低電平,將啟動條件發(fā)送到每個連接的節(jié)點。
步驟 2
主節(jié)點向每個節(jié)點發(fā)送它想要與之通信的節(jié)點的 7 位或 10 位地址以及寫入位。
例如,0x2D 7 位地址。添加等效于 0 的寫入位,它將0x5A。
步驟 3
每個節(jié)點將從主地址發(fā)送到的地址與其自己的地址進行比較。如果地址匹配,節(jié)點通過將 SDA 線拉低一位來返回 ACK 位。如果來自主節(jié)點的地址與節(jié)點自己的地址不匹配,則節(jié)點將 SDA 線保留為高電平。
通過在 SCL 的第九個脈沖期間將 SDA 線降低到低電平,對于 NACK,將 SDA 線浮動到高電平,可以實現(xiàn) ACK。
步驟 4
主發(fā)送或接收數(shù)據(jù)幀。
步驟 5
每個數(shù)據(jù)幀傳輸完畢后,接收設(shè)備向發(fā)送方返回另一個ACK位,以確認(rèn)成功接收該幀。
步驟 6
為了停止數(shù)據(jù)傳輸,主設(shè)備通過在將SDA切換為高電平之前將SCL切換為高電平來向節(jié)點發(fā)送停止條件。
I 的步驟2C 數(shù)據(jù)傳輸:讀取
步驟 1
主設(shè)備通過將SDA線從高壓電平切換到低電壓電平,然后再將SCL線從高電平切換到低電平,將啟動條件發(fā)送到每個連接的節(jié)點。
步驟 2
主節(jié)點向每個節(jié)點發(fā)送它想要與之通信的節(jié)點的 7 位或 10 位地址以及寫入位。
例如,0x2D 7 位地址。添加等效于 0 的寫入位,它將0x5A。
步驟 3
每個節(jié)點將從主地址發(fā)送到的地址與其自己的地址進行比較。如果地址匹配,節(jié)點通過將 SDA 線拉低一位來返回 ACK 位。如果來自主節(jié)點的地址與節(jié)點自己的地址不匹配,則節(jié)點將 SDA 線保留為高電平。
步驟 4
在初始啟動、尋址和確認(rèn)之后,由于主設(shè)備已經(jīng)知道其節(jié)點和要指向的地址,因此某些設(shè)備具有重復(fù)的啟動條件來清理事務(wù)。
注意:僅供閱讀之用!
步驟 5
主節(jié)點向每個節(jié)點發(fā)送它想要與之通信的節(jié)點的 7 位或 10 位地址以及讀取位。
例如,0x2D 7 位地址。添加等于 1 的讀取位,它將0x5B。
步驟 6
每個節(jié)點將從主地址發(fā)送到的地址與其自己的地址進行比較。如果地址匹配,節(jié)點通過將 SDA 線拉低一位來返回 ACK 位。如果來自主節(jié)點的地址與節(jié)點自己的地址不匹配,則節(jié)點將 SDA 線保留為高電平。
步驟 7
在ACK位之后,主節(jié)點接收來自節(jié)點的數(shù)據(jù)幀。
步驟 8
傳輸完每個數(shù)據(jù)幀后,主器件向發(fā)送方返回另一個 ACK 位以確認(rèn)成功接收幀,或者如果讀取請求已完成,則主器件返回 NACK。
步驟 9
為了停止數(shù)據(jù)傳輸,主設(shè)備通過在將SDA切換為高電平之前將SCL切換為高電平來向節(jié)點發(fā)送停止條件。
具有多個節(jié)點的單個主節(jié)點
因為I2C使用尋址,可以從單個主節(jié)點控制多個節(jié)點。對于 7 位地址,128 (27) 唯一地址可用。使用 10 位地址并不常見,但提供 1024 (210) 唯一地址。要將多個節(jié)點連接到單個主電源,請使用 4.7 kΩ 上拉電阻將它們連接到 V抄送.
具有多個節(jié)點的多個電源
多個主設(shè)備可以連接到單個節(jié)點或多個節(jié)點。當(dāng)兩個主設(shè)備嘗試通過SDA線路同時發(fā)送或接收數(shù)據(jù)時,同一系統(tǒng)中多個主設(shè)備的問題就出現(xiàn)了。
為了解決這個問題,每個主線都需要在傳輸消息之前檢測SDA線路是低還是高。
如果SDA線較低,則意味著另一條主線控制了總線,主線應(yīng)等待發(fā)送消息。如果 SDA 線路很高,則傳輸消息是安全的。要將多個電源連接到多個節(jié)點,請使用圖13所示的圖表,使用4.7 kΩ上拉電阻將SDA和SCL線路連接到V抄送.
圖 13.連接多個節(jié)點的多個電源。
仲裁
幾個I2C多主設(shè)備可連接同一I2C 總線并發(fā)運行。通過持續(xù)監(jiān)控SDA和SCL的啟動和停止條件,他們可以確定總線當(dāng)前是否處于空閑狀態(tài)。如果總線繁忙,則主設(shè)備延遲等待I2C 轉(zhuǎn)換,直到停止條件指示公共汽車再次空閑。
但是,可能會發(fā)生兩個主要設(shè)備同時開始傳輸?shù)那闆r。在傳輸過程中,電源不斷監(jiān)控SDA和SCL。如果其中一個檢測到SDA在應(yīng)該高的時候很低,它會假設(shè)另一個主干處于活動狀態(tài)并立即停止其傳輸。此過程稱為仲裁。兩個電源都生成一個起始位并繼續(xù)傳輸。
如果電源碰巧選擇了相同的邏輯電平,則不會發(fā)生任何事情。
一旦主電源試圖施加不同的邏輯電平,主電源就會宣布信號低電平,從而宣布獲勝;失敗者檢測到邏輯不匹配并放棄其傳輸。
花點時間欣賞一下這種安排的簡單性和有效性:
獲勝者繼續(xù)傳輸而不會中斷 - 沒有損壞的數(shù)據(jù),沒有驅(qū)動程序爭用,不需要重新啟動事務(wù)。
從理論上講,失敗者可以在仲裁過程中監(jiān)控節(jié)點地址,如果它恰好是尋址節(jié)點,則做出適當(dāng)?shù)捻憫?yīng)。
如果競爭主線都從同一節(jié)點請求數(shù)據(jù),仲裁過程不會不必要地中斷任一事務(wù) — 不會檢測到不匹配,并且節(jié)點會將其數(shù)據(jù)輸出到總線,以便多個主線可以接收它。
時鐘拉伸
這也稱為時鐘同步。
注:I2C規(guī)范未指定時鐘拉伸的任何超時條件,也就是說,任何設(shè)備都可以根據(jù)需要按住 SCL。
在I2C通信協(xié)議中,時鐘速度和信號始終由主器件產(chǎn)生。由 I 產(chǎn)生的信號2C 主設(shè)備提供主節(jié)點連接之間的同步。
在某些情況下,節(jié)點或子節(jié)點未完全工作,需要在從主節(jié)點接收生成的時鐘之前放慢速度。這是通過一種稱為時鐘拉伸的機制實現(xiàn)的。
在時鐘拉伸期間,為了降低總線速度,允許節(jié)點按住時鐘。在主側(cè),有必要在其高電平狀態(tài)之后回讀時鐘信號。然后它必須等到線達到高狀態(tài)。
帶寬
雖然時鐘延長是一種常見的做法,但對帶寬方面有影響。在使用時鐘延伸時,共享總線之間的總帶寬可能會顯著降低。即使使用這種技術(shù),總線性能也必須可靠且快速。有必要涵蓋使用時鐘拉伸的估計效果,尤其是在 I2由多個設(shè)備共享的C總線。
時鐘拉伸允許 I2C 節(jié)點設(shè)備強制主設(shè)備進入等待狀態(tài)。節(jié)點設(shè)備在需要更多時間來管理數(shù)據(jù)時(例如,存儲接收的數(shù)據(jù)或準(zhǔn)備傳輸另一個數(shù)據(jù)字節(jié))時,可能會執(zhí)行時鐘延伸。這通常發(fā)生在節(jié)點設(shè)備接收并確認(rèn)一個字節(jié)的數(shù)據(jù)之后。
其中I2C節(jié)點設(shè)備需要時鐘延長?
是否需要時鐘拉伸取決于節(jié)點設(shè)備的功能。下面是兩個示例:
處理設(shè)備(如微處理器或微控制器)可能需要額外的時間來處理中斷、接收和管理數(shù)據(jù)以及執(zhí)行適當(dāng)?shù)墓δ堋?/p>
更簡單的設(shè)備(如EEPROM)不在內(nèi)部處理數(shù)據(jù),因此不需要時鐘拉伸來執(zhí)行其任何功能。
I2C數(shù)據(jù)手冊示例概述
根據(jù)不同的公司和制造商,在創(chuàng)建數(shù)據(jù)表方面有不同的方法。首先,圖13顯示了一個示例數(shù)據(jù)手冊和基本數(shù)據(jù)手冊2C 詳細(xì)信息,包括寄存器和電子規(guī)格。
圖 15.微控制器內(nèi)存圖。
表 4 顯示了最常用的 I2C 寄存器。名稱和描述可能因數(shù)據(jù)手冊而異,但功能和用法是通用的。
名字 | 描述 |
I2C_ADDR1 | 主地址字節(jié) 1 |
I2C_ADDR2 | 主地址字節(jié) 2 |
I2C_BYT | 起始字節(jié) |
I2C_ID | 節(jié)點地址設(shè)備 ID |
I2C_MCTL | 主控 |
I2C_MRX | 主接收數(shù)據(jù) |
I2C_SCTL | 節(jié)點控制 |
I2C_SRX | 節(jié)點接收 |
I2C_STAT | 主和節(jié)點先進先出狀態(tài) |
我創(chuàng)造2C 可能因使用情況而異。表 5 顯示了基本 I 的樣本2C 驅(qū)動程序 API 要求。
主要 | 節(jié)點 |
初始化 |
|
Tx 處理器 | Tx 處理器 |
接收處理器 | 接收處理器 |
事件中斷 |
|
錯誤中斷 |
SMBus
眾所周知,SMBus 用于需要關(guān)鍵參數(shù)監(jiān)控的應(yīng)用。它最常用于計算機主板和嵌入式系統(tǒng)應(yīng)用。它具有溫度、電源電壓、風(fēng)扇監(jiān)視器和/或控制集成芯片的附加監(jiān)控規(guī)范。
SMBus 是一條 2 線總線,類似于 I2飛利浦在1980年代開發(fā)的C總線。兩個主要信號是時鐘或SMBCLK和數(shù)據(jù)或SMBDAT。我2C 引物和 SMBus 相互兼容,但存在顯著差異,例如:
SMBus邏輯電平門限是固定的,與器件的電源電壓不成比例。這允許具有不同電源電壓的器件在同一引物上工作。例如,一個 SMBus 可能具有由 1.8 V、3.3 V 和 5 V 供電的設(shè)備。
它們都以高達 100 kHz 的相同速度運行,但 I2C 引物有 400 kHz 和 2 MHz 版本。
SMBus 提供最小時鐘速度,并限制時鐘在一個事務(wù)中可能延長的數(shù)量。違反超時限制會導(dǎo)致所有 SMBus 設(shè)備重置其 I/O 邏輯以允許總線重新啟動。這增強了總線的魯棒性。
兩者的超時也不同。我2C 引物沒有超時,而 SMBus 有超時 — 對于 10 kHz 的最小時鐘速度,請考慮 35 ms。
數(shù)據(jù)包錯誤檢查 (PEC) 最初是為 SMBus 定義的。在每個事務(wù)的末尾添加一個數(shù)據(jù)包錯誤代碼字節(jié)。
剩下的一些差異涉及傳輸類型、警報線、掛起線以及斷電或上電。
SMBus 設(shè)備每次收到時都必須確認(rèn) (ACK) 自己的地址,這是一項明確要求,無論設(shè)備可能正在執(zhí)行其他操作。這確保了主設(shè)備可以準(zhǔn)確地確定總線上哪些設(shè)備處于活動狀態(tài)。
所有 SMBus 事務(wù)都通過指定的 SMBus 協(xié)議之一執(zhí)行。
SMBus 包括一個可選信號 SMBALERT#,節(jié)點設(shè)備可以使用該信號快速通知主主機或系統(tǒng)主機它具有主主機的信息,例如報告故障情況。
圖 16.SMBus 拓?fù)洹?/strong>
SMBus 上拉電路
圖 17.SMBus 上拉電路。
中小企業(yè)地址
SMBus 地址的長度為 7 個二進制位,通常表示為 4 位,后跟 3 位,后跟字母 b,例如 0001 110b。這些地址占據(jù)總線上 8 位字段的高 7 位。但是,此字段的低位具有另一個語義含義,該含義不是 SMBus 地址的一部分。
圖 18.節(jié)點地址。
7位目標(biāo)地址從主設(shè)備發(fā)送到總線上的一個或多個設(shè)備(例如常規(guī)呼叫地址)。
請注意,開始和停止條件是轉(zhuǎn)換,而不是位,并且在符號上方顯示時沒有位計數(shù)數(shù)字。當(dāng)顯示在事務(wù)圖中時,重復(fù)開始也是一個過渡,而不是一個位,并且在符號上方顯示沒有位計數(shù)。
圖 19.SMBus 消息。
SMBus 定時測量
象征 | 參數(shù) | 單位 |
f中小企業(yè) | SMBus工作頻率 | 千 赫 |
t布夫 | 停止和啟動之間的總線空閑時間 | 微秒 |
T高清-STA | (重復(fù))啟動條件后的保持時間 | 微秒 |
T蘇斯塔 | 重復(fù)啟動條件設(shè)置時間 | 微秒 |
t蘇(中) | 停止條件設(shè)置時間 | 微秒 |
t高清(達特) | 數(shù)據(jù)保持時間 | 納 |
t蘇(嘎嘎) | 數(shù)據(jù)設(shè)置時間 | 納 |
t超時 | 檢測時鐘低超時 | 女士 |
t低 | 時鐘低周期 | 微秒 |
t高 | 時鐘高電平周期 | 微秒 |
PMBus:重新定義電源管理
除了SMBus之外,還有一個變體,PMBus,它是一種開放標(biāo)準(zhǔn)的電源管理協(xié)議。這種靈活且高度通用的標(biāo)準(zhǔn)允許基于模擬和數(shù)字技術(shù)的設(shè)備之間進行通信,并提供真正的互操作性,這將降低設(shè)計復(fù)雜性并縮短電源系統(tǒng)設(shè)計人員的上市時間。
PMBus 用于具有電源控制和管理組件的電源的數(shù)字管理。它具有支持電源管理要求的命令和結(jié)構(gòu)。這意味著我2C primer 和 PMBus 在電氣要求和命令語義上兼容且可互操作。
電源管理中的基本參數(shù)之一是監(jiān)控過壓電平,PMBus 提供了用于設(shè)置和讀取它的命令。通過添加到 I 的可用功能2C primer 和 SMBus,PMBus 充當(dāng)現(xiàn)有標(biāo)準(zhǔn)之上的協(xié)議層,尤其是 SMBus。
I2C規(guī)范僅描述了 2 線總線的物理層、時序和流量控制。我2C 規(guī)范不描述消息的格式(如 SMBus 協(xié)議),也不描述消息的內(nèi)容。
PMBus 規(guī)范是一個完整的電源管理協(xié)議。它包括如何將位和字節(jié)從一個設(shè)備獲取到另一個設(shè)備(即傳輸);它還描述了一種命令語言,該語言賦予這些位和字節(jié)以意義。
尋址
對于冗余系統(tǒng),一旦電源安裝在系統(tǒng)中,最多有三個信號來設(shè)置電源的地址位置:地址 2、地址 1 和地址 0。對于非冗余系統(tǒng),電源設(shè)備地址位置應(yīng)為 B0h。
硬件
電源中的設(shè)備應(yīng)符合 SMBus 2.0 高功率規(guī)范2五DD-基于電源和驅(qū)動器(對于 VDD= 3.3 V)。該總線的工作電壓為3.3 V。
電源
電源中的設(shè)備應(yīng)符合 SMBus 2.0 高功率規(guī)范2C 基于 VDD 的電源和驅(qū)動器(對于 VDD= 3.3 V)。該總線的工作電壓為3.3 V。
引體向上
只有弱上拉電阻應(yīng)位于電源內(nèi)部的 SCL 或 SDA 線路上。主上拉電阻由系統(tǒng)提供,可連接到3.3 V或5 V。對于系統(tǒng)設(shè)計,主上拉電阻應(yīng)位于電源外部,并從備用軌獲取電源。
數(shù)據(jù)速度
電源中的 PMBus 設(shè)備應(yīng)以 100 kbps SMBus 全速運行,并盡可能避免使用時鐘拉伸,因為它會減慢總線速度。
總結(jié)
表 8 提供了規(guī)格方面的一般視圖和摘要:信號、定時和電氣2C Primer、SMBus(用于高功率和低功率)和 PMBus。
I2C Primer、SMBus 和 PMBus 相關(guān)?
SMBus 最初是為了促進電池管理系統(tǒng)而開發(fā)的,它使用 I2C硬件,但增加了二級軟件,最終允許設(shè)備熱插拔而無需重新啟動系統(tǒng)。PMBus 通過定義一組專門設(shè)計用于管理電源轉(zhuǎn)換器的設(shè)備命令來擴展 SMBus,公開設(shè)備屬性,例如測量的電壓、電流、溫度等。一般來說,I2C Primer、SMBus 和 PMBus 設(shè)備可以共享總線,不會出現(xiàn)任何重大問題。
I2C、SMB、PMB 優(yōu)勢
僅使用兩根電線
帶交流/不適用鉆頭
眾所周知的協(xié)議
支持多個主設(shè)備和多個節(jié)點
硬件沒有UART那么復(fù)雜
廣泛使用的方法
弊
數(shù)據(jù)傳輸速率比 SPI 慢
數(shù)據(jù)框的大小限制為 8 位
實現(xiàn)比 SPI 更復(fù)雜的硬件
圖 20.SMBus 定時測量。
使用的地址 | 主尋址用于大多數(shù)具有兩個尋址引腳的服務(wù)器電源 | 如果電源上提供了三個尋址引腳,則為其他地址 | ||||||
系統(tǒng)尋址地址2/地址1/地址0 | 0/0/0 | 0/0/1 | 0/1/1 | 0/1/1 | 1/0/0 | 1/0/1 | 1/1/0 | 1/1/1 |
PMBus 設(shè)備讀取地址 | B0h/B1h | B2h/B3h | B4小時/B5小時 | B6小時/B7小時 | B8h/B9h | 砰 | BCh/BDh | 貝/貝赫 |
使用案例
傳感器讀數(shù)
傳感器寫入
EEPROM,溫度傳感器,觸摸屏,接近
傳輸和控制用戶指示的操作
與多個微控制器通信
消費類電子產(chǎn)品
系統(tǒng)管理
電源管理
調(diào)試
規(guī)范 | 我2C 引物 |
SMBus 高功率| 低功耗 |
PMBus | ||
信號 |
數(shù)據(jù)包錯誤檢查 (可選) SMBALERT (可選) 塊大小限制 |
— — — |
— — 32 字節(jié) |
— — 32 字節(jié) |
— — 255 字節(jié) |
定時 |
數(shù)據(jù)速率: 標(biāo)準(zhǔn)模式 快速模式 快速模式增強版 高速 模式 時鐘 速度 總線超時 總線主請求延遲 (最小值) SCL 保持時間(最大值) 數(shù)據(jù)保持時間 (最小值) |
100 kbps 400 kbps 1 Mbps 3.4 Mbps 0 Hz 至 3.4 MHz — — — — |
100 kbps — — — — 10 kHz 至 100 kHz 25 毫秒至 35 毫秒 50 μs — 2 毫秒 300 ns |
100 kbps — — — — 10 kHz 至 100 kHz 25 毫秒至 35 毫秒 50 μs — 2 毫秒 300 ns |
100 kbps 400 kbps — — 10 kHz 至 400 kHz 25 毫秒至 35 毫秒 50 微秒 — 2 毫秒 300 納秒 |
電氣 |
每總線段電容負(fù)載(最大值) 上升時間(最大值) 0.4 V 時的上拉電流(最大值) 每個器件的漏電流(最大值) VIL 輸入邏輯 低閾值(最大值) VIH 輸入邏輯高閾值(最小值) VOL 輸出邏輯 低閾值(最大值) |
400 pF 100 kHz 時為 1 μs,400 kHz 時為 300 ns 3 mA(標(biāo)準(zhǔn)和快速模式) ±10 μA 0.3 VDD或 1.5 V 0.7 V 抄送或 3 V 0.4 V |
400 pF 1 微秒 4毫安 ±10 微安 0.8 V 2.1 V 2.4 V |
— 1 μs 350 μA ±5 μA 0.8 V 2.1 V 0.4 V |
400 pF 100 kHz 時為 1 μs,400 kHz 時為 300 ns 4 毫安 ±10 μA 0.8 V 2.1 V 0.4 V |
-
集成電路
+關(guān)注
關(guān)注
5424文章
12055瀏覽量
368398 -
電源管理
+關(guān)注
關(guān)注
117文章
6433瀏覽量
146103 -
I2C
+關(guān)注
關(guān)注
28文章
1541瀏覽量
127800
發(fā)布評論請先 登錄

i2c通信協(xié)議
I2C總線通信協(xié)議的相關(guān)資料下載
SPI、I2C、UART串行總線協(xié)議
I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)

Linux控制I2C/SMBus設(shè)備

I2C通信協(xié)議及其工作原理
I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus

評論