7位尋址
在7位尋址過程中,從機地址在啓動信號後的第一個字節開始傳輸,該字節的前7位爲從機地址,第8位爲讀寫位,其中0表示寫,1表示讀。
圖1:7位尋址。I2C總線規範規定,標準模式I2C,從機地址爲7位長,其次是讀/寫位。
任何I2C設備都必須遵循這個標準,USB2XXX傳輸的從機地址即爲這7bit地址,不包含讀寫位,讀寫位會根據不同的函數自動添加進去。
保留地址
I2C規範保留了兩組和8個地址,1111XXX和0000XXX。這些地址用於特殊用途。下表已被取自 I2C規範(2000年)。
從機地址+R/W | 描述 |
0000 0000 | 呼叫地址 |
0000 0001 | 起始字節 |
0000 001X | CBUS地址 |
0000 010X | 保留供不同的總線格式 |
0000 011X | 保留將來用 |
0000 1XXX | HS模式主機碼 |
1111 0XXX | 10位從機地址 |
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地址即可。