I2C 10-bit 地址

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位地址设备仍然非常罕见,所以上面列出的限制可能会持续很长时间,甚至可能永远存在,如果没有人需要修复它们。

posted @ 2021-08-20 10:56  闹闹爸爸  阅读(667)  评论(3编辑  收藏  举报