L'accéléromètre BMA180 peut être esclave SPI ou esclave I 2 C. Les broches des deux bus sont partagées.
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
Selon la fiche technique (voir chapitre 8) , la sélection entre les bus se fait via la broche CSB. Lorsque CSB est faible, l'appareil est un esclave SPI. Lorsque CSB est élevé, l'appareil est un esclave I 2 C.
Voici un mode d'échec qui m'inquiète. Supposons que le BMA180 se trouve sur le bus SPI. Il y a aussi un autre appareil sur le même bus avec sa propre sélection de puce. Supposons que le maître du bus SPI communique avec cet autre périphérique. CSB pour BMA180 est élevé, c'est donc I 2 C qui devrait être activé. Le BMA180 voit les fronts d'horloge sur SCL (SCLK de SPI) et les bits sur SDA (MOSI de SPI) passer. Que se passe-t-il si certains de ces bits ressemblent à BMA180 comme le début d'une transaction de lecture I 2 C valide et si BMA180 commence à sortir des données et à assimiler la transaction SPI existante? Comment la conception du BMA180 empêcherait-elle cela?
C'est une question de curiosité. Je n'ai pas encore expérimenté ces problèmes. J'utiliserai BMA180 sur SPI.
Toute suggestion, idée ou référence est vraiment appréciée!
Mise à jour. J'ai trouvé quelque chose dans la fiche technique (voir 7.7.11) . Il recommande de désactiver I 2 C en réglant le dis_i2c
bit, si vous communiquez avec BMA180 via SPI.
Lorsque l'interface SPI est utilisée, il est fortement recommandé de définir dis_i2c sur 1 pour éviter tout dysfonctionnement.
Le BMA180 possède une EEPROM intégrée. Le contenu du registre peut être stocké dans l'EEPROM et automatiquement chargé lors de la mise sous tension. Il est donc possible de faire ignorer complètement et toujours I 2 C au BMA180 .
Mise à jour. Le gyroscope L3GD20 est un autre CI, qui partage les broches entre I 2 C et SPI de manière similaire. Il ne semble pas avoir un peu de réglage pour désactiver le mode I 2 C. Donc, cela nécessiterait une porte OU comme ADXL345, que @markrages a évoquée.
La tête haute! Bosch a cessé d'expédier le BMA180 ( lettre officielle ici ).