徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

本文由德力威爾王術平原創,轉載、引用請註明出處,否則侵權。

目錄

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

摘要

本文能幫助電子技術愛好者徹底搞明白I2C的由來、I2C的讀法、匯流排BuS的來源、匯流排Bus的定義、匯流排Bus的主要特點、什麼是I2C匯流排、什麼是規範、什麼是I2C匯流排規範等知識原理,為全面掌握I2C匯流排規範打好基礎。

一。 什麼是I2C

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-1 I2C Logo

1。1 I2C的由來

在電視機內部電路中,眾多功能需要用到許多積體電路IC來實現,包括主控器件微控制器和眾多外圍裝置器件,如:PLL合成器、非易失性儲存器、音訊處理器、影片處理器、螢幕顯示器等。這些器件相互之間要傳遞資料資訊,那麼就需要用導線相互連線,如此眾多IC器件的互連,勢必導致晶片引腳、PCB走線以及連線導線變得數量龐大,錯綜複雜,這會導致IC晶片體積增大、功耗增大、成本增加,給IC晶片設計製造廠商帶來不利影響,同時也給IC晶片應用廠商和應用工程師們造成極大不便。

1982年,從事電燈泡、電剃刀、電唱機、收音機、電視機等研發製造已久的荷蘭飛利浦公司,為解決電視機的上述問題,從而發明了一種積體電路互連通訊電路,該電路的優點就是僅用兩條線就可以實現晶片之間的互連通訊,使硬體電路最簡化,硬體效益最大化,給晶片設計製造者和晶片應用者帶來極大益處。

飛利浦公司給這種積體電路互連通訊電路命名為Inter-Integrated Circuit,簡稱為Inter-IC,或I2C(數字“2”為上標)。

1。2 I2C的讀法

在“Inter-Integrated Circuit” 中,“Inter-” 表示“在……之間,相互”的意思;“Integrated Circuit” 簡稱“IC”,表示“積體電路”的意思。 “Inter-Integrated Circuit”,直接翻譯過來就是內部積體電路(DeepL翻譯為互聯電路,微軟翻譯為內部積體電路,百度翻譯為內建積體電路)。德力威爾王術平認為,應該把“Inter-Integrated Circuit”翻譯為積體電路互連或者晶片互連,更符合國人習慣,更為貼切。

在中國正式的書面場合,全稱寫作Inter-Integrated Circuit,簡寫Inter-IC或者I2C(數字“2”書寫為上標,,英文讀作“I squared C”,中文讀作“I平方C”)。

在非正式場合或者數字“2”無法書寫為上標時,有人就書寫為“IIC”或者“I2C”,把“IIC”讀作“I-I-C”,把“I2C”讀作“I-two-C”或“I二C”。這些書寫方式或叫法,其實沒有對錯,只是不同習慣而已,就像普通話和地方話一樣。但是,我們在嚴謹的正式場合,還是要統一標準,規範書寫為“I2C”(數字“2”書寫為上標),規範讀作“I平方C”。

在本文中,德力威爾王術平對相關術語的中文解釋做出如下約定:

I2C:讀作“I平方C”(儘量不讀作“I方C”,避免和I3C混淆)。

I2C:積體電路互連。

I2C Bus:I2C匯流排或積體電路互連匯流排。

I2C Specification:I2C規範或積體電路互連規範。

I2C Communication Interface:I2C通訊介面或積體電路互連通訊介面。

I2C Communication Protocol:I2C通訊協議或積體電路互連通訊協議。

I2C:在無法書寫上標數字“2”時,可書寫為“IIC”或“I2C”。

二。 什麼是匯流排(Bus)

2。1 計算機中Bus術語的來源

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-2 早期的ENIAC計算機

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-3 有序排列的線束

早期的計算機體積龐大,連線複雜(如圖1-2),所有資料都透過實際的電纜傳輸,這變得非常混亂。把這些大捆的雜亂的電纜線,有序的佈置在一個公共線排上,這些規則排列在一起的公共線束(如圖1-3),就是術語“匯流排”的早期來源,用BUS表示。下面這段話來自https://study。com官網,揭示了“BUS”的來源:

In early computer systems, all the data traveled across actual cables, which got pretty messy。 Large bundles of wires were organized using bus bars, which is where the term ‘bus’ comes from。

2。2 計算機中Bus術語的定義

在計算體系結構中, 匯流排(Bus)是計算機內部元件之間或計算機之間傳送資訊的公共通訊幹線,它是由導線組成的傳輸路徑。

