我正在使用表现出奇怪行为的 LIS3DH 分线板。我的 I2C master 是一块
STM32L496 板,已经用其他 I2C 芯片测试过。
启动
- I2C 初始化至 400 KHz
- 通过 HAL_I2C_IsDeviceReady() 循环扫描所有可能的地址
- 记住地址
- 读取 WHO_AM_I 注册
- 如果是 LIS3DH,写入配置寄存器
如果我将 0x00 写入 CTRL_REG0,则下一次写入或读取是 NACK。
如果我重置 MCU,第 3 步中报告的地址
将更改为 0x10。(因此 NACK)
因此,在
电源循环上,来自第 3 步的地址是 0x30 并且配置后芯片 NACK 的 0x30。
MCU 复位时,第 3 步的地址为 0x10,一切正常。