I2C 簡介

I2C Bus是由菲力浦公司(Philips Semiconductors)在80年代時就開發出來的技術,最原始的目的為提供TV-set電路一個簡單的方式來連接CPU與週邊晶片。

     在嵌入式系統中,MCU通常以Memory-Map I/O的方式來定址週邊裝置,並使用微控制器的並列位址線與資料線來做連接。這種方式造成了PCB電路板中有大量的位址線與資料線,更別說要接上一些位址解碼器與附加的邏輯電路了。這對於當時大量生產的TV-set、VCR與音效配件來說,是沒辦法接受的。而若使用I2C Bus來做連接,則能省下大量的元件,這意味著製造商能有效的增加其產品收益性,且產品的價格也更能被消費者所接受。

     I2C bus為Inter-IC bus之縮寫,如同字面上所表達的意思,其功用為提供IC之間的連接與通訊之用。而I2C Bus之所以能克服上述問題,其原因在於I2C Bus只有兩條線,即序列資料線(SDA)與時脈訊號(SCL)。其中SDA為Serial Data line,SCL為Serial Clock line,兩條線皆可做雙向傳輸。其連接示意圖如圖一所示。

 
圖一、I2C Bus連接示意圖

I2C 序列介面通訊協定

     如圖一所示,I2C介面是由資料線(SDATA)及時脈訊號(SCLK)所組成的序列介面,每一個接到序列介面的IC都有自己唯一的位址,透過啟動、位址或資料傳輸、回應及結束四種主要的模式進行資料的溝通,如圖二所示。

 
圖二、I2C 訊號範例(資料寫入)

啟動 (Start)

     當主控單元要對一個序列介面上的IC進行資料傳輸(資料的存/取)時,首先必須下達一個啟動介面的指令。啟動指令的下達由兩個步驟來完成:第一,將SDATA訊號設為低準位電壓(Low),第二,在SDATA訊號設為low之後,將SCLK設為低電壓。所有接在序列介面上的IC,在接受到啟動指令,皆會開啟準備收接資料的動作。另一個說法即是在SCLK為高準位電壓(High)的時候,使SDATA訊號產生一個由高準位電壓(High)變為低準位電壓(Logw)的轉換。

位址、資料傳輸

     在啟動指令下達後,主控單元可以傳輸一筆8-bit的資料到序列介面上(I2C傳輸規範中,每一筆資料封包由8-bit組成),第一筆8-bit資料一定是位址資料,以圖二為例,主控單元傳輸0xBA的資料到序列介面上,由於每個IC都有唯一的位址,因此,只有位址為0xBA的IC會接著產生應對訊號,繼續處理後續的動作。在I2C的通訊規範中,每個接於序列介面上的IC都有自己的一個代表自己的ID,這個ID的長度為7-bit且是獨一無二的,在7-bit之後會緊接著一個bit,用來指定該動作是寫入資料(1’b1)或讀取資料(1’b0),以0xBA(7’b1011_1010)為例,7’b1011101為受控IC的ID,而最後一個bit為0,所以0xBA所指的意圖為,對ID為7’b1011101的IC進行資料寫入的動作。反之若是0xBB,則是對該IC進行資料讀取的動作。

回應(ACK)

     回應訊號由授控的IC發出,當主控單元傳輸8-bit資料後,接下的一個SCLK週期會立即檢查SDATA上面的資料訊號,若為低電壓則代表正常動作完成,反之相動作有問題,因此,受控單元在接收8-bit資料無誤後,應立即將SDATA訊號設為低電壓,反之則將SDATA設為高電壓,此時主控單元將視情況,中止或重新資料傳輸。當進行資料讀取動作時,主控端送出高電壓(NACK)是要告知授控端終止資料輸出的動作。

結束(STOP)

     在所有動作完成後,主控單元必須下達一個結速的指令,來關閉序列介面的使用。結速指令的下達由兩個步驟來完成:第一,將SCLK設為高電壓(High),第二,在SCLK為高電壓時,將SDATA設為高電壓(High)。另一個說法即是在SCLK為高準位電壓時,使SDATA訊號產生電低準位電壓(Low)變成高準位電壓(High)的轉換。

