Управление PCF8574 больше 8 штук

Mizar
Offline
Зарегистрирован: 23.12.2018

Добрый день.

Прошу совета по решению задачи.

Есть такая плата:

PCF8574 + ULN2003

На шине I2C помещаются всего 8 микросхем PCF8574, но требуется увеличить их кол-во в два раза. Адресация по шине этого не позволяет.

Думаю над вариантом коммутации шины, например SCL через какой нибудь 2ине, (555ла3)  подключать к одной сборке а затем к другой. SDA запараллелить. Для переключения направлений выделить один пин МК.

Будет ли такая схема работать? Подтяжку нужно поднимать с каждой стороны или на МК это не обязательно?

Управлять планирую Атмегой 328.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

возьми PCF8574А, у их адрес другои.

Mizar
Offline
Зарегистрирован: 23.12.2018

т.е. на шину посадить PCF8574 - 8шт   и PCF8574А - 8 шт и адреса разныебудут?

Интересная идея, но PCF8574А нету, так учту.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Mizar пишет:

т.е. на шину посадить PCF8574 - 8шт   и PCF8574А - 8 шт и адреса разныебудут?

Да. 

b707
Offline
Зарегистрирован: 26.05.2017

Mizar пишет:

Управлять планирую Атмегой 328.

а если взять СТМ32 блюпилл - ничего не надо будет выдумывать, у СТМ-ки две I2c шины

-NMi-
Offline
Зарегистрирован: 20.08.2018

А если взять 328PB - то и STM32 нахер не нужен.

А если взять коммутатор I2C то и 328PB-я не нужна.

А если моЦк есть - то и на 328 пойдёт.

Короче - думать нужно!

nik182
Offline
Зарегистрирован: 04.05.2015

На нане отлично работает софтовый i2c, чем и пользуюсь. Спасибо Владу.

sadman41
Offline
Зарегистрирован: 19.10.2016

Согласен с Ником - software wire вполне себе работает на любых ногах. Не быстро, но устойчиво.

Mizar
Offline
Зарегистрирован: 23.12.2018

Спасибо за советы. 

Поднял софтовый i2c, вроде пока не конфликтуют.

Интересно а софтовая библиотека болеет тем же что и аппаратная? Помеха в шине вешает МК?

nik182
Offline
Зарегистрирован: 04.05.2015

У меня не вешает.

rkit
Offline
Зарегистрирован: 23.11.2016

i2c в принципе не годится для удаленных модулей, который ты себе явно нарисовал.

Mizar
Offline
Зарегистрирован: 23.12.2018

Для удаленных согласен. Хотя мнение не однозначное. Как далеко должен быть модуль что бы считаться удаленным? 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

I2C интерфейс внутрисхемный. Если управляемая схема находится на другой плате - это уже далеко.  :) 

А если серьёзно, до 2х метров тянет, потом гарантий никаких нет 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я бы сказал, что гарантии заканчиваются уже где-то через 20-25 см. Но на практике сантиметров 40 обычно работает. Даже на повышенной частоте. Вполне вероятно, что на стандартной частоте будет работать и на 2 метрах.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

да, я про 100кГц говорил, на 400 на 2м не пройдёт, либо подтяжку надо до 500 Ом уменьшать

sadman41
Offline
Зарегистрирован: 19.10.2016

Ещё изобретены удлинители I2C... Но, тут требуется задачу рассматривать в целом, со всеми допусками и посадками.

Mizar
Offline
Зарегистрирован: 23.12.2018

sadman41 пишет:
Ещё изобретены удлинители I2C... Но, тут требуется задачу рассматривать в целом, со всеми допусками и посадками.

Использовал такие. У них питание на шине поднимается. По витой паре 50м работает гироскоп. Но как он  с индукционными помехами работает. пока не проверял.

svm
Offline
Зарегистрирован: 06.11.2016
Mizar
Offline
Зарегистрирован: 23.12.2018

Интересный вариант. именно в этом направлении я и хотел решение.

В общем испробовал я вариант с аппаратным и софтовым i2c. Работает, но нужно подтягивать еще одну библиотеку, отнимает малость ресурсов, заметно , что обмен идет медленнее (наверно зависит от автора библиотеки).

Еще попробовал вариант с коммутацией шины SCL. Собрал вот такую схемку:

Для выбора задействован 1 вывод. Используется аппаратный i2c.

на вывод 1-2 подается SCL. Выход соответственно  выводы 6 и 8. Выводы 5-12-13 используются для выбора направления. 

Ralgxi
Offline
Зарегистрирован: 16.08.2021

Есть еще расширитель I2C шины  TCA9548A.  Расширитель имеет три входа выбора собственного адреса, которые позволяют задать адрес микросхемы в диапазоне 0x70…0x77. Это значит, что мы можем подключить на одну шину I2C восемь расширителей, к каждому из которых может быть подключено по восемь устройств, итого 8×8=64 устройства с одинаковым адресом. Подключал несколько Si7021? все работало прекрасно.

Еще есть PCF8575, в которой 16 линий ввода-вывода.

inspiritus
Онлайн
Зарегистрирован: 17.12.2012

А ссылочку на эту плату там, где покупали можете прислать ?

Ralgxi
Offline
Зарегистрирован: 16.08.2021