Мой BMA421 заперт?
Я пытался настроить датчик движения BMA421 в смарт-часах на базе nrf52, используя спецификацию для BMA423, который имеет тот же интерфейс. У меня был датчик, хорошо работающий с оригинальным исходным кодом, но я пытался настроить его сам. Он подключен через I2C, адрес 0x18.
Я допустил несколько ошибок в своем первоначальном коде. Я пытался инициализировать чип потоком байт 6 Кб (как в первоисточнике), кусками по 64 байта. Я не отправлял регистр повторно в начале каждого блока данных, поэтому в итоге записывал байты в случайные регистры.
К сожалению, мне удалось привести датчик в неисправимое состояние - теперь он возвращает 0xFF для всех считываний и не реагирует на код мягкого сброса (регистр 0x7E=0xB6). Даже истощение батареи часов для питания чипа, похоже, не помогает.
Я нашел кого-то с похожей проблемой на форуме Borsch Sensortec, поэтому надеюсь, что полный разряд батареи сработает.
Есть ли у кого-нибудь еще какие-нибудь предложения?
@Mark Williams, 👍-1
Обсуждение1 ответ
Лучший ответ:
БМА-421 не был заперт. Ошибочная запись в неправильный регистр переключила его на (несуществующий) SPI-интерфейс. Решение состояло в том, чтобы включить питание датчика.
- OVF в последовательном мониторе вместо данных
- Какой правильный способ запроса устройства I2C из процедуры обслуживания прерывания?
- Использование MPU-6050 без I2C
- Как подключить несколько акселерометров MMA8451 (протокол I2C) с помощью одного Arduino Mega
- MPU-6050 с Arduino – вскрытие
- Акселерометр AtTiny85 и MMA8452Q не могут подключиться с помощью i2c
- Попытка использовать акселерометр I2C и SPI OLED
- Подключение нескольких модулей I2C к микроконтроллеру последовательно или параллельно?
Вы используете I2C или SPI? SPI не имеет адресов, но у каждого ведомого устройства есть контакт выбора чипа. С другой стороны, I2C имеет адреса и не имеет контакт выбора чипа., @chrisl
Извините, исправили - это I2C., @Mark Williams
В настоящее время мой план действий-разрядить аккумулятор, а затем оставить на неделю, чтобы посмотреть, смогу ли я сбросить чип. Не слишком оптимистично., @Mark Williams
Предложение из другого источника состояло в том, что я перевел устройство в режим SPI и отключил его от шины I2C - это, безусловно, объяснило бы результат., @Mark Williams
хорошая мысль. Из-за "разряженной батареи" я предполагаю, что аппаратное обеспечение в основном интегрировано, так что вы не можете просто попробовать подключить SPI и снова настроить его поверх этого?, @chrisl
Это, к сожалению, верно. Это готовые смарт-часы, которые нельзя открывать! Как только он будет запущен с шины I2C, пути назад не будет до тех пор, пока не завершится цикл питания. Я спрашиваю здесь, потому что у меня есть работающая прошивка Arduino, запущенная на ней для тестирования периферийных устройств. Положительным моментом является то, что если бы я переключил его в режим SPI, я вряд ли перезаписал бы NVRAM!, @Mark Williams