Акселерометр 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 (SPI's SCLK) и биты на SDA (SPI's MOSI), пролетающие мимо. Что если некоторые из этих битов выглядят для 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 ( официальное письмо здесь ).