Знаток
Регистрация: 06.12.2009
Сообщений: 824
Репутация: 114
|
Здравствуйте
Имеется цепочка приборов, работающая по I2C. Все приборы визуально полностью одинаковые. Устройство переносное и разборное. Т.е. из разу в раз его в той же поледовательности не получится собрать. Получается, что жестко забить адреса I2C в МК не выйдет. Как вариант, думал добавить в линии UART, и последовательно соединить. Алгоритм такой
Но такой метод не подходит, так как уже есть шлейф между устройствами на 4 провода. Только на питание и I2C. Где-то слышал ,что с помощью Unique ID , можно как-то реализовать. Правда пока не понимаю каким образом (. |
||
Оценка
|
Знаток
|
Помимо линии I2C выделите модулю 2 GPIO: Input и Output.
1) Когда модуль получает на Input лог. 1, то он готов к получению адреса. 2) Он начинает перекличку всех возможных адресов по порядку как мастер. И тот адрес, который не ответил, будет для него свободен. 3) После получения адреса на Output выставляется лог. 1 - следующий модуль, получай адрес. И так хоть 127 модулей можно в баян нацепить)
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим |
||
Оценка
|
Знаток
|
Всего 4 провода и питание нельзя коммутировать? Однако непросто. Загалдят как мастера все, с арбитражом замучишься.
Как вариант, при подаче питания, каждый модуль с рандомной задержкой получает адрес. У одного модуля, допустим, рандомно выпало получить адрес через 320 мс, у другого через 17 мс. Вам бы тут CAN пригодился, а не I2C или тем более UART
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим |
||
Оценка
|
Новичок
Регистрация: 04.06.2011
Сообщений: 47
Репутация: 37
|
- вы можете и хотите перепрограммировать адреса I2C в приборах или каждый прибор уже имеет прошитый адрес I2C?
- что вы можете перепрограммировать? только МК, который опрашивает по I2C приборы? можете ли перепрограммировать и имеете ли программы МК приборов? |
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 824
Репутация: 114
|
Доступ к прошивкам есть, хотелось бы без конструктивных изменений это все сделать, сохраняя I2C линию.
Цитата:
Грубо говоря, лежат 10 прибором , один за одним. Нужно чтобы адреса раставились по возрастанию, 1...10 |
||
Оценка
|
Новичок
Регистрация: 04.06.2011
Сообщений: 47
Репутация: 37
|
Цитата:
теоретически сделать можно, но дорого, с серьезными аппаратными наворотами, хотя бы со стороны МК мастера: -всем МК приборов по включении одинаковый адрес А, но разный идентификатор (1 байт) ID, -последовательно посылать A,ID[i] -если есть ответ, МК с таким ID присутствует, -этот МК переводится из I2C в режим ВХОД по одной линии, на выход по другой, -мастер передает короткий импульс и ждет ответа по одной линии, -МК возвращает импульс по другой линии -а тут и аппаратная часть у мастера - измерение времени передачи-возврата импульса. полученное время записывается для данного ID как присваивать адреса, понятно. измерение времени - ИС TDC GP22, разница должна быть хотя бы метры, разрешение менее 100пс, вопрос, смогут ли стабильно с таким разрешением отвечать ваши устройства в приборах: МК работают с тактированием, например, 100нс, поэтому возвращать импульс надо через логику или замыкание линий I2C. сомнительно, что игра стоит свеч. |
||
Оценка
|
Знаток
|
Используется одна шина I2C, 4 провода: GND, Vdd, SDA, SCL.
Есть, как мы видим из сообщений выше, как минимум, 4 способа решения вашей задачи: 1) Коммутировать VDD: модуль 1 не дает питание модулю 2 пока не получит адрес. 2) ЗоД. И это не генерал из супермена, и не заболевание органов дыхания, а нечто позволяющее с помощью механического ключа соблюдать предопределенную последовательность подключения модулей. Я, видимо, из числа "особо одаренных", и не смогу дать детальное объяснение. 3) Использовать 1-wire, так освободится линия, которая будет служить арбитром при получении адресов. 4) Использовать джамперы или DIP switch на каждом модуле для ручной установки адреса. 5) Использовать софтовую настройку адреса для каждого модуля.
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим |
||
Оценка
|
Гуру
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 8,281
Репутация: 2218
|
ipaSoft,
ЗоД -сленг (Защита от Дурака) В простейшем варианте - это круглый штырь срезаный по диаметру на модуле и полукруглое отверстие в блоке. Поворт штыря по 45 гр даёт 8 номеров. Два штыря уже 64 номера. |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |