精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:Mary Grace Legaspi an ? 2022-12-12 16:58 ? 次閱讀

作者: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) 線和用于承載所有通信的公共接地,可以最大限度地減少連接。

poYBAGOW7amAGgIQAAAovCU5xQU935.png

圖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 間通信。

poYBAGOW7a-AIssRAAAg7-K-DjU630.png

圖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í)間 微秒

poYBAGOW7baAO6uDAADfa-0tK3o086.png

圖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抄送.

poYBAGOW7iGAezQoAACE-NT-PUg312.png

圖 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ī)格。

pYYBAGOW7ieAFvhyAADOw1p0y74602.png

圖 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)告故障情況。

pYYBAGOW7i6APShfAAAhfFUgawI616.png

圖 16.SMBus 拓?fù)洹?/strong>

SMBus 上拉電路

poYBAGOW7jSAX7vmAAAr3EdyUKo486.png

圖 17.SMBus 上拉電路。

中小企業(yè)地址

SMBus 地址的長(zhǎng)度為 7 個(gè)二進(jìn)制位,通常表示為 4 位,后跟 3 位,后跟字母 b,例如 0001 110b。這些地址占據(jù)總線上 8 位字段的高 7 位。但是,此字段的低位具有另一個(gè)語(yǔ)義含義,該含義不是 SMBus 地址的一部分。

poYBAGOW7WeAVYDJAAAfiXlrwG0077.jpg?imgver=1

圖 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ù)。

pYYBAGOW7WmARLnPAAAwCmV1F1E598.jpg?h=270&hash=B859C2C1295823A6302A7855A09A18DB&imgver=1

圖 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ù)雜的硬件

pYYBAGOW7kCANDTfAAA_iSUm_W8004.png

圖 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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 集成電路
    +關(guān)注

    關(guān)注

    5381

    文章

    11381

    瀏覽量

    360850
  • 電源管理
    +關(guān)注

    關(guān)注

    115

    文章

    6154

    瀏覽量

    144231
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1481

    瀏覽量

    123281
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    3分鐘理解通信協(xié)議I2C總線 #通信協(xié)議

    通信協(xié)議I2CI2C總線總線/接口技術(shù)
    硬聲課堂
    發(fā)布于 :2021年10月18日 10:39:12

    i2c通信協(xié)議

    1.1 i2c通信協(xié)議通信協(xié)議:用來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸。i2c物理總線:SCL(時(shí)鐘線) SDA(數(shù)據(jù)線)i2c
    發(fā)表于 03-06 16:15

    I2C通信協(xié)議硬軟件

    目錄12C通信協(xié)議硬軟件I2CAHT20測(cè)溫濕度參考12C通信協(xié)議I2C
    發(fā)表于 08-23 07:42

    I2C通信協(xié)議的原理是什么

    I2C通信協(xié)議I2C通信原理I2C通信原理:I2C
    發(fā)表于 02-17 07:16

    I2C總線通信協(xié)議的相關(guān)資料下載

    基于I2C總線通信協(xié)議的溫度采集實(shí)驗(yàn)(基于AHT20) I2C總線通信協(xié)議簡(jiǎn)介 AHT20簡(jiǎn)介 一.項(xiàng)目說(shuō)明1)實(shí)戰(zhàn)目標(biāo):2)實(shí)戰(zhàn)元件: 二
    發(fā)表于 02-22 07:37

    SPI、I2C、UART串行總線協(xié)議

    串口通訊通信協(xié)議UART,以及常用外設(shè)通信協(xié)議 SPI、I2C的介紹與他們之間的區(qū)別
    發(fā)表于 11-30 11:28 ?95次下載

    實(shí)驗(yàn)八-I2C通信協(xié)議

    實(shí)驗(yàn)八-I2C通信協(xié)議,感興趣的可以瞧一瞧。
    發(fā)表于 09-22 16:42 ?2次下載

    I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)

    我最近剛做完I2C通信協(xié)議的編寫(xiě)與調(diào)試,下面介紹一下我從一開(kāi)始理解夏老師的程序,修改程序,直到下板調(diào)試整個(gè)的學(xué)習(xí)過(guò)程,希望對(duì)大家學(xué)習(xí) I2C 有一定的幫助。一、 分析源代碼學(xué)習(xí) I2C
    發(fā)表于 04-28 08:00 ?21次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>應(yīng)該如何學(xué)習(xí)

    什么是I2C通信協(xié)議

    在本教程中,我們將學(xué)習(xí)如何在Raspberry Pi Pico中使用I2C引腳并遍歷I2C掃描器代碼。
    的頭像 發(fā)表于 04-26 15:08 ?7730次閱讀
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>?

    MPU6050的I2C通信協(xié)議

    不同硬件有不同的I2C協(xié)議
    發(fā)表于 12-06 12:21 ?3次下載
    MPU6050的<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>

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

    I2C是Philips開(kāi)發(fā)的一種兩線通信協(xié)議,常用于一些對(duì)速度要求不高的小型器件上。SMBus是系統(tǒng)管理總線,基于I2C協(xié)議,大部分情況下二
    的頭像 發(fā)表于 03-23 10:02 ?1442次閱讀
    Linux控制<b class='flag-5'>I2C</b>/<b class='flag-5'>SMBus</b>設(shè)備

    I2C通信協(xié)議及其工作原理

    "也許你聽(tīng)說(shuō)過(guò)I2C,或者你也正在使用I2C,但你有沒(méi)有了解過(guò)什么是I2CI2C是如何工作的?讓我們一起
    的頭像 發(fā)表于 04-19 09:36 ?4808次閱讀

    I2C通信協(xié)議了解I2C PrimerPMBusSMBus

    I2C Primer的基本特性和標(biāo)準(zhǔn),并重點(diǎn)說(shuō)明在通信實(shí)現(xiàn)過(guò)程中如何正確使用該協(xié)議。從I2C的基本原理出發(fā),我們將介紹其變體子集——系統(tǒng)管理
    的頭像 發(fā)表于 06-15 15:29 ?5454次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>:<b class='flag-5'>了解</b><b class='flag-5'>I2C</b> <b class='flag-5'>Primer</b>、 <b class='flag-5'>PMBus</b>和<b class='flag-5'>SMBus</b>

    SPI和I2C通信協(xié)議:應(yīng)用與區(qū)別

    本文深入解析了SPI和I2C這兩種通信協(xié)議的特點(diǎn)、工作原理和應(yīng)用場(chǎng)景。SPI適用于高速數(shù)據(jù)傳輸,常用于存儲(chǔ)器芯片和顯示器驅(qū)動(dòng)等領(lǐng)域;I2C適用于低速控制和傳感器數(shù)據(jù)傳輸,常用于溫度傳感器和ADC
    的頭像 發(fā)表于 04-22 16:45 ?1651次閱讀

    簡(jiǎn)單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開(kāi)發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來(lái),I2C
    的頭像 發(fā)表于 07-25 18:06 ?1300次閱讀