<rp id="xv4zz"></rp>

<tbody id="xv4zz"><pre id="xv4zz"></pre></tbody>
  • <dd id="xv4zz"><pre id="xv4zz"></pre></dd>
  • 技術文檔

    IIC/I2C從地址之7位,8位和10位詳解

    2019-03-06 12:04:09 羅偉東

    概述

    經常有用戶問我,使用USB2XXX的USB2IIC功能的時候,從機地址應該怎么傳遞的問題,這個問題的根源在于不同的I2C從機廠商采用了不同的I2C總線地址約定,導致在說I2C總線的時候總是容易搞混,本文主要針對這個問題對I2C總線地址進行詳細的說明。


    7位尋址

    在7位尋址過程中,從機地址在啟動信號后的第一個字節開始傳輸,該字節的前7位為從機地址,第8位為讀寫位,其中0表示寫,1表示讀。

    1551840608183172.png


    圖1:7位尋址。I2C總線規范規定,標準模式I2C,從機地址為7位長,其次是讀/寫位。


    任何I2C設備都必須遵循這個標準,USB2XXX傳輸的從機地址即為這7bit地址,不包含讀寫位,讀寫位會根據不同的函數自動添加進去。


    保留地址

    I2C規范保留了兩組和8個地址,1111XXX和0000XXX。這些地址用于特殊用途。下表已被取自 I2C規范(2000年)。

    從機地址+R/W描述
    0000 0000呼叫地址
    0000 0001起始字節
    0000 001XCBUS地址
    0000 010X保留供不同的總線格式
    0000 011X保留將來用
    0000 1XXXHS模式主機碼
    1111 0XXX10位從機地址
    1111 1XXX保留將來用


    8位地址

    一些廠商在提供從機地址的時候說的是包含了讀寫位的8bit地址,比如他說寫地址為0x92,讀地址為0x93,如下圖所示

    圖片關鍵詞


    圖2: 8位尋址


    這種情況下,你只需要將這個地址的前7bit提取出來,然后傳入USB2XXX的接口函數即可,比如為0x49。


    還有一種方式可以判斷廠商提供的地址是7bit模式地址還是8bit地址模式的地址,7bit地址模式下,地址的取值范圍在0x07到0x78之間,若超過了這個范圍,那么這個地址可能就是8bit地址。

    圖片關鍵詞

    圖3:有效的7bit地址范圍


    10位尋址

    I2C總線的10bit尋址和7bit尋址是兼容的,這樣就可以在同一個總線上同時使用7bit地址和10bit地址模式的設備,在進行10bit地址傳輸時,第一字節是一個特殊的保留地址來指示當前傳輸的是10bit地址。

    圖片關鍵詞

    圖4:10bit地址尋址


    在使用USB2XXX傳輸10bit地址模式的時候,只需要在初始化的時候配置為10bit地址模式,然后再調用讀寫數據函數的時候傳入正確的10bit地址即可。


    參考資料

    《I2C總線規范和用戶手冊》


    免看黄大片APP视频