https://www.toutiao.com/a6661826931312296461/ 本文介紹了內(nèi)部集成電路(AKA I2C)串行通信協(xié)議的基本特性和突出優(yōu)點(diǎn)。 組件之間的通信:通信協(xié)議 毫無(wú)疑問(wèn),電子系統(tǒng)的共同特征是需要在兩個(gè)或三個(gè)或十個(gè)單獨(dú)的組件之間共享信息。 工程師已經(jīng)開(kāi)發(fā)出許多標(biāo)準(zhǔn)協(xié)議,可以幫助不同的芯片成功通信 - 當(dāng)您在微控制器或數(shù)字信號(hào)處理器的功能列表中“通信”下面對(duì)縮略語(yǔ)時(shí),這一事實(shí)就變得很明顯:UART,USART,SPI,I2 C,CAN。。。。每個(gè)協(xié)議都有其優(yōu)點(diǎn)和缺點(diǎn),重要的是要了解每個(gè)協(xié)議,以便在選擇組件或接口時(shí)做出明智的決定。 本文是關(guān)于I 2 C的,它通常用于位于同一PCB上的各個(gè)集成電路之間的通信。另外兩種通用協(xié)議也適用于這種通用類別:UART(通用異步接收器/發(fā)送器)和SPI(串行外設(shè)接口)。在徹底理解這三個(gè)接口之間的比較之前,您需要了解I 2 C 的基本特征,因此我們將在本文末尾討論該主題。 什么是I2C總線? I 2 C代表內(nèi)部集成電路總線。但毫無(wú)疑問(wèn),I 2 C協(xié)議存在嚴(yán)重的術(shù)語(yǔ)問(wèn)題。最簡(jiǎn)單 - 也可能是最不常見(jiàn)的 - 縮寫(xiě)是IIC。也許這個(gè)縮寫(xiě)被鄙視,因?yàn)閮蓚€(gè)大寫(xiě)我看起來(lái)像兩個(gè)1,或兩個(gè)小寫(xiě)的l,或羅馬數(shù)字II,或并聯(lián)電阻的符號(hào)。。。。無(wú)論如何,縮寫(xiě)I 2 C(稱為“I squared C”)獲得了普及,盡管將正常字母視為一個(gè)受取冪的變量的邏輯可疑。第三種選擇是I 2C(“I two C”),它避免了上標(biāo)格式的不便,并且比“I squared C”更容易發(fā)音。 當(dāng)您注意到SMB或SMBus顯然被用作引用I 2 C總線的另一種方式時(shí),最后一層霧就會(huì)穩(wěn)定下來(lái)。實(shí)際上,這些縮寫(xiě)是指系統(tǒng)管理總線,它與I 2 C總線不同,但幾乎相同。最初的I 2 C協(xié)議是由Phillips Semiconductor開(kāi)發(fā)的,多年后英特爾將SMBus協(xié)議定義為I2C的擴(kuò)展。這兩輛公共汽車基本上可以互換; 如果您對(duì)它們之間的細(xì)微差別感興趣,請(qǐng)參閱 第57頁(yè)。 就像試圖在一個(gè)滿是人的房間里進(jìn)行重要的對(duì)話 要了解使I 2 C如此有效的巧妙技術(shù),您需要考慮在多個(gè)獨(dú)立組件之間實(shí)現(xiàn)可靠但通用的通信的難度。如果你有一個(gè)始終是主設(shè)備的芯片和一個(gè)始終是從設(shè)備的芯片,那么情況就很簡(jiǎn)單了。 但是如果你有多個(gè)奴隸怎么辦?如果奴隸不知道主人是誰(shuí),該怎么辦?如果有多個(gè)主人怎么辦?如果主設(shè)備請(qǐng)求來(lái)自從設(shè)備的數(shù)據(jù)由于某種原因變得無(wú)法正常運(yùn)行,會(huì)發(fā)生什么?或者如果奴隸在傳輸過(guò)程中失去功能會(huì)怎么樣?如果主人要求總線進(jìn)行傳輸然后在釋放總線之前崩潰怎么辦? 關(guān)鍵是,在這種通信環(huán)境中存在許多可能出錯(cuò)的問(wèn)題。當(dāng)你學(xué)習(xí)I 2 C 時(shí),你必須記住這一點(diǎn),因?yàn)榉駝t,協(xié)議看起來(lái)會(huì)變得復(fù)雜和挑剔。事實(shí)上,這種額外的復(fù)雜性使I 2 C能夠提供靈活,可擴(kuò)展,強(qiáng)大,低引腳數(shù)的串行通信。 I2C通信概述 在我們了解任何細(xì)節(jié)之前,以下是I 2 C 的主要特征:
I2C的優(yōu)點(diǎn)是什么?I2C與UART與SPI的比較 I 2 C 的優(yōu)點(diǎn)可歸納如下:
這里有一些缺點(diǎn):
從這些觀點(diǎn)我們可以看出,當(dāng)您擁有復(fù)雜,多樣化或廣泛的通信設(shè)備網(wǎng)絡(luò)時(shí),I 2 C特別適合。UART接口通常用于點(diǎn)對(duì)點(diǎn)連接,因?yàn)闆](méi)有標(biāo)準(zhǔn)方法來(lái)尋址不同的設(shè)備或共享引腳。當(dāng)你有一個(gè)主設(shè)備和一些從設(shè)備時(shí)SPI很棒,但是每個(gè)從設(shè)備都需要一個(gè)單獨(dú)的“從設(shè)備選擇”信號(hào),當(dāng)總線上有許多設(shè)備時(shí),導(dǎo)致高引腳數(shù)和路由困難。當(dāng)你需要支持多個(gè)主服務(wù)器時(shí),SPI很尷尬。 如果吞吐量是主要關(guān)注點(diǎn),您可能需要有意避免 I 2 C; SPI支持更高的時(shí)鐘頻率并最小化開(kāi)銷。此外,SPI(或UART)的低級(jí)硬件設(shè)計(jì)要簡(jiǎn)單得多,因此如果您正在使用FPGA并從頭開(kāi)始開(kāi)發(fā)串行接口,I 2 C應(yīng)該被認(rèn)為是最后的選擇。 結(jié)論 我們已經(jīng)介紹了I 2 C 的顯著特征,現(xiàn)在我們對(duì)協(xié)議的優(yōu)缺點(diǎn)有了足夠的了解,可以根據(jù)給定的應(yīng)用程序選擇哪種串行總線做出明智的決定。在以后的文章中,我們將更詳細(xì)地探討協(xié)議以及如何實(shí)際實(shí)現(xiàn)它。 |
|