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

    EEPW首頁 > 嵌入式系統 > 設計應用 > CoolRunner-Ⅱ器件的I2C接口主狀態機

    CoolRunner-Ⅱ器件的I2C接口主狀態機

    作者: 時間:2011-12-22 來源:網絡 收藏
    I2C接口如圖所示。

    I2C接口主狀態機



      如圖 I2C接口
      無論是主模式,還是從模式,狀態機都是相同的。在每個狀態,模式都會被檢測,以決定輸出和下一個狀態。如果仲裁失敗或 I2C控制器被確定為從模式,控制器會自動由主模式切換到從模式。

      此狀態機用到一個位計數器和兩個移位寄存器,位計數器對從總線上接收到的位進行計數,其中一個移位寄存器用來存儲I2C的HEADER;另一個用來存儲接收到的數據或待發送的數據。

      當檢測到START信號時,狀態機進入HEADER狀態。在HEADER狀態,如果是主模式,MBDR寄存器中的HEADER被發送。當所有8位數據發送完畢時,狀態機轉入ACK HEADER。

      在ACK_HEADER狀態,如果CoolRunner-II I2C控制器工作在主模式,將會采樣SDA,以確認從設備是否有應答。如果沒有應答,狀態轉入STOP;如果有應答,LSB=1時進入RCV_DATA, LSB=0時進入XMIT_DATA。

      I2C Header移位寄存器與MADR進行比較,如果匹配,則CoolRunner-II I2C為被尋址的從設備。模式立刻切換到從模式,狀態寄存器MBSR中MAAS位被置位,SDA線將會按照TXAK中的設置應答當前主設備。
    在RCV_DAT狀態,SDA數據被入I2C移位寄存器,以供uC讀取。當所有數據位被接收到,狀態機轉入ACK_DATA,TXAK被輸出到SDA。

      在XMIT_DATA狀態,MBDR寄存器中數據被送到SDA.當發送整的字節后,狀態轉入WAIT_ACK.如果檢測到ACK,則狀態再次進入XMIT_DATA,直到產生STOP條件或沒有收到ACK條件.必須注意提,在數據傳輸過程中uC速率必須跟上I2C控制器收發數據的速率.如果中斷使能,則當一個字節的數據發送或接由結束時就會產生一個中斷,MCF位將會被置位.在ACK狀態,數據在uC和控制器之間轉輸。在此過程中,I2C控制器不會等待uC操作。

      如果Coo1Runner-ⅡI2C工作在主模式,在STOP狀態告知SCL/START/STOP發生器產生一個STOP條件,最后狀態進入IDLE。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 青冈县| 邹城市| 平泉县| 密云县| 宁南县| 绥棱县| 海兴县| 久治县| 奉贤区| 商水县| 鄢陵县| 恭城| 花莲市| 新竹市| 嘉兴市| 黄梅县| 凤凰县| 勃利县| 盱眙县| 林西县| 泸西县| 宜州市| 平凉市| 河南省| 吉木萨尔县| 达日县| 邢台县| 新和县| 长岭县| 大兴区| 东丰县| 海门市| 凤城市| 开封市| 长宁区| 库伦旗| 萨迦县| 凉城县| 中牟县| 衡阳县| 苍南县|