匯流排(Bus)是一種電路,它是cpu、RAM、ROM、輸入、輸出等裝置傳遞資訊的公用通道,充當資料在計算機內傳輸的高速公路(如圖1-4所示)。

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-4 計算機中的匯流排(Bus)

按照計算機所傳輸的資訊種類,計算機的匯流排可以劃分為資料匯流排、地址匯流排和控制匯流排,分別用來傳輸資料資訊、地址資訊和控制訊號。

2。3 深入理解Bus

2。3。1 單根導線構成的Bus

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-5 1-Wire匯流排(BUS)示意圖

如圖1-5所示的1-Wire匯流排中,僅用一根線將MCU和N個溫度感測器連線起來,就構成了一個單線匯流排。

主控器件MCU透過一根線分別和N個感測器裝置傳輸資訊,每個感測器分時輪流佔用並控制這根線和MCU通訊,也就是說,同一個時刻,只能有一個感測器裝置佔用匯流排,其它感測器裝置必須排隊,分時輪流佔用控制,不能有兩個及以上的感測器裝置同時佔用控制匯流排。

從圖1-5中,我們可以總結出Bus的一些特點:

①一根線供兩個以上的器件共同使用;

②一根匯流排由一根導線構成;

③匯流排連線的器件,必須多於兩個,其中不少於一個主機,也就是必須是一主多從、多主一從以及多主多從;

④匯流排通訊時,無論是主機器件還是從機器件,同一個時刻,只能有一個器件佔用並控制匯流排對外發送資料,一個器件從外接收資料,也就是一發一收的模式進行資料傳輸(某些廣播資訊、握手協議等可以一發多收)。

