This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652R7:I2C 通信,使用8位地址模式

Guru**** 633810 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1182069/cc2652r7-i2c-communication-use-8-bit-address-mode

你(们)好

我正在尝试从 STM 连接 VL53L1X 传感器。 传感器使用8位地址模式。 我需要使用地址0x52进行写入、使用0x53进行读取。 因此、我需要写入地址0b01010010来向传感器写入一些内容。 但是、在检查时、写入的地址为0b1010010。

如何将地址格式更改为8位? 是否有任何方法可以使用此传感器进行读写?

我还想在控制器上实现 I2C 扫描仪。 这种情况的一般流程是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    μ I²C 传输的第一个字节由7位地址和 R/W 位组成。 这个字节通常被称为"地址字节"、但严格地说、这是错误的。

    μ I²C 地址始终为7位。 没有8位地址模式。 0x52和0x53是第一个字节的值、但将它们称为地址(正如 VL53L1X 数据表所做的那样)会产生误导。

    该传感器的地址为0101001 = 0x29。

    (有些硬件模块或库在其软件接口中结合了地址和 R/W 位、因此必须使用0x52/0x53。 但这显然不适用于您。)


    要实现 μ I²C 扫描仪、请在第一个(地址+ R/W)字节后运行零数据字节的写入事务、并对所有有效地址执行此操作。 (地址0…7和120…127无效。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    明白了、谢谢。

    还有一个问题、在 I2C API 中、我们提到了地址

    i2cTransaction_l.slaveAddress = address;

    那么、'address'的值应该为0x29? 底层软件将自行处理读/写位?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vivek、

    您的理解是正确的。  您还可以参阅 TI 驱动程序运行时 APITI 驱动程序 I2C 示例的 I2C.h 参考

    此致、
    Ryan