I²C

维基百科,自由的百科全书
跳转至: 导航搜索
I2C bus

I²CInter-Integrated Circuit)是內部整合電路的稱呼,是一種串列通訊匯流排,使用多主從架構,由飛利浦公司在1980年代為了讓主機板嵌入式系統手機用以連接低速週邊裝置而發展。I²C的正確讀法為"I-squared-C" ,而"I-two-C"則是另一種錯誤但被廣泛使用的讀法,在中國則多以"I方C"稱之。截至2006年11月1日為止,使用I²C協定不需要為其專利付費,但製造商仍然需要付費以獲得I²C從屬裝置位址。

設計概說[编辑]

I²C只使用兩條雙向開放汲極(Open Drain)(串列資料(SDA)及串列時脈(SCL))並利用電阻將電位上拉。I²C允許相當大的工作電壓範圍,但典型的電壓準位為+3.3V或+5v。

I²C的參考設計使用一個7位元長度的位址空間但保留了16個位址,所以在一組匯流排最多可和112個節點通訊。常見的I²C匯流排依傳輸速率的不同而有不同的模式:標準模式(100 Kbit/s)、低速模式(10 Kbit/s),但時脈頻率可被允許下降至零,這代表可以暫停通訊。而新一代的I²C匯流排可以和更多的節點(支援10位元長度的位址空間)以更快的速率通訊:快速模式(400 Kbit/s)、高速模式(3.4 Mbit/s)。

雖然最大的節點數目是被位址空間所限制住,但實際上也會被匯流排上的總電容所限制住,一般而言為400 pF。

Data transfer sequence

修訂[编辑]

原始的I²C系統是在1980年代所建立的一種簡單的內部匯流排系統,當時主要的用途在於控制由飛利浦所生產的晶片。

1992年完成了最初的標準版本釋出,新增了傳輸速率為400 kbit/s的快速模式及長度為10位元的定址模式可容納最多1008個節點。1998年釋出了2.0版,新增了傳輸速率為3.4Mbit/s的高速模式並為了節省能源而減少了電壓及電流的需求。2.1版則在2001年完成,這是一個對2.0版做一些小修正,version 3.0, 於2007年釋出。

2012年2月13日釋出Specification Rev. 新增 5-MHz的超快速模式(UFM)。

應用[编辑]

I²C-Bus

I²C被應用在簡單的週邊且其製造成本較傳輸速度更為要求。一些常見的應用如下:

  • 為了保存使用者的設定而存取NVRAM晶片。
  • 存取低速的数字模拟转换器(DAC)。
  • 存取低速的模拟数字转换器(ADC)。
  • 改變監視器的對比度、色調及色彩平衡設定(視訊資料通道)。
  • 改變音量大小。
  • 取得硬體監視及診斷資料,例如中央處理器的溫度及風扇轉速。
  • 讀取实时时钟(Real-time clock)。
  • 在系統設備中用來開啟或關閉電源供應。

I²C的另一個強大用途在於微控制器的應用,利用兩根通用的輸入輸出接腳及軟體的規劃,可以讓微控制器控制一個小型網路。

週邊可以在系統仍然在運作的同時加入或移出匯流排,這代表對於有熱插拔需求的裝置而言是個理想的匯流排。

像I²C這樣的匯流排之所以流行起來,是因為電腦工程師發現到對於整合電路設計而言,許多的製造成本源自於封裝尺寸及接腳數量。更小的包裝通常能夠減少重量及電源的消耗,這對於行動電話及手持式電腦而言格外重要。

操作系統的支援[编辑]

Linux中,I²C已經列入了核心模組的支援了,更進一步的說明可以參考核心相關的文件及位於/usr/include/linux/i2c.h 的這個標頭檔OpenBSD則在最近的更新中加入了I²C的架構(framework)以支援一些常見的主控端控制器及感應器。

參見[编辑]

外部鏈結[编辑]