Как подключить MPU9250 к NodeMCU с помощью SPI или I2C Slave?

Я хочу подключить 3 датчика MPU9250, но так как шина I2C всего одна, то есть еще 2 датчика, которые я хочу подключить через SPI.

Используемая библиотека — https://github.com/bolderflight/MPU9250/blob/ master/examples/Basic_SPI/Basic_SPI.ino

Написан пример кода SPI, но я не знаю о соединениях. На датчике, который я использую, нет MISO и других контактов, но он совместим с SPI. Как подключить 2 MPU9250 к NodeMCU с помощью SPI?

Если соединение SPI невозможно, опубликуйте сообщение о подчиненном соединении I2C.

, 👍2

Обсуждение

I2C-адрес MPU-9250 будет 0x68, если контакт AD0 заземлен, или 0x69, если контакт AD0 имеет высокий уровень. Итак, их 2. Третий был бы более сложным, хотя вы могли бы использовать 2 i2c и 1 spi. Вы также можете просто использовать 2-ю пару контактов для запуска дополнительной шины i2c к 3-му датчику, создать экземпляр другого экземпляра Wire (передав ему номера контактов) и передать этот экземпляр провода конструктору MPU9250FIFO., @dandavis

если вы работаете над датчиком, вам следует сначала прочитать его техническое описание, а не использовать какую-либо библиотеку Arduino., @Vaibhav


3 ответа


1

Для подключения нескольких компонентов SPI вам потребуется всего 4 контакта на каждом "ведомом" устройстве (то есть на датчиках): SLCK, MOSI, MISO и SS (выбор подчиненного устройства).

Вывод выбора ведомого устройства зависит от того, с каким мастером (в вашем случае NodeMCU) «тоже разговаривает». Таким образом, на вашем NodeMCU у вас будет 3 контакта SS (по одному на каждый подчиненный датчик). NodeMCU должен одновременно взаимодействовать только с одним ведомым устройством, установив для этого контакта SS НИЗКИЙ уровень (в то время как другие контакты SS имеют высокий уровень).

Полную статью см. на странице Multiple-SPI-devices-to. -микроконтроллер Arduino.

,

Я загрузил изображение датчика, какой контакт в данном случае SCLK, MOSI, MISO и SS?, @suu

Это подчиненные устройства I2C, SPI — это совершенно другой протокол., @Michel Keijzers

Можете ли вы опубликовать ответ о подключении 3 датчиков mpu9250 с ведомым устройством i2c? Спасибо пока, @suu

У меня нет большого опыта работы с I2C, я думаю, что SDA и SCL - это соединение/контакты I2C по умолчанию, поэтому используйте их., @Michel Keijzers


1

Выводы MPU-9250 должны быть подключены следующим образом:

--Vcc: это должен быть источник питания от 2,4 до 3,6 В.

--GND: земля.

--FSYNC: не используется, должен быть заземлен.

--SDA/SDI: подключение к MOSI.

--SCL/SCLK: подключение к SCK.

--AD0/SDO: подключение к MISO.

--nCS: подключиться к контакту выбора чипа (любой цифровой контакт, но в вашем примере это PIN 10).

Кроме того, вы можете проверить соединение с:

https://learn.sparkfun.com/tutorials/mpu-9250 -hookup- guide?_ga=1.139382715.926858641.1470020364

,

2

Если вы хотите использовать SPI-

Домашняя страница библиотеки, о которой вы упомянули, четко объясняет соединения цепей.-

Выводы MPU-9250 должны быть подключены следующим образом:

  • VDD: это должен быть источник питания с напряжением от 2,4 В до 3,6 В.
  • Земля: земля.
  • VDDI: напряжение питания цифрового ввода/вывода. Оно должно быть между 1,71 В и ВДД.
  • FSYNC: не используется, должен быть заземлен.
  • INT: (необязательно) используется для настройки выхода прерывания в enableDataReadyInterrupt и enableWakeOnMotion. Подключиться к прерываемый вывод на микроконтроллере.
  • SDA/SDI: подключение к MOSI.
  • SCL/SCLK: подключение к SCK.
  • AD0/SDO: подключение к MISO.
  • nCS: подключение к контакту выбора чипа. Пин 10 использовался во фрагментах кода. в этом документе и во включенных примерах, но любой цифровой контакт ввода-вывода можно использовать.
  • AUXDA: не используется.
  • AUXCL: не используется.

Вывод nCS (выбор чипа) каждого датчика должен быть подключен к выводу выбора подчиненного устройства (любому цифровому выводу) на NodeMCU. Это позволяет NodeMCU выбирать, с каким датчиком он хочет взаимодействовать.

Еще один простой способ подключения нескольких датчиков с одним и тем же адресом I2C — использование мультиплексора I2C, такого как Adafruit TCA9548A Мультиплексор I2C TCA9548 Это позволит вам подключить до 8 датчиков с одинаковым адресом I2C. Вот видео на YouTube, объясняющее, как это сделать.

Однако, если вы просто хотите подключить два MPU9250, вам не нужно ничего делать, так как плата предлагает два уникальных адреса через контакт AD0-

  • 0x68, если AD0 заземлен
  • 0x69, если AD0 получает высокий уровень
,