I2C 通訊是嵌入式系統設計中的重要組成部分,它由 Philips(現在的 NXP 半導體)於 1982 年推出,特別適用於不追求極高時脈速率的系統,因此,I2C 在低速和低成本應用中被廣泛使用,這一點不足為奇,儘管 I2C 技術誕生已有三十年之久,但其受歡迎程度和應用範圍並未減少,即使在今天,I2C 協定仍然在大多數入門級和中端嵌入式系統設計中佔有重要地位,並且在不久的將來可能會繼續如此。
I2C通訊是什麼?
命名困惑:首先,讓我們釐清一下I2C所面臨的術語問題,說它是一個重大問題可能有點言過其實,但當某人第一次讀到或聽到有關I2C的術語時,這些術語可能會造成一定程度的困惑,你可能會發現一些工程師、教授和技術人員更喜歡將其寫作I2C(發音為I Squared C),而不是I2C,在過去,IIC(發音為double I C)曾經相當普遍。
那麼,I2C到底是什麼?
I2C代表著互連式整合電路(Inter-Integrated Circuit),I2C協定用於建立兩個或多個整合電路(ICs)之間的通訊,因此被稱為I2C通訊;然而,需要注意的是,I2C也可以用作兩個位於同一個印刷電路板(PCB)上的IC之間的通訊協定。
I2C通訊的使用場景和方式
簡而言之,當您需要在同一個印刷電路板或裝置內建立短距離通訊時,可以使用I2C,它只需要兩條雙向線路來傳輸和接收資訊;需要注意的是,I2C協定僅支援串行通訊,該協定非常流行,多個外圍IC以主從 (master-slave) 配置相互連接,在主從配置方面,使用I2C協定時具有很大的靈活性,I2C允許設計人員在多個主IC和從IC之間建立雙向通訊,事實上,當使用7位元的位址時,只需要兩條線路即可在近128(112)個裝置之間進行通訊;而當使用10位元的位址時,則可以在近1024(1008)個裝置之間進行通訊。
如何只用兩條線路在如此多的裝置之間進行通訊:每個裝置都有預設的ID或獨特的裝置地址,主控裝置可以根據需要選擇與哪些裝置進行通訊。
這兩條線路稱為串行時脈(Serial Clock,簡稱SCL)和串行資料(Serial Data,簡稱SDA),SCL線路是由主控裝置產生的時脈訊號,用於同步I2C匯流排上裝置之間的資料傳輸,另一條線路是SDA線路,用於傳輸資料。
這兩條線路是「開漏Open-Drain」的,這表示需要連接上拉電阻以使線路保持高電位,因為I2C匯流排上的裝置是主動低電平,通常使用的電阻值為2K(400 kbps快速模式)到10K(100 kbps低速模式)之間。
通訊速度的簡要說明:就通訊速度而言,我們已經提到I2C最適用於低速應用;儘管如此,最近的改版使得可以實現高達3.4Mbps的速度,在低速模式下,I2C匯流排通常在10kbs的工作速度,標準速度模式可以將速度提高到400kbs;還有兩種模式,即快速模式和快速模式增強,分別支援1Mbps和3.4Mbps的速度。
然而,這並不意味著您的設計將受到這些預設值的限制,您也可以使用任意值,這些速度對於嵌入式系統應用來說已經足夠了,嵌入式工程師也可以在個人電腦設計中使用I2C協定。
因此,對於初入行的年輕工程師來說,最好將I2C協定限制在嵌入式系統設計的範疇內。
I2C通訊的優勢是什麼?
I2C通訊或協定在與串行端口通訊和SPI等同類型通訊相比具有顯著優勢,讓我們來看看I2C協定在同一塊電路板上 (intra-board) 短距離通訊中的各種優勢。
彈性:I2C協定支援多主多從通訊,這意味著您可以為設計添加很多功能,多個主IC控制和與從IC進行通訊可以加快速度並為嵌入式系統添加功能。
定址功能:I2C協定的另一個優勢在於其內建的晶片定址能力,這代表著您可以輕鬆地向匯流排添加元件,無需複雜的操作,它消除了裝置選擇線(chip select line)的必要性。
簡單性:I2C協定不會使設計變得複雜,它只需要兩條雙向訊號線來在多個裝置之間建立通訊,此外,引腳數量也很少。
更好的錯誤處理機制:為了改進錯誤偵測和校正機制,I2C協定依賴確認/非確認(ACK/NACK)功能,這是一種強大的錯誤校正功能,ACK代表確認應答(Acknowledgment),而NACK代表否定應答(Negative-Acknowledgment)。
適應性:I2C協定具有強大適應能力,可以適用於各種低速IC和高速IC。
I2C通訊有哪些缺點?
I2C通訊並沒有太多的缺點,事實上,該協定已經使用了30多年,這一點突顯了這個事實;然而,它確實存在一些較小的限制。
衝突:由於晶片定址的存在,位址衝突的可能性始終存在。
較慢的速度:I2C協定使用上拉電阻,而不是其同類協定使用的推拉電阻。由於開漏設計,速度受到限制。
需要更多空間:作為一名嵌入式系統工程師,應知道PCB上安排layout空間的價值,因此,I2C協定需要挪出空間放置上拉電阻並不是一個優點。
儘管存在這些較小的限制,I2C是一種強大且受歡迎的協定,它實現了它的設計目標-實現低速通訊;因此,如果您正在設計入門級的嵌入式系統,I2C通訊可能是您的正確選擇。
總而言之,I2C通訊是一種被廣泛應用於低速和低成本應用的通訊協定,它具有以下優點:彈性的多主多從通訊、簡單性、具有定址功能、良好的錯誤處理機制、以及適應能力;然而,它也有一些限制,如可能存在的地址衝突、較慢的速度和佔用更多空間;儘管如此,I2C仍然是一種強大和受歡迎的協定,特別適用於入門級嵌入式系統設計。
Comments