24小時(shí)聯(lián)系電話(huà):18217114652、13661815404
中文
公司新聞
串行通信協(xié)議第 6 部分 - I2C
串行通信協(xié)議第 6 部分 - I2C
在串行通信協(xié)議系列的下一部分中,我們將研究流行的 I 2 C 協(xié)議。這是在前面的文章中我們正在研究一些不同類(lèi)型的可用串行通信協(xié)議的后續文章。這些為在合理短距離內在設備之間傳輸數據提供了實(shí)用的解決方案。典型應用包括通過(guò)微控制器從產(chǎn)生數據的外圍設備中捕獲大量數據。
本系列涵蓋了一些比較流行的協(xié)議。在本系列的最后,我們將通過(guò)查看每個(gè)協(xié)議的優(yōu)點(diǎn)和缺點(diǎn)來(lái)總結。我們希望您下次想在設計中實(shí)現串行通信總線(xiàn)時(shí)會(huì )發(fā)現本系列很有價(jià)值
I 2 C(發(fā)音為 I-squared-C)代表內部集成電路。簡(jiǎn)而言之,它是一種單端、同步、多主、多從、封裝交換串行通信總線(xiàn)。我們現在將解釋這一口的含義。
由于它是同步的,這意味著(zhù)它有一條時(shí)鐘線(xiàn)。這種類(lèi)型的通信協(xié)議被微控制器廣泛用于短距離傳輸數據或與設備通信。盡管 I 2 C 是由飛利浦半導體(現為 NXP)發(fā)明的,但許多其他制造商生產(chǎn)的 IC 與 I 2 C 通信協(xié)議兼容或使用 I 2 C 通信協(xié)議。SMBus 是一種基本上與 I 2 C兼容的協(xié)議,主要區別在于 SMBus 具有較低的最大頻率、超時(shí)功能和較低的最大電流 - 因此本文中的討論也非常適用于 SMBus。
I 2 C 總線(xiàn)具有指定為主設備和從設備的設備。主設備是產(chǎn)生時(shí)鐘信號并啟動(dòng)與從設備通信的設備。從設備是接收時(shí)鐘信號并在被主設備尋址時(shí)做出響應的設備。I 2 C 總線(xiàn)可以是多從,也可以是多主,即一個(gè)主設備可以有多個(gè)從設備,一個(gè)從設備可以有多個(gè)主設備:
I2C多從多主接線(xiàn)示例
I 2 C 協(xié)議具有三種基本的消息格式類(lèi)型;每條消息都以 START 信號開(kāi)始,然后以 STOP 信號結束。在第一種消息格式中,單個(gè)消息由主機發(fā)送到從機,從機將數據傳輸到從機。在第二種消息格式中,單個(gè)消息由主機發(fā)送到從機,從機將數據從從機傳輸回主機。在最終的組合消息格式中,主設備向一個(gè)或多個(gè)從設備發(fā)送多個(gè)讀或寫(xiě)命令。每個(gè)命令必須包含目標從設備的地址。
I 2 C 總線(xiàn)由兩條傳輸線(xiàn)組成,不包括地線(xiàn)。通常,I 2 C 總線(xiàn)由作為時(shí)鐘信號的 SCL 線(xiàn)和作為數據信號的 SDA 線(xiàn)組成。時(shí)鐘線(xiàn)是單向的,從主機到從機。
這是一種半雙工串行通信,即在任一時(shí)刻只能向一個(gè)方向發(fā)送數據,因此主從不能同時(shí)發(fā)送數據。
帶有上拉電阻的 I2C 接線(xiàn)示例
I 2 C 具有漏極開(kāi)路或集電極開(kāi)路輸出,這意味著(zhù)驅動(dòng)器可以將線(xiàn)路拉低但不能將其拉高??偩€(xiàn)需要外部上拉電阻將每條線(xiàn)路的空閑狀態(tài)設置為高電平,即當沒(méi)有設備將其拉低時(shí):
I2C 主從驅動(dòng)程序簡(jiǎn)化的硬件示例
上拉電阻也決定了總線(xiàn)的通信速度,取決于總線(xiàn)的總電容。較高值的上拉電阻將降低通信速率,而較低的電阻值將提供較高的通信速率。內部驅動(dòng)程序也將顯著(zhù)決定通信速度。更大的(更高的電流能力)驅動(dòng)器將產(chǎn)生更快的上升和下降時(shí)間并增加潛在的通信速率。一個(gè)好的經(jīng)驗法則是首先考慮使用值為 4.7 kΩ 的上拉電阻,然后在必要時(shí)進(jìn)行調整。此外,在不需要更高速度的情況下降低通信速率可能是一種很好的做法,因為它可以大大降低電容效應,并且總線(xiàn)的功耗也會(huì )更低。但是,電阻值必須介于指定的允許限值之間
不同選擇的上拉電阻值的信號示例
還可以使用以下公式計算所需的上拉電阻值:
其中最小電阻值使用以下公式計算:
V CC – 是 I 2 C 高電平(上拉)電壓?jiǎn)?span>
V OL - 是 I 2 C 驅動(dòng)器的有效邏輯低電平
I OL - 是拉低邏輯電平所需的驅動(dòng)器電流(使電容放電)
最大電阻值的計算方法如下:
T r – 是 SCL 和 SDA 線(xiàn)的上升時(shí)間
C b – 是每條總線(xiàn)的電容負載
I 2 C 總線(xiàn)的典型參數如下:
此外,下圖顯示了不同要求如何影響最小和最大上拉電阻限制:
最小和最大的上拉電阻值圖表
我們還必須考慮到 I 2 C 總線(xiàn)可以與多個(gè)電壓電平設備一起使用。例如,您可以通過(guò)將上拉電阻連接到 3.3 V 電源,將公共總線(xiàn)連接到 5 V 和 3.3 V 設備。這將與兩種設備類(lèi)型兼容。但是,在某些情況下,這將不起作用,例如,在同時(shí)使用 5 V 和 1.2 V 設備的情況下。此處,一個(gè)設備使用的最高電壓 1.2 V 會(huì )被另一個(gè)設備讀取為低電壓或未知電壓。在這些情況下,邏輯電平轉換器是使兩種設備類(lèi)型都能使用公共總線(xiàn)的正確解決方案。
下面是一個(gè)示例時(shí)間圖,顯示了 I 2 C 總線(xiàn)上的數據位:
I2C中的數據包示例
在數據傳輸開(kāi)始條件 (S) 下,SDA 被拉低,而 SCL 保持高電平
然后 SCL 被拉低,SDA 設置第一個(gè)數據位電平,同時(shí)保持 SCL 為低。(藍條)
在 SLC 保持高電平時(shí)采樣來(lái)自 SDA 的數據。SDA 不得在 SLC 的上升沿和下降沿之間改變狀態(tài)(綠條)
該過(guò)程以設置的比特率重復
最后一位由時(shí)鐘脈沖設置,在此期間 SDA 被拉低以準備停止位
當 SCL 上升并跟隨 SDA 的上升沿時(shí)出現停止條件 (P)
通常,一臺主I 2 C 通信設備最多可支持1008 個(gè)從設備。然而,這使得硬件設計非常復雜,并且要求 I 2 C 總線(xiàn)以最低速度運行。這是因為很長(cháng)的傳輸線(xiàn)的電容增加,使得信號上升和下降時(shí)間變慢。高速總線(xiàn)的問(wèn)題在于,當電容增加太多時(shí),由于信號的上升和下降時(shí)間增加,位可能會(huì )重疊。
一種解決方案是,如果總線(xiàn)包括太多從設備,可以使用緩沖或多路復用技術(shù)將單個(gè)長(cháng)總線(xiàn)分成更小的段。這將有助于將總線(xiàn)段的電容保持在最大允許值以下,甚至允許使用多路復用器將具有相同地址的多個(gè)設備分開(kāi)。
緩沖用于將每個(gè)段的電容與其他段隔離,并允許在更長(cháng)的電線(xiàn)或跡線(xiàn)上使用單獨的從站和主站。
I2C 總線(xiàn)上的緩沖和復用技術(shù)
在某些情況下,當從設備需要延遲主設備發(fā)送更多數據時(shí),它可能需要將時(shí)鐘強制為低電平。通常,當從設備在將數據發(fā)送到主設備之前需要時(shí)間準備數據時(shí),就會(huì )發(fā)生這種情況。例如,要完成模數轉換或 EEPROM 存儲命令尚未完成寫(xiě)入非易失性存儲器。此操作稱(chēng)為“時(shí)鐘拉伸”。
對于一個(gè)主設備與多個(gè)從設備進(jìn)行通信,需要一種尋址機制。大多數情況下,從設備地址將由被拉低或拉高的設備上的引腳設置。當主設備發(fā)送命令時(shí),所有連接到總線(xiàn)的設備都會(huì )收到該命令。但是,在每個(gè)消息的開(kāi)頭,主設備會(huì )發(fā)送一組尋址位。結果是只有一個(gè)設備會(huì )響應該命令,該設備將是該命令所針對的設備。其他從設備將忽略該命令。
有大量可用的 IC 可以使用 I 2 C 總線(xiàn)。這些組件及其應用的一些示例是:
RTC(實(shí)時(shí)時(shí)鐘)
低速 DAC(數模轉換器)或 ADC(模數轉換器)
顯示數據通道的色彩平衡設置
改變智能數字揚聲器的音量
與外部存儲設備通信,例如 EEPROM
控制 OLED 或 LCD 顯示器
打開(kāi)和關(guān)閉電源