Можно ли программно изменить и сохранить адрес I2C?

i2c

Я хочу управлять 3 устройствами i2c на одной линии i2c. Можно ли достичь этого без использования контактов A0,A1,A2? Я думал, что адрес устройств i2c должен быть программно изменяемым. 2 микросхемы mcp23017 и si5351 я использую.

, 👍1

Обсуждение

Некоторые устройства I2C могут программно изменять свои адреса, большинство-нет. В справочнике вам все расскажут. Вы могли бы управлять контактами AX из Arduino, чтобы менять их по своему желанию, но с какой целью?, @Majenko

Почему вы не хотите использовать контакты конфигурации адреса? Именно для этого они и существуют., @Mat

@Mat bc hw designer забыл подключить эти контакты к mcu :( Если бы это было нормально, чтобы изменить программно, это сделало бы мою жизнь проще., @project i2c

Если контакты не подключены аппаратно (оставлены открытыми плавающими), MCP23017 будет показывать неопределенное поведение. Он может случайно менять адреса (даже во время работы), что бесполезно. Эти контакты должны быть соединены правильно., @PMF

@projecti2c: вы не подключаете эти контакты к MCU (в обычных настройках). Вы смотрите на таблицу данных и привязываете их, например, к земле или VCC, в зависимости от того, какой адрес вы хотите. Контакты выбора адреса не меняются во время обычных операций., @Mat


1 ответ


1

Насколько я могу видеть в таблицах данных 2 упомянутых чипов, они не предоставляют способа программно изменить адрес по шине I2C. У них есть только адресные контакты, которые должны быть привязаны к Vcc или земле для установки адреса. Большинство готовых к использованию плат с такими чипами уже имеют для этого съемные или откидные резисторы. Если вы используете пустые фишки, вам абсолютно необходимо привязать адресные контакты к фиксированному значению. Обычно это делается наполовину постоянно.

Вы также можете подключить адресные контакты к выходным контактам Arduino для динамического изменения адресов.

Нет другого способа изменить адреса, кроме как использовать адресные контакты.

,