Управление PCF8574 больше 8 штук
- Войдите на сайт для отправки комментариев
Пт, 26/03/2021 - 20:27
Добрый день.
Прошу совета по решению задачи.
Есть такая плата:
PCF8574 + ULN2003
На шине I2C помещаются всего 8 микросхем PCF8574, но требуется увеличить их кол-во в два раза. Адресация по шине этого не позволяет.
Думаю над вариантом коммутации шины, например SCL через какой нибудь 2ине, (555ла3) подключать к одной сборке а затем к другой. SDA запараллелить. Для переключения направлений выделить один пин МК.
Будет ли такая схема работать? Подтяжку нужно поднимать с каждой стороны или на МК это не обязательно?
Управлять планирую Атмегой 328.
возьми PCF8574А, у их адрес другои.
т.е. на шину посадить PCF8574 - 8шт и PCF8574А - 8 шт и адреса разныебудут?
Интересная идея, но PCF8574А нету, так учту.
т.е. на шину посадить PCF8574 - 8шт и PCF8574А - 8 шт и адреса разныебудут?
Да.
Управлять планирую Атмегой 328.
а если взять СТМ32 блюпилл - ничего не надо будет выдумывать, у СТМ-ки две I2c шины
А если взять 328PB - то и STM32 нахер не нужен.
А если взять коммутатор I2C то и 328PB-я не нужна.
А если моЦк есть - то и на 328 пойдёт.
Короче - думать нужно!
На нане отлично работает софтовый i2c, чем и пользуюсь. Спасибо Владу.
Согласен с Ником - software wire вполне себе работает на любых ногах. Не быстро, но устойчиво.
Спасибо за советы.
Поднял софтовый i2c, вроде пока не конфликтуют.
Интересно а софтовая библиотека болеет тем же что и аппаратная? Помеха в шине вешает МК?
У меня не вешает.
i2c в принципе не годится для удаленных модулей, который ты себе явно нарисовал.
Для удаленных согласен. Хотя мнение не однозначное. Как далеко должен быть модуль что бы считаться удаленным?
I2C интерфейс внутрисхемный. Если управляемая схема находится на другой плате - это уже далеко. :)
А если серьёзно, до 2х метров тянет, потом гарантий никаких нет
Я бы сказал, что гарантии заканчиваются уже где-то через 20-25 см. Но на практике сантиметров 40 обычно работает. Даже на повышенной частоте. Вполне вероятно, что на стандартной частоте будет работать и на 2 метрах.
да, я про 100кГц говорил, на 400 на 2м не пройдёт, либо подтяжку надо до 500 Ом уменьшать
Ещё изобретены удлинители I2C... Но, тут требуется задачу рассматривать в целом, со всеми допусками и посадками.
Использовал такие. У них питание на шине поднимается. По витой паре 50м работает гироскоп. Но как он с индукционными помехами работает. пока не проверял.
Как вариант http://arduino.ru/forum/programmirovanie/podklyuchenie-neskolkikh-i2c-ustroistv-s-odinakovymi-adresami-0
Интересный вариант. именно в этом направлении я и хотел решение.
В общем испробовал я вариант с аппаратным и софтовым i2c. Работает, но нужно подтягивать еще одну библиотеку, отнимает малость ресурсов, заметно , что обмен идет медленнее (наверно зависит от автора библиотеки).
Еще попробовал вариант с коммутацией шины SCL. Собрал вот такую схемку:
Для выбора задействован 1 вывод. Используется аппаратный i2c.
на вывод 1-2 подается SCL. Выход соответственно выводы 6 и 8. Выводы 5-12-13 используются для выбора направления.
Есть еще расширитель I2C шины TCA9548A. Расширитель имеет три входа выбора собственного адреса, которые позволяют задать адрес микросхемы в диапазоне 0x70…0x77. Это значит, что мы можем подключить на одну шину I2C восемь расширителей, к каждому из которых может быть подключено по восемь устройств, итого 8×8=64 устройства с одинаковым адресом. Подключал несколько Si7021? все работало прекрасно.
Еще есть PCF8575, в которой 16 линий ввода-вывода.
А ссылочку на эту плату там, где покупали можете прислать ?
Китайские друзья нам в помощь:
https://aliexpress.ru/item/1005001543650987.html?spm=2114.13010708.0.0.5...
https://aliexpress.ru/item/32836090166.html?spm=2114.13010708.0.0.569733...
https://aliexpress.ru/item/4000067621113.html?spm=2114.13010708.0.0.5697...
не в тему, думаю будет интересно:
https://aliexpress.ru/item/32801376577.html?spm=2114.13010708.0.0.569733...
Всем этим увеличивал возможности ESP8266.