Arduino上的不同I2C地址

Different I2C addresses on Arduino?

本文关键字:I2C 地址 Arduino      更新时间:2023-10-16

我为Arduino编写了一个类,用于读取HiTechnic LEGO Mindstorms指南针传感器的指南针数据。

使用Wire库,我可以很好地从各个寄存器中获取数据。在我的Arduino库中,我通过0x01解决传感器问题,有人已经在Arduino论坛上做过了。但在网络上的其他地方(乐高思维风暴的RobotC论坛或本文档底部的代码示例中),它都说,该传感器的I2C地址是0x02

那么,为什么我必须使用地址0x01才能与传感器通信,而其他编程语言似乎是0x02呢?

I2C地址有不同的格式-7或8位。Arduino使用7位格式,因此要将8位地址转换为7位,只需将其右移一位即可。这就是0x02 8位地址转换为0x01 7位地址的方式。

来源:http://arduino.cc/en/reference/wire

"注意:I2C地址既有7位版本,也有8位版本。7位标识设备,第八位确定设备是被写入还是被读取。Wire库始终使用7位地址。如果您有一个使用8位地址的数据表或示例代码,您将希望删除低位(即将值向右移动一位),从而产生0到127之间的地址。"