Акселерометр 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 спілкується з цим іншим пристроєм. CSB для BMA180 високий, тому I 2 C повинен бути включений . BMA180 бачить ребра годинника на SCL (SPL's SCLK) і біти на SDA (MOSI SPI), що летить мимо. Що робити, якщо деякі з цих бітів виглядають на BMA180 як початок дійсної транзакції з читання I 2 C, а BMA180 починає виводити дані та клобувати існуючу транзакцію SPI? Як би дизайн BMA180 не допустив цього?
Це питання цікавості. Я ще не експериментував з цими питаннями. Я буду використовувати BMA180 на SPI.
Будь-яка пропозиція, розуміння чи посилання дуже цінується!
Оновлення. Знайдено щось у таблиці даних (див. 7.7.11) . Він рекомендує відключити I 2 C, встановивши dis_i2c
біт, якщо спілкуватися з BMA180 через SPI.
Якщо використовується інтерфейс SPI, настійно рекомендується встановити dis_i2c на 1, щоб уникнути несправностей.
BMA180 має вбудований EEPROM. Вміст реєстру може зберігатися в EEPROM та автоматично завантажуватися при послідовності включення живлення. Отже, можна змусити BMA180 ігнорувати I 2 C повністю і завжди.
Оновлення. Гіроскоп L3GD20 - це ще один ІС, який поділяє шпильки між I 2 C та SPI аналогічно. Здається, не встановлено трохи налаштувань для відключення режиму I 2 C. Отже, для нього знадобиться АБО ворота типу ADXL345, який @markrages підняв.
Голова вгору! Bosch припинив доставку BMA180 ( офіційний лист тут ).