2。3。2 多根導線構成的Bus

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-6多根導線構成一組匯流排(來源:德

一根導線把每個器件相對應的某個資料引腳都連在一起,因此這根導線就成為了一根資料線;所有器件都分時輪流佔用並控制這根資料線來傳輸資料,因此這根資料線就成為了一根資料匯流排;像這樣的資料線有多根,多根資料線構成多根資料匯流排,多個數據匯流排被稱之為一組(束)資料匯流排(如圖1-6)。

一根導線把每個器件相對應的某個地址引腳都連在一起,因此這根導線就成為了一根地址線;所有器件都分時輪流佔用並控制這根地址線來傳輸地址,因此這根地址線就成為了一根地址匯流排;像這樣的地址線有多根,多根地址線構成多根地址匯流排,多個地址匯流排被稱之為一組(束)地址匯流排(如圖1-6)。

一根導線把每個器件相對應的某個控制引腳都連在一起,因此這根導線就成為了一根控制線;所有器件都分時輪流佔用並控制這根控制線來傳輸控制訊號,因此這根控制線就成為了一根控制匯流排;像這樣的控制線有多根,多根地控制線構成多根控制匯流排,多個控制匯流排被稱之為一組(束)控制匯流排(如圖1-6)。

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-7計算機中的匯流排連線示意圖

在圖1-7中,計算機的中央處理器CPU要實現對儲存器、顯示器、鍵盤、滑鼠、硬碟等外圍裝置的控制和管理,就必須用導線將它們互相連線起來,但這些互連導線是有嚴格規定的。

中央處理器和外圍裝置所有資料線全部連線在一組線上,所有的地址線全部連在一組線上,所有控制線全部連在一組線上,這就構成了資料匯流排、地址匯流排和控制匯流排,這三路匯流排是相互獨立的。

每一個外圍裝置分時輪流佔用資料匯流排和中央處理器進行資料傳輸;也就是說,同一個時刻,只能有一個外圍裝置佔用資料匯流排與中央處理器傳輸資料,其他外圍裝置必須排隊,分時輪流使用,不能有兩個及以上的外圍裝置同時佔用資料匯流排。

每一個外圍裝置分時輪流佔用地址匯流排和中央處理器進行地址傳輸;也就是說,同一個時刻,只能有一個外圍裝置佔用地址匯流排與中央處理器傳輸地址,其他外圍裝置必須排隊,分時輪流使用,不能有兩個及以上的外圍裝置同時佔用地址匯流排。

每一個外圍裝置分時輪流佔用控制匯流排和中央處理器進行控制訊號傳輸;也就是說,同一個時刻,只能有一個外圍裝置佔用控制匯流排與中央處理器傳輸控制訊號,其他外圍裝置必須排隊,分時輪流使用,不能有兩個及以上的外圍裝置同時佔用控制匯流排。

2。3。3 Bus的主要特點

Bus(匯流排)具有以下特點:

①匯流排是一種電路,是多於兩個器件互連的傳輸電訊號的導線;是多於兩個器件共同使用的公共線路。

②一根導線可以構成一根匯流排,一根匯流排只有一根導線;多根導線就構成多根匯流排,相同作用的多根匯流排,可稱之為一組匯流排。

③匯流排連線的器件,必須多於兩個,其中不少於一個主機,也就是必須是一主多從、多主一從以及多主多從(只有兩個器件的互連線不能成為匯流排)。

④匯流排通訊時,無論是主機器件還是從機器件,同一個時刻,只能有一個器件佔用並控制匯流排對外發送資料,一個器件從外接收資料,也就是一發一收的模式進行資料傳輸(某些廣播資訊、握手協議等可以一發多收)。

⑤匯流排能簡化硬體,如簡化晶片的引腳數量,簡化導線的數量,簡化佈線空間等;從而能節約成本、提高效能。

⑥構成匯流排的導線可以是常規導線及線束、印刷電路板上的銅走線、以及矽晶片內部的微小走線等導體。

國外把匯流排命名為“Bus”而非“Car”,是有其道理的。匯流排命名為“Bus”,真的非常貼切,匯流排好比公交車一樣,人們可以透過坐公交車到達城市的各個地方,人就如電訊號,汽車內部容納人的座位就如導線,只有一個座位的公交車就如只有一根導線構成的匯流排,多個座位的公交車就如多根導線構成的一組匯流排,人們可以分時輪流佔用一個座位,但同一個時刻不能有兩個及以上的人坐在同一個座位上。

為方便記憶,德力威爾王術平用八個字來刻畫匯流排的本質:

一線多連

輪流

佔用

三。 什麼是I2C匯流排(I2C-bus)

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-8 I2C Bus Logo

如圖1-9,在I2C電路中,多個主機器件和從機器件之間通訊時只需要用到兩根導線互連,這兩根導線分別為序列資料線(SDA)和序列時鐘線(SCL)。

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-9 I2C Bus 連線示意圖

如圖1-9,所有主從器件的SDA線全部連在一根線上,這些器件分時佔用這根公共資料線,來實現兩兩互傳資料,那麼SDA符合了資料匯流排的特徵;所有主從器件的SCL線全部連在一根線上,它們分時佔用這根公共時鐘線,來實現兩兩互傳時鐘,那麼SCL符合了時鐘匯流排的特徵。

因為I2C中的兩根導線(SDA和SCL)構成了兩根Bus,實現了Bus的功能;由於I2C電路能實現Bus的功能,故把I2C 電路稱為 I2C-bus,中文叫I2C匯流排(I2C匯流排是一個兩線匯流排)。

四。 什麼是規範(Specification)

Specification就是規範,規範就是標準或準則的意思。

國際標準化組織(ISO)的標準化原理委員會(STACO)一直致力於標準化概念的研究,先後以“指南”的形式給“標準”的定義作出統一規定:

標準是由一個公認的機構制定和批准的檔案。它對活動或活動的結果規定了規則、導則或特殊值,供共同和反覆使用,以實現在預定領域內最佳秩序的效果。

五。 什麼是I2C匯流排規範(I2C-bus Specification)

Philips公司發明I2C-bus後,一方面,利用該項技術,研發出許多帶有I2C-bus功能的晶片。這些帶有I2C-bus功能的晶片,一部分用於自己使用,一部分出售給其他晶片應用廠商;另一方面,將I2C-bus專利技術授權提供給其他晶片製造廠商,獲得專利技術授權的其他晶片製造廠商把該項技術應用整合到自家的晶片中,使自家的晶片也具有I2C-bus功能。

Philips公司無論是對外出售I2C-bus晶片,還是對外出售I2C-bus專利技術,都要同時對外提供一套完整的技術文件和應用細則,使得具有I2C-bus功能的器件有一個統一的標準,這就是I2C匯流排規範(I2C-bus Specification)。

最初,I2C 匯流排規範由飛利浦半導體公司編寫。後來被IEEE(電氣電子工程師協會)引用採納,成為全世界的行業標準。2016年, Philips(飛利浦)公司旗下的半導體事業部獨立成為一個新公司,取名NXP(恩智浦)公司,NXP(恩智浦)公司現在是I2C匯流排規範的利益相關者。

自2006年10月10日起,I2C原始專利已過期,因此I2C匯流排可以自由使用,不需要支付專利費,但製造商獲取NXP分配的IC從裝置地址仍然需要付費。

2017年由MIPI聯盟推出的I3C規範,NXP參與並做出了貢獻。MIPI I3C提供了與I2C的向後相容性、更高的速度和更低的功耗,並且提供了免版稅版本。

I2C匯流排是一種全世界遵循的行業標準,目前已在50多家公司生產的1000多種不同IC中應用實施。此外,通用的I2C匯流排用於各種控制體系結構,如系統管理匯流排(SMBus)、電源管理匯流排(PMBus)、智慧平臺管理介面(IPMI)、顯示資料通道(DDC)和高階電信計算體系結構(ATCA)。

六。 I2C匯流排規範版本發展歷史

① 首發版本:1982年Philips原創首發。

② V1。0-1992: 刪除了從機地址軟體程式設計的內容;刪除了低速模式(Low-speed mode )的詳細說明;增加了快速模式(Fast-mode),位速率達400Kbit/s,並向下相容標準模式(Standard-mode)的0~100Kbit/s位速率。

③ V2。0-1998:I2C匯流排已經成為世界標準,已授權給50多家公司,並在1000多種不同的IC中應用實現。增加了高速模式(High-speed),位速率達3。4Mbit/s,並向下相容快速模式和標準模式;增加了對低電壓2V或更低器件的支援,併兼容高電壓器件;刪除了快速模式輸出級的0。6V/6mA的要求;增加了新的器件用匯流排電壓相關電平替代固定電平的內容;增加了雙向電平轉換器的應用。

④ V2。1-2000:增加了在高速模式下的重複起始條件後,可以延長時鐘訊號SCLH;放寬了高速模式下的一些時序引數要求。

⑤ V3。0-20070619:增加了快速模式增強版(Fast-mode Plus),它將驅動強度提高了10倍,並將位速率從快速模式的400Kbit/s,提高到1 Mbit/s,以滿足更長的匯流排和或更快的速度的應用需求。

⑥ V4。0-20120213:增加單向I2C匯流排和超快模式(Ultra Fast-mode),位速率達5Mbit/s。

⑦ V5。0-20121009:糾正了一些錯誤。

⑧ V6。0-2014:修改了上拉電阻的計算方法。

⑨ V7。0-2021:更新了I2C晶片製造商名稱ID清單表;將術語“主/從”更新為“控制器/目標”;增加了MIPI I3C規範內容,I3C位速率達10Mbit/s,為I2C和SPI提供靈活的升級方案。

七。 I2C匯流排的特點

徹底搞懂I2C匯流排(一)什麼是I2C?什麼是I2C匯流排?什麼是I2C標準

圖1-10 I2C匯流排應用示例

I2C具有如下特點:

①只需要兩條匯流排;序列資料線(SDA)和序列時鐘線(SCL)。

②連線到匯流排的每個裝置都是可透過唯一地址進行軟體定址的,並且始終存在簡單的控制器/目標關係;控制器可以作為控制器傳送器或控制器接收器執行。

③這是一種真正的多控制器匯流排,包括衝突檢測和仲裁,以防止兩個或更多控制器同時啟動資料傳輸時出現數據損壞。

④面向8位的序列雙向資料傳輸速率在標準模式下最高可達100 kbit/s,在快速模式下最高可達400 kbit/s,在快速增強模式下最高可達1 Mbit/s,在高速模式下最高可達3。4 Mbit/s。

⑤序列、面向8位、單向資料傳輸,在超快速模式下最高可達5 Mbit/s。

⑥片內濾波可抑制匯流排資料線上的尖峰訊號,以保持資料完整性。

⑦可以連線到同一匯流排的IC數量僅受最大匯流排電容的限制。在某些條件下(如簡化SCL時鐘頻率、增加輸出驅動力、增加緩衝器件、改進上拉電阻等),可以允許更大的電容。

⑧極低的電流消耗,高抗擾度,寬電源電壓範圍,寬工作溫度範圍。

⑨硬體的最簡化,給晶片設計師減輕了節省輸出引腳的壓力,給晶片應用商帶來了成本降低、空間減小、測試方便、易於升級等諸多好處,為晶片應用工程師的產品開發帶來靈活多樣的選擇方案、方便快捷的除錯手段、開發週期的縮短、開發效率的提高等好處。

未完待續,敬請關注《徹底搞懂I2C匯流排(二)》。

本文由德力威爾王術平原創,轉載、引用請註明出處,否則侵權。