Arduino как ведомое устройство на шине I2C для чтения данных с других устройств I2C

i2c

Добрый день! Я немного новичок в мире шины I2C. Я пытаюсь реализовать проект, в котором Arduino MEGA является ведущим, а Arduino nano - ведомым. У меня есть несколько датчиков I2C, которые я хочу, чтобы ведомое устройство (Arduino nano) считывало. Пожалуйста, как я могу это реализовать.

, 👍-2

Обсуждение

Я правильно понимаю, что ваш ведомый I2C Nano также должен быть ведущим для датчиков I2C?, @chrisl

UC, имеющий только один аппаратный интерфейс i2c, может быть только ведущим ИЛИ ведомым, но не обоими одновременно., @Sim Son

Спасибо за ответ, теперь понял. Я думаю, что лучшим подходом будет использование других контактов Arduino Nano для подключения датчиков I2C. Но поскольку эти датчики являются датчиками I2C, я считаю, что они не будут работать напрямую с другими контактами, кроме выделенных контактов I2C. Знаете ли вы, как я могу использовать другие контакты Arduino Nano для датчиков I2C?, @Gbouna


1 ответ


0

Arduino может быть как ведущим, так и подчиненным устройством. Страница Ника Гэммона на I2C описывает, как это сделать. http://www.gammon.com.au/i2c

Общение с другими устройствами

Так что все эти возможности I2C — это здорово, вы можете использовать всего два провода (плюс заземление) для связи со 119 устройствами. Но что, если у вас есть устройство (например, клавиатура), которое не поддерживает I2C? Ну, простой ответ заключается в том, что вы можете использовать что-то, что работает в качестве интерфейса. Например, второй Ардуино. Мои примеры выше делают именно это, используя один в качестве основного, а второй для отображения текста на светодиодах.

На самом деле «мастер» также может действовать как ведомый, так как у вас может быть несколько мастеров на одном проводе. В приведенном ниже примере показано, как вы можете отправлять данные с одного Arduino на другой, ожидая отправки информации от второго обратно к первому.

См. ссылку на примеры кода.

,

Поддерживает ли «Wire» арбитраж шины, чтобы можно было выполнять мультимастер без блокировки шины?, @chrisl

Понятия не имею, я редко использовал I2C, предпочитая гораздо более быстрый SPI., @CrossRoads

Спасибо за ваш ответ, я видел, что он сделал, и это было здорово. Однако, поскольку мои датчики являются датчиками I2C, они могут работать не так, как он. Я думаю, что лучшим подходом будет использование других контактов Arduino Nano для подключения датчиков I2C. Но поскольку эти датчики являются датчиками I2C, я считаю, что они не будут работать напрямую с другими контактами, кроме выделенных контактов I2C. Знаете ли вы, как я могу использовать другие контакты Arduino Nano для датчиков I2C?, @Gbouna

Какие у вас датчики? Номера деталей?, @CrossRoads

Датчик приближения, VCNL4040, Датчик времени полета VL6180, @Gbouna

"VCNL4040 применяет один подчиненный адрес 0x60 (HEX) с 7-битной адресацией в соответствии с протоколом I2C. " "VL6180X управляется через интерфейс I2C. Адрес I2C по умолчанию - 0x29 (7-битный)". Итак, два разных адреса. Подключите оба к SDA и SCL, поговорите с одним, затем поговорите с другим., @CrossRoads