• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線的基本操作

    I2C總線的基本操作

    作者: 時間:2011-07-23 來源:網絡 收藏
      上只具有SOL(時鐘)和SDA(數據)2根信號線。如果是單純的串行傳輸,一旦因為某種原因造成引腳的偏差,則可能會造成不能區分總線上傳輸的是數據還是地址信息的后果。解決上述問題的簡單辦法就是附加獨立于總線的Reset(復位)信號,由主機控制該信號。因為I2C至少利用2根線進行所有的操作,因此在數據傳輸時,通常當SCL為低電平時,設置下一個數據;當SDA變化后,SCI為高電平,這可以解釋為一連串操作的開始/結束。

    1. 起始條件

    始條件表示一系列操作的開始。圖1表示起始條件以及隨后數據傳輸的開始操作。在的空閑狀態下,SDA及SCL通過上拉電阻都為高電平。在這樣的狀態下,如果SCL仍保持高電平,而SDA變為低電平,則成為開始指令。

      

    圖1 的起始條件   

    由于該狀態并不出現于地址及數據的發送與接收過程中,因此,即使在途中發生異常,只要檢測出該狀態,初始化內部的狀態機,就可以使其恢復。

    2. 結束條件

    在一系列操作的最后是結束條件。結束條件如圖2所示。當SOL為高電平時,一旦SDA由低電平變化為高電平,即成為結束條件,主機與器件之間的通信將停止,器件恢復為空閑狀態。進行寫操作時的結束狀態是開始進行EEPROM內部單元寫操作的指示標志。

     

    圖2 I2C總線的結束條件   

    結束前所傳輸的數據是ACK/NoACK的狀態位,如果是ACK,則該狀態位為低電平。但如果發生某種錯誤時,則表示為NoACK的高電平。讀操作時的最后字節是主機向器件返回NoˉACK信息,所以SDA為高電平。這樣就不能形成結束條件所需要的SDA的上升沿,因此在結束之前需要加入啞元“0”數據位作為解決辦法。

    在最終數據的ACK NoACK之后,主機通過下述的流程,形成結束條件,如下所述:

    ①SCL變為低電平;

    ②SDA變為低電平;

    ③SOL變為高電平(發送啞元數據);

    ④SDA變為高電平(結束條件)。

    3. 數據傳輸

    數據傳輸的流程如圖3所示。除去開始與結束條件,在傳輸包含地址指定等數據時,能夠使SDA發生變化的條件只能是在SOL為低電平時。因此,總線操作以如下的步驟進行:

    ①SCL變為低電平;

    ②為SDA設置數據(主機或者器件);

    ③SCL變為高電平。

    進行數據讀操作時,主機在SOL恢復為高電平之前讀取數據。

    圖3 I2C總線的數據傳輸



    關鍵詞: I2C總線 基本操作

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 东港市| 特克斯县| 西贡区| 巴中市| 威信县| 措美县| 梓潼县| 江永县| 鸡泽县| 湘阴县| 和林格尔县| 水城县| 冕宁县| 白水县| 巨鹿县| 曲靖市| 凤凰县| 洞头县| 拜泉县| 晋中市| 花莲县| 保山市| 湘潭县| 台北县| 新龙县| 突泉县| 远安县| 商南县| 棋牌| 东乡| 靖宇县| 木里| 长顺县| 岑巩县| 凌云县| 平和县| 天水市| 通城县| 湾仔区| 德庆县| 获嘉县|