0%

(Embeded system) I2C, Inter-Integrated Circuit Bus

  1. I2C通訊應用:

    • 於Microcontroller中,利用兩根通用的輸入輸出接腳及軟體的規劃,可以讓微控制器控制一個小型網路。週邊應用部份包含,AD Converter、DA Converter、RTC等。
  2. I2C介面包含:

    • SCL (Serial Clock),由Master產生Clock信號。
    • SDA (Serial Data),SDA使用一上拉電阻,將電壓準位拉為High。
  3. I2C接續說明:

    • I2C是一種單工同步串列通訊協定,採用2線接續(SCL、SDA),為Multi-Master - Muti-Slave架構,將所有裝置的SCL並聯、SDA並聯。(http://zh.wikipedia.org/wiki/I%C2%B2C)
  4. I2C通訊說明:

    • I2C採用7 bits /10 bits Address進行Slave定址,符合Master定址的Slave裝置,與Master進行通訊。
  5. I2C專有名詞:

    • Idle State:SDA與SCL皆為High,2 Bus未被任一Master裝置佔用。
    • Active State:SDA與SCL被任一Master裝置佔用。
    • Start Condition:Master發出的訊號 (SCL為high時,使SDA由high->low)。
    • Addressed Slave:
      • 使用7bits address定址:
        Master傳送Start Condition後,會傳送7 bits Address、1 bit Read/ Write Request,
        共1Byte的資料至SDA上,Slave裝置的address,若與該address相符, 將會回覆ACK給Master裝置,並開始進行Transmit/ Receive

      • 使用10bits address定址:
        Master傳送Start Condition後,之後會先傳送11110、10th Address、
        9th bit Address、1 bit Read/ Write Request,共1Byte的資料至SDA上,
        Slave裝置的address,若與該address相符,將會回覆ACK給Master裝置,
        Master再傳送8th~1th address,共1Byte的資料至SDA上,Slave裝置的address,若與該address相符,將會回覆ACK給Master裝置。

      • Read / Write Request

        • 若Read/ Write Request為low,Addressed Slave將進行Data接收;
        • 若Read/ Write Request為high,Addressed Slave將進行Data傳送;
      • Acknowledge

        • Receiver (Master/ Slave)接收每一Byte Address or Data後,會回覆ACK或NACK給Transmitter((Master/ Slave)),告知Transmitter是否繼續通訊。
      • Clock Stretching:
        Slave利用將SCL維持拉至Low,來暫停通訊,可獲得時間處理接收資料,通常再Acknowledge前或Acknowledge後實施。

      • Stop/ Restart Condition:

        • 若Master想結束通訊,釋放SDA和SCL,使Bus重新處於Idle狀態,可發送Stop Condition (SCL為high時,使SDA由low->high)。
        • 若Master不想釋放SDA和SCL,重新進行Addressed Slave和Read/ Write Request,可再次發送Start Condition,稱之Restart Condition (SCL為high時,使SDA由high->low)。
      • Bus Collision and Arbitration

        • Bus Collision: 當兩個裝置以上,通常為兩個master裝置,同時使用SDA,SCL時,進行資料傳送;當然也有可能是兩個slave裝置(ex:兩個slave設定相同address),但這情況非一般狀況。
      • Arbitration:

        • 確保同時間一個master裝置佔住Bus傳輸的方法,當進行傳輸時,若傳送high準位時,會觀察輸出的準位是否為high,若為low的話,則進行停止傳送;因此,若兩裝置(A,B)同時進行傳送時,其中一裝置A輸出為low準位,另一裝置B輸出為high準位,則裝置A贏得Arbitration,可以確保訊息不被篡改。 (http://www.2cm.com.tw/technologyshow_content.asp?sn=0701010539)