Специалист
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,753
Репутация: 245
|
Нет, в данном случае речь не идет о вспомогательном диспетчере адресов, наоборот, меня очень даже устраивает, что одно и то же сообщение получат сразу оба девайса на шине (получать какие-либо данные с них не планируется).
Но не ждут ли меня в таком случае проблемы с подтверждениями о приеме посылок? И вообще, насколько колхозно смотрится такое решение, или я напрасно беспокоюсь, и такой фокус-покус в порядке вещей? ЗЫ. Не путать с всеобщим оповещением, т.к. на шине есть и другие девайсы со своими адресами. |
||
Оценка
|
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
|
Подтверждения ACK/NACK реализованы обычно в железе. Поэтому если устройства будут маяковать одновременно, то проблем с односторонней передачей данных master->slave(s) быть не должно.
Но обычно если уж совсем нет возможности сменить хотя бы пару адресных бит, то используют I2C мультиплексоры вроде TCA9548A или трансляторы адресов по типу LTC4316. Последние как раз меняют в адресе пару бит. Но можно всё же ухитриться не использовать мультиплексор даже при двухстороннем обмене для N устройств с одинаковым адресом. Нужно задействовать дополнительно N выводов микроконтроллера. В момент передачи искусственно выставлять 1 на линии SDA для тех устройств, к которым мы не хотим обращаться. Конечно, понадобится N резисторов и диодов, примерно как на схеме ниже.
__________________
Atmel, STM32, ESP32, RTOS, OS-less, C, C++, C#, Visual Studio, IAR, Altium, Micro-Cap, Maple, MatLab, etc. |
||
Оценка
|
Специалист
Регистрация: 26.10.2020
Адрес: Омск
Сообщений: 1,753
Репутация: 245
|
Благодарю за развернутый ответ.
Получается, что TCA9548 - единственное цивилизованное в данном случае решение, т.к. LTC4316 выдает разные адреса девайсов, а они у меня в железе. Заказал на али пару модулей с TCA9548 по 45 руб\шт... и девайсы с адресацией чипидипе. |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |