BMA180加速度计可以是SPI从机或I 2 C从机。两条总线的引脚是共享的。
SPI mode I2C mode
---------------------------------------------------
SDI input SDA bidirectional (!)
SDO output ADDR address bit, input
SCLK input SCL input
CSB chip select, input I2C mode select, input
根据数据手册(参见第8章),总线之间的选择通过CSB引脚完成。当CSB为低电平时,该器件为SPI从器件。当CSB为高电平时,该器件为I 2 C从器件。
这是我关注的故障模式。假设BMA180在SPI总线上。同一总线上还有另一个具有自己芯片选择的设备。假设SPI总线主设备正在与该另一设备通信。公务员事务局BMA180高,所以它的I 2 C应该允许。BMA180看到SCL(SPI的SCLK)上的时钟沿和SDA(SPI的MOSI)上的位飞过。如果这些位中的某些位像有效的I 2 C读事务的开始一样对BMA180来说是什么,并且BMA180开始输出数据并破坏现有的SPI事务,该怎么办?BMA180的设计将如何防止这种情况?
这是出于好奇。我还没有尝试过这些问题。我将在SPI上使用BMA180。
任何建议,见解或参考都非常感谢!
更新。 在数据表中找到了一些东西(参见7.7.11)。如果通过SPI与BMA180进行通信,建议通过将该位置1来禁用I dis_i2c
2C。
使用SPI接口时,强烈建议将dis_i2c设置为1,以避免出现故障。
BMA180具有内置EEPROM。寄存器内容可以存储在EEPROM中,并在上电时自动加载。因此,它可能使BMA180不理我2下完全并始终。
更新。 L3GD20陀螺仪是另一种IC,它以类似的方式在I 2 C和SPI 之间共享引脚。禁用I 2 C模式似乎没有任何设置。因此,这将需要一个诸如ADXL345之类的OR门,它会打开@markrages。
当心! 博世停止了BMA180的发运(此处为官方信函)。