本页使用了标题或全文手工转换

I²C

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

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

設計概說[编辑]

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

I²C的參考設計使用一個7位元長度的位址空間但保留了16個位址,所以在一組匯流排最多可和112個節點通訊[註 1]。常見的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仅使用两个双向开漏线,串行数据线(SDA)和串行时钟线(SCL),拉了电阻。使用的典型电压是+5 V或+3.3 V虽然与其他电压系统是允许的。

在I²C参考设计有一个7位或10位(取决于在设备上使用的)的地址空间。普通I²C总线速度的100千比特/秒的标准模式,并在10 kbit / s的低速模式,但任意低时钟频率也是允许的。 I²C的最新修订可以承载更多的节点,并以更快的速度运行[註 2]。这些速度被更广泛地使用在除在PC的嵌入式系统。也有其他的功能,如16位寻址。

请注意,比特率报价为主机和从机之间的交易没有时钟延长或其他硬件开销。协议开销包括一个从地址和或许从设备内的寄存器地址以及每个字节的ACK / NACK比特。因此,用户数据的实际传输速率低于单独的峰值比特率将意味着。例如,如果与从每个交互低效允许传送的数据仅1字节,数据率将少于一半的峰值比特率。

节点的最大数量由地址空间的限制,并且还通过400 pF的总的总线电容,这限制了实际通信距离到几米

修訂[编辑]

原始的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)。
  • 2012年,第4版增加5 MHz的超快速模式(UFM),使用推挽式逻辑没有上拉电阻新的USDA和USCS线,并增加了制造商指定的ID表。
  • 2012年,第5版修正错误。
  • 在2014年,第6版纠正两个图。这是最新的标准。[2]

應用[编辑]

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)以支援一些常見的主控端控制器及感應器。

工具开发[编辑]

I²C主机适配器[编辑]

I²C协议分析仪[编辑]

逻辑分析仪[编辑]

限制[编辑]

衍生技术[编辑]

參見[编辑]

參考資料[编辑]

註釋[编辑]

  1. ^ 應該為27=128個,但是其中16個指令具有特殊定義,所以剩下112。
  2. ^ 400 kbit / s的快速模式,1 Mbit / s的快速模式加上或FM +和3.4 Mbit / s的高速模式

外部鏈結[编辑]