新聞中心

        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總線 基本操作

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 明溪县| 右玉县| 诸城市| 剑川县| 普格县| 乐陵市| 大邑县| 交城县| 临海市| 盐亭县| 瑞丽市| 林芝县| 定州市| 灵武市| 额敏县| 泽库县| 乐至县| 翁源县| 泗水县| 绥中县| 镇巴县| 饶平县| 长沙县| 阜新市| 南木林县| 微山县| 牙克石市| 内江市| 崇义县| 泾川县| 上犹县| 河北省| 揭东县| 和政县| 永吉县| 巨野县| 黄冈市| 文昌市| 年辖:市辖区| 子长县| 深水埗区|