在我们的系统中,有一个 LSM6DSL 加速度计和 LPS22HH 气压计连接到同一 SPI 总线。
当加速度计的 nCS 置位 (0) 时,气压计的 nCS 置位 (1),反之亦然。
然而,由于 nCS=1(对于两个传感器)也意味着组件在 I2C 模式下工作,出现以下情况(作为示例):
- nCS_Acc = 0, nCS_Baro = 1:尝试与加速度计通信
- MCU (STM32F412) 通过 SPI 通信 - 它使用相关的加速器命令驱动 MOSI 和 SCLK
- 与加速度计同时,现在处于 I2C 模式的气压计在其 SDA 和 SCL 线上接收 MOSI 和 SCLK 信号
- 加速度计按预期对 SDO 响应 MCU MISO
- 现在,如果气压计将与其对等方的 SPI 通信解释为有效的 I2C 地址字节,它会在 SDA 线上进行确认(与 MOSI 共享)并进行总线争用并弄乱两个传感器的通信……
我的问题是:
- 我理解正确还是我监督了什么?
- 我们怎样才能避免这种潜在的争用/通信混乱?