BMA180 acelerómetro puede ser SPI esclavo o I2C esclavo. Los pines de ambos buses son compartidos.
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
De acuerdo a la hoja de datos (ver capítulo 8), la selección entre los autobuses se realiza a través de la CSB pin. Cuando CSB es baja, el dispositivo es un SPI esclavo. Cuando CSB es alta, el dispositivo es un I2C esclavo.
He aquí un modo de fallo, lo que me preocupa. Supongamos, BMA180 es en el bus SPI. También hay otro dispositivo en el mismo bus con su propio chip select. Supongamos, bus SPI maestro se comunica con otro dispositivo. CSB para BMA180 es alta, por lo que es I2C debe ser activa. BMA180 ve reloj bordes en SCL (SPI SCLK) y bits en SDA (SPI MOSI) volando. Qué pasa si algunos de estos bits vistazo a BMA180 como un comienzo de una tarjeta de I2C transacción de lectura, y BMA180 se inicia la salida de datos y clobbers la existente SPI transacción? Cómo sería el diseño de BMA180 evitar eso?
Esta es una cuestión de curiosidad. No he experimentado con estos problemas aún. Voy a estar usando BMA180 en el SPI.
Cualquier sugerencia, idea o referencia es muy apreciada!
La actualización. Encontró algo en la hoja de datos (ver 7.7.11). Se recomienda desactivar el I2C mediante el establecimiento de la dis_i2c
bits, si se está comunicando con BMA180 a través de SPI.
Cuando SPI se utiliza la interfaz, es muy recomendable establecer dis_i2c a 1 para evitar problemas de funcionamiento.
BMA180 se ha incorporado en la memoria EEPROM. Registrar el contenido que puede ser almacenado en la EEPROM y se carga automáticamente en la secuencia de encendido. Así, es posible hacer BMA180 ignorar I2C completamente y para siempre.
La actualización. L3GD20 gyro es otro de los IC, que comparte pines entre I2C y SPI en una manera similar. No parece tener un poco de configuración para deshabilitar el I2C modo. Así, se requeriría de una puerta or como ADXL345 que @markrages.
Heads up! Bosch se detuvo el envío BMA180 (carta oficial aquí).