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