Акселерометр 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 спілкується з цим іншим пристроєм. 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 ( офіційний лист тут ).

Відповіді:


14

Я бачив саме поведінку, якої ви боїтесь в ADXL345, який використовує ту ж схему вибору I2C / SPI. У мене був інший пристрій SPI, який використовував різну полярність тактової частоти, і траплялося емулювати стартовий код I2C, ADXL345 намагався говорити по черзі як I2C. Погані новини.

Я ретельно переписав SPI як біт-баг замість використання периферійного пристрою, переконуючись не змінювати лінію MOSI, поки годинник був високим. (Це умова запуску I2C.) Це, здавалося, вирішило речі.

Якби я починав з нуля, я б спробував використовувати замість нього шину I2C або виділений порт SPI для ADXL345.

Мабуть, я не єдиний, хто стикався з цим. Цей параграф з'явився в більш пізній редакції аркуша даних ADXL345:

введіть тут опис зображення


+1 і спасибі! Щойно в аркуші даних виявлено, що BMA180 має біт відключення I2C (див. 7.7.11). Зрозуміло, що BMA180 також має вбудований АБО затвор, і це просто не вказано у таблиці даних прямо.
Нік Алексєєв

1
АБО ворота ефективно відключають режим I2C, тому він не вбудований у чіп. (Якби дизайнер мікросхем міг заощадити додатковий штифт, ситуації можна було б повністю уникнути.)
відмітки

Я не повинен був писати "занадто" в попередньому дописі. Під "занадто" мається на увазі "крім біта відключення I2C". Я також помилявся, що в цій схемі АБО затвор можна назавжди вбудувати в ІК акселерометра. Це б відключило I2C назавжди. Я перепишу цей попередній коментар.
Нік Алексєєв

BMA180 має 3-кратний DNC / зарезервований штифт. Можливо, вони вже використовуються для заводських цілей.
Нік Алексєєв

1
Я помітив, що цифрові акселерометри, як правило, сумісні між собою. Це може пояснити невикористані штифти. Або заводський тест, як ви сказали.
відбитки
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.