I2C序列介面寫入/讀取範例

     I2C Bus為一種多主匯流排(Multi-Master Bus),意思是指在同一匯流排中的IC,只要有能力傳送資料至匯流排中,都可以當匯流排的主控端(bus master)。根據I2C Bus協定的標準規格指出,啟始匯流排中資料傳輸的IC即為主控端,而同時間的其它IC則為受控端(bus slave)。主控端對受控端的行為可分為兩類:資料寫入及資料讀取。

資料寫入範例

     圖二為一個主控單元對序列介面上的IC(位址7’b1011101)進行資料寫入(1’b0)暫存器(0x09)的範例。主要動作如下:

  • <1> 主控單元下達啟動指令
  • <2> 主控單元傳輸0xBA 8-bit (8’b1011_1010)資料到序列介面上
  • <3> 授控單元回應正確接收訊號
  • <4> 主控單元傳輸0x09,指定暫存器
  • <5> 授控單元回應正確接收訊號
  • <6> 主控單元傳輸第一筆寫入暫存器的資料0x02
  • <7> 授控單元回應正確接收訊號
  • <8> 主控單元傳輸第二筆寫入暫存器的資料0x84
  • <9> 授控單元回應正確接收訊號
  • <10> 主控單元結束序列介面的使用

 
圖三、I2C 訊號範例(資料讀取)

資料讀出範例

     圖三為一個主控單元對序列介面上的IC(位址7’b1011101)進行資料讀取(1’b1)暫存器(0x09)的範例。主要動作如下:

  • <1> 主控單元下達啟動指令
  • <2> 主控單元傳輸0xBA 8-bit (8’b1011_1010)資料到序列介面上
  • <3> 授控單元回應正確接收訊號
  • <4> 主控單元傳輸0x09,指定暫存器
  • <5> 授控單元回應正確接收訊號
  • <6> 主控單元傳輸0xBB 8-bit (8’b1011_1011)資料到序列介面上
  • <7> 授控單元回應正確接收訊號
  • <8> 授控單元輸出第一筆8-bit的資料(0x02)
  • <9> 主控單接收到資料,並回應正確接收訊號
  • <10> 授控單元輸出第二筆8-bit的資料(0x84)
  • <11> 主控單接收到資料,並回應NACK訊號
  • <12> 主控單元結束序列介面的使用

關於I2C序列介面的控制實作範例,可參考本網站後續介紹之影像感知器控制實作 (PS.本網站介紹中,所使用之影像感知器的控制介面為I2C序列介面)。

本篇發表於 未分類。將永久鏈結加入書籤。

5 Responses to I2C 簡介

  1. Unknown 說道:

    Amberdigital Branch,Southern Stars Enterprises Co is specializing in the development and manufacturing of screen advertisings, digital sign, digital signages and LCDs. Established in 1996, we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.

    amberdigital Contact Us
    Southern Stars Enterprises Co (Hong Kong Office)
    Add:3 Fl, No.2, Lane 2, Kam Tsin Tsuen, Sheung Shui, Hong Kong
    Tel:+852 2681 4099
    Fax:+852 2681 4586
    Southern Stars Enterprises Co (Shenzhen Office)
    Add:DE, 16/F, Building 2, Nanguo Tower, Sungang Road, Shenzhen, China
    Tel:+86 755 2592 9100
    Fax:+86 755 2592 7171
    E-mail:sstar@netvigator.com
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[b

  2. Unknown 說道:

    (wow power leveling) And (wow gold) under the single-site, preferential policies!

  3. Unknown 說道:

    您需要二手液晶显示屏、废旧液晶屏么?我们是不折不扣的二手液晶屏、旧液晶屏大批发商,长期大量供应可再利用的旧液晶屏。我公司提供的各种尺寸的二手液晶屏, 不同厚薄如笔记本屏,均已经过我们严格的分类,检验,测试流程。请访问协力液晶屏www.sceondhandlcd.com[bbjhabjijiedjiae]

發表留言