BMA180加速度计。如何在I2C和SPI之间共享引脚?


11

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_i2c2C。

使用SPI接口时,强烈建议将dis_i2c设置为1,以避免出现故障。

BMA180具有内置EEPROM。寄存器内容可以存储在EEPROM中,并在上电时自动加载。因此,它可能使BMA180不理我2下完全并始终。

更新。 L3GD20陀螺仪是另一种IC,它以类似的方式在I 2 C和SPI 之间共享引脚。禁用I 2 C模式似乎没有任何设置。因此,这将需要一个诸如ADXL345之类的OR门,它会打开@markrages。

当心! 博世停止了BMA180的发运(此处为官方信函)。

Answers:


14

在使用相同的I2C / SPI选择方案的ADXL345上,我已经确切地看到了您担心的行为。我还有另一个使用不同时钟极性的SPI器件,它恰好模拟了I2C起始代码,ADXL345尝试不按I2C的顺序说话。坏消息。

我小心地将SPI改写为bang而不是使用外设,确保在时钟较高时不要更改MOSI线。(这是I2C启动条件。​​)这似乎可以解决问题。

如果我从头开始,我会尝试使用I2C总线或ADXL345的专用SPI端口。

显然,我不是唯一遇到这种情况的人。本段出现在ADXL345数据表的更高版本中:

在此处输入图片说明


+1,谢谢!刚在数据表中发现BMA180具有I2C禁用位(见7.7.11)。可以想象的是,BMA180也具有内置的“或”门,只是在数据表中没有明确提及。
尼克·阿列克谢耶夫

1
或门有效地禁用了I2C模式,因此它没有内置在芯片中。(如果芯片设计人员
可以省去

我不应该在上一篇文章中写过“太”。“太”的意思是“除了I2C禁用位”。我也错了,在这种方案中,“或”门可以永久地内置在加速度计IC中。这将永远禁用I2C。我将重写先前的评论。
尼克·阿列克谢耶夫

BMA180具有3个DNC /保留引脚。可能是,它们已经用于工厂用途。
尼克·阿列克谢耶夫

1
我注意到,数字加速度计往往彼此引脚兼容。这可能解释了未使用的引脚。还是像您说的那样进行工厂测试。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.