本文由德力威爾王術平原創,轉載、引用請注明出處,否則侵權。
目錄
摘要
本文能幫助電子技術愛好者徹底搞明白I2C的由來、I2C的讀法、總線BuS的來源、總線Bus的定義、總線Bus的主要特點、什么是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術語的來源
圖1-2 早期的ENIAC計算機
圖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所示)。
圖1-4 計算機中的總線(Bus)
按照計算機所傳輸的信息種類,計算機的總線可以划分為數據總線、地址總線和控制總線,分別用來傳輸數據信息、地址信息和控制信號。
2.3 深入理解Bus
2.3.1 單根導線構成的Bus
圖1-5 1-Wire總線(BUS)示意圖
如圖1-5所示的1-Wire總線中,僅用一根線將MCU和N個溫度傳感器連接起來,就構成了一個單線總線。
主控器件MCU通過一根線分別和N個傳感器設備傳輸信息,每個傳感器分時輪流占用並控制這根線和MCU通信,也就是說,同一個時刻,只能有一個傳感器設備占用總線,其它傳感器設備必須排隊,分時輪流占用控制,不能有兩個及以上的傳感器設備同時占用控制總線。
從圖1-5中,我們可以總結出Bus的一些特點:
①一根線供兩個以上的器件共同使用;
②一根總線由一根導線構成;
③總線連接的器件,必須多於兩個,其中不少於一個主機,也就是必須是一主多從、多主一從以及多主多從;
④總線通信時,無論是主機器件還是從機器件,同一個時刻,只能有一個器件占用並控制總線對外發送數據,一個器件從外接收數據,也就是一發一收的模式進行數據傳輸(某些廣播信息、握手協議等可以一發多收)。
2.3.2 多根導線構成的Bus
圖1-6多根導線構成一組總線(來源:德力威爾實訓案例)
一根導線把每個器件相對應的某個數據引腳都連在一起,因此這根導線就成為了一根數據線;所有器件都分時輪流占用並控制這根數據線來傳輸數據,因此這根數據線就成為了一根數據總線;像這樣的數據線有多根,多根數據線構成多根數據總線,多個數據總線被稱之為一組(束)數據總線(如圖1-6)。
一根導線把每個器件相對應的某個地址引腳都連在一起,因此這根導線就成為了一根地址線;所有器件都分時輪流占用並控制這根地址線來傳輸地址,因此這根地址線就成為了一根地址總線;像這樣的地址線有多根,多根地址線構成多根地址總線,多個地址總線被稱之為一組(束)地址總線(如圖1-6)。
一根導線把每個器件相對應的某個控制引腳都連在一起,因此這根導線就成為了一根控制線;所有器件都分時輪流占用並控制這根控制線來傳輸控制信號,因此這根控制線就成為了一根控制總線;像這樣的控制線有多根,多根地控制線構成多根控制總線,多個控制總線被稱之為一組(束)控制總線(如圖1-6)。
圖1-7計算機中的總線連接示意圖
在圖1-7中,計算機的中央處理器CPU要實現對存儲器、顯示器、鍵盤、鼠標、硬盤等外圍設備的控制和管理,就必須用導線將它們互相連接起來,但這些互連導線是有嚴格規定的。
中央處理器和外圍設備所有數據線全部連接在一組線上,所有的地址線全部連在一組線上,所有控制線全部連在一組線上,這就構成了數據總線、地址總線和控制總線,這三路總線是相互獨立的。
每一個外圍設備分時輪流占用數據總線和中央處理器進行數據傳輸;也就是說,同一個時刻,只能有一個外圍設備占用數據總線與中央處理器傳輸數據,其他外圍設備必須排隊,分時輪流使用,不能有兩個及以上的外圍設備同時占用數據總線。
每一個外圍設備分時輪流占用地址總線和中央處理器進行地址傳輸;也就是說,同一個時刻,只能有一個外圍設備占用地址總線與中央處理器傳輸地址,其他外圍設備必須排隊,分時輪流使用,不能有兩個及以上的外圍設備同時占用地址總線。
每一個外圍設備分時輪流占用控制總線和中央處理器進行控制信號傳輸;也就是說,同一個時刻,只能有一個外圍設備占用控制總線與中央處理器傳輸控制信號,其他外圍設備必須排隊,分時輪流使用,不能有兩個及以上的外圍設備同時占用控制總線。
2.3.3 Bus的主要特點
Bus(總線)具有以下特點:
①總線是一種電路,是多於兩個器件互連的傳輸電信號的導線;是多於兩個器件共同使用的公共線路。
②一根導線可以構成一根總線,一根總線只有一根導線;多根導線就構成多根總線,相同作用的多根總線,可稱之為一組總線。
③總線連接的器件,必須多於兩個,其中不少於一個主機,也就是必須是一主多從、多主一從以及多主多從(只有兩個器件的互連線不能成為總線)。
④總線通信時,無論是主機器件還是從機器件,同一個時刻,只能有一個器件占用並控制總線對外發送數據,一個器件從外接收數據,也就是一發一收的模式進行數據傳輸(某些廣播信息、握手協議等可以一發多收)。
⑤總線能簡化硬件,如簡化芯片的引腳數量,簡化導線的數量,簡化布線空間等;從而能節約成本、提高性能。
⑥構成總線的導線可以是常規導線及線束、印刷電路板上的銅走線、以及硅芯片內部的微小走線等導體。
國外把總線命名為“Bus”而非“Car”,是有其道理的。總線命名為“Bus”,真的非常貼切,總線好比公交車一樣,人們可以通過坐公交車到達城市的各個地方,人就如電信號,汽車內部容納人的座位就如導線,只有一個座位的公交車就如只有一根導線構成的總線,多個座位的公交車就如多根導線構成的一組總線,人們可以分時輪流占用一個座位,但同一個時刻不能有兩個及以上的人坐在同一個座位上。
為方便記憶,德力威爾王術平用八個字來刻畫總線的本質:一線多連,輪流占用。
三. 什么是I2C總線(I2C-bus)
圖1-8 I2C Bus Logo
如圖1-9,在I2C電路中,多個主機器件和從機器件之間通信時只需要用到兩根導線互連,這兩根導線分別為串行數據線(SDA)和串行時鍾線(SCL)。
圖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分配的I²C從設備地址仍然需要付費。
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總線的特點
圖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總線(二)》。
本文由德力威爾王術平原創,轉載、引用請注明出處,否則侵權。