MPU-9250 IMU на SPI, внешнем датчике или магнитометре с использованием мастера I2C

i2c spi mpu6050 magnetometer

Я пытаюсь (для спорта...) использовать MPU-9250 в режиме SPI, поскольку он должен быть быстрее, и не смог связаться со встроенным магнитометром в моем коде.

Я просмотрел документацию (RM-MPU-9250A-00 v1.4), которая немного спартанская по этому вопросу, но дает общее представление о том, что она должна работать, если включить встроенную основную функцию I2C и использовать «прокси» регистры I2C; Я пытался «делать, как он говорит», чтобы связаться с магнитометром; Я запрашиваю регистр идентификации магнитометра и вижу там только 0x00.

Я искал в природе и не смог найти пример программного обеспечения F/LOSS с использованием внешнего датчика, подключенного к микропроцессору.

Возможно, я сделал что-то не так, но я этого не вижу, так что вот бутылка в океане :)

, 👍-1

Обсуждение

Зачем вам нужно включать мастер I2C, если вы хотите использовать SPI? Это просто кажется неправильным, как будто у автора документа был плохой день. Можете ли вы поискать и посмотреть, есть ли какие-либо другие доказательства того, что это правильный поступок,, @Code Gorilla

Микросхема IMU может действовать как мастер I2C для связи с нижестоящими устройствами I2C..., @cJ Zougloub


1 ответ


1

Получается, что моя ошибка была в коде связи SPI, но тем не менее здесь есть некоторая информация, потому что она не очень очевидна.

Я переборщил и:

  • Проверьте электрический интерфейс, чтобы убедиться, что моя микросхема случайно не подключена. Все было хорошо.
  • Включил обратное чтение регистра и увидел, что... ой, это было плохо.
  • Просматривая PS-MPU-9250A-01 § 7.5 Интерфейс SPI, я обнаружил, что допустил глупую ошибку копирования и вставки в своем коде... при копировании кода чтения в код записи I забыл настроить MSB первого spi-байта.

Затем:

  • I2C_MST_P_NSR=1 кажется важным, иначе мы получим нули
  • базовая конфигурация здесь, в настоящее время используется прокси-сервер I2C для чтения магнитометра, и я не люблю спать, ожидая передачи I2C или нет, но это WIP, и код никуда не денется.
,

принять ваш собственный ответ, @esoterik