I2C 十位地址

I2C 協議支援兩種裝置地址:常規的 7 位地址和擴充套件的 10 位地址。這兩組地址不相交:7 位地址 0x10 與 10 位地址 0x10 不同(儘管單個裝置可以同時響應兩者)。為避免歧義,使用者會看到 10 位地址對映到不同的地址空間,即 0xa000-0xa3ff。字首 0xa(= 10)表示 10 位模式。這用於在 sysfs 中建立裝置名稱。透過 sysfs 中的 new_device 檔案例項化 10 位裝置時也需要它。

往返於 10 位地址裝置的 I2C 訊息具有不同的格式。詳細資訊請參閱 I2C 規範。

當前對 10 位地址的支援是最小化的。它應該能工作,但你可能會遇到一些問題。

  • 並非所有匯流排驅動程式都支援 10 位地址。有些不支援是因為硬體不支援(例如 SMBus 不要求支援 10 位地址),有些不支援是因為沒人費心新增程式碼(或者程式碼存在但無法正常工作)。已知軟體實現(i2c-algo-bit)是可用的。

  • 某些可選功能不支援 10 位地址。例如,驅動程式對裝置的自動檢測和例項化就是這種情況。

  • 許多使用者空間軟體包(例如 i2c-tools)缺少對 10 位地址的支援。

請注意,10 位地址裝置仍然相當罕見,因此上述限制可能會長期存在,如果沒人需要修復它們,甚至可能永遠存在。