Радиолоцман Электроника en
расширенный поиск +
  

Автоматическая установка адресов I2C в STM32

Ответ
 
Опции темы Поиск в этой теме Оценить тему
Старый 19.06.2020, 17:21 #1
схемопай
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 800
Репутация: 112
схемопай Знаток схемопай Знаток
102 141
3 0
По умолчанию Автоматическая установка адресов I2C в STM32

Здравствуйте
Имеется цепочка приборов, работающая по I2C.

Все приборы визуально полностью одинаковые. Устройство переносное и разборное. Т.е. из разу в раз его в той же поледовательности не получится собрать.

Получается, что жестко забить адреса I2C в МК не выйдет.

Как вариант, думал добавить в линии UART, и последовательно соединить.

Алгоритм такой
  • При включении отправляем '1', к примеру.
  • Первый по ходу МК принимает это число и задает адрес , I2C '1'
  • Далее отправляет следующему МК '1 +1' и т.д.

Но такой метод не подходит, так как уже есть шлейф между устройствами на 4 провода. Только на питание и I2C.

Где-то слышал ,что с помощью Unique ID , можно как-то реализовать. Правда пока не понимаю каким образом (.
схемопай вне форума  
Оценка 0
Старый 22.06.2020, 09:17 #2
ipaSoft
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 180
ipaSoft Знаток ipaSoft Знаток
162 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
По умолчанию

Помимо линии I2C выделите модулю 2 GPIO: Input и Output.
1) Когда модуль получает на Input лог. 1, то он готов к получению адреса. 2) Он начинает перекличку всех возможных адресов по порядку как мастер. И тот адрес, который не ответил, будет для него свободен.
3) После получения адреса на Output выставляется лог. 1 - следующий модуль, получай адрес.
И так хоть 127 модулей можно в баян нацепить)
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
ipaSoft вне форума  
Оценка +1
Компания КОМПЭЛ приглашает вас принять участие в вебинаре 15.07.2020, посвященном новому семейству микроконтроллеров общего назначения – STM32G4. Вебинар рассчитан на технических специалистов и тех, кто знаком с основами цифровой обработки сигналов. Мы разберем алгоритм работы CORDIC, а также рассмотрим пример создания цифрового фильтра на базе FMAC.
Старый 22.06.2020, 09:22 #3
ipaSoft
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 180
ipaSoft Знаток ipaSoft Знаток
162 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
По умолчанию

Цитата:
Сообщение от схемопай Посмотреть сообщение
так как уже есть шлейф между устройствами на 4 провода.
Всего 4 провода и питание нельзя коммутировать? Однако непросто. Загалдят как мастера все, с арбитражом замучишься.
Как вариант, при подаче питания, каждый модуль с рандомной задержкой получает адрес. У одного модуля, допустим, рандомно выпало получить адрес через 320 мс, у другого через 17 мс.
Вам бы тут CAN пригодился, а не I2C или тем более UART
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
ipaSoft вне форума  
Оценка 0
Видеозапись и материалы вебинара ST о семействе AC/DC регуляторов VIPerPLUS производства компании STMicroelectronics. Инженерами ST было детально рассмотрено новое семейство микросхем VIPerPLUS со встроенным транзистором, их возможности и топологии применения. Продемонстрировано испытание из лаборатории ST в Праге и моделирование в среде E-DesignSuite.
Старый 24.06.2020, 21:17 #4
6136
Новичок
 
Регистрация: 04.06.2011
Сообщений: 42
Репутация: 30
6136 Новичок
20 0
0 0
По умолчанию

- вы можете и хотите перепрограммировать адреса I2C в приборах или каждый прибор уже имеет прошитый адрес I2C?
- что вы можете перепрограммировать? только МК, который опрашивает по I2C приборы? можете ли перепрограммировать и имеете ли программы МК приборов?
6136 вне форума  
Оценка +1
Старый 25.06.2020, 22:40 #5
схемопай
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 800
Репутация: 112
схемопай Знаток схемопай Знаток
102 141
3 0
По умолчанию

Доступ к прошивкам есть, хотелось бы без конструктивных изменений это все сделать, сохраняя I2C линию.

Цитата:
Сообщение от ipaSoft Посмотреть сообщение
У одного модуля, допустим, рандомно выпало получить адрес через 320 мс, у другого через 17 мс.
Немного не понял. А как физически сохранится последовательность включенных устройств ? Ведь адреса таким образом присвоятся, но реальная последовательность то не сохранится ?

Грубо говоря, лежат 10 прибором , один за одним. Нужно чтобы адреса раставились по возрастанию, 1...10
схемопай вне форума  
Оценка 0
Старый 25.06.2020, 22:53 #6
lllll
Гуру
 
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 7,946
Репутация: 2054
lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру
2,028 902
22 78
По умолчанию

Для "особо одарённых пользователей" давно придумана ЗоД. Устанавливается механический ключ на позволяющий подключить блок не на своё место. Може это решение будет оптимальней?
lllll вне форума  
Оценка 0
Старый 26.06.2020, 09:07 #7
6136
Новичок
 
Регистрация: 04.06.2011
Сообщений: 42
Репутация: 30
6136 Новичок
20 0
0 0
По умолчанию

Цитата:
Сообщение от схемопай Посмотреть сообщение
10 прибором , один за одним. Нужно чтобы адреса раставились по возрастанию, 1...10
по I2C?
теоретически сделать можно, но дорого, с серьезными аппаратными наворотами, хотя бы со стороны МК мастера:
-всем МК приборов по включении одинаковый адрес А, но разный идентификатор (1 байт) ID,
-последовательно посылать A,ID[i]
-если есть ответ, МК с таким ID присутствует,
-этот МК переводится из I2C в режим ВХОД по одной линии, на выход по другой,
-мастер передает короткий импульс и ждет ответа по одной линии,
-МК возвращает импульс по другой линии
-а тут и аппаратная часть у мастера - измерение времени передачи-возврата импульса.
полученное время записывается для данного ID
как присваивать адреса, понятно.
измерение времени - ИС TDC GP22, разница должна быть хотя бы метры, разрешение менее 100пс, вопрос, смогут ли стабильно с таким разрешением отвечать ваши устройства в приборах: МК работают с тактированием, например, 100нс, поэтому возвращать импульс надо через логику или замыкание линий I2C.
сомнительно, что игра стоит свеч.
6136 вне форума  
Оценка 0
Старый 26.06.2020, 09:55 #8
ipaSoft
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 180
ipaSoft Знаток ipaSoft Знаток
162 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
По умолчанию

Используется одна шина I2C, 4 провода: GND, Vdd, SDA, SCL.
Есть, как мы видим из сообщений выше, как минимум, 4 способа решения вашей задачи:
1) Коммутировать VDD: модуль 1 не дает питание модулю 2 пока не получит адрес.
2) ЗоД. И это не генерал из супермена, и не заболевание органов дыхания, а нечто позволяющее с помощью механического ключа соблюдать предопределенную последовательность подключения модулей. Я, видимо, из числа "особо одаренных", и не смогу дать детальное объяснение.
3) Использовать 1-wire, так освободится линия, которая будет служить арбитром при получении адресов.
4) Использовать джамперы или DIP switch на каждом модуле для ручной установки адреса.
5) Использовать софтовую настройку адреса для каждого модуля.
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
ipaSoft вне форума  
Оценка 0
Старый 26.06.2020, 17:39 #9
lllll
Гуру
 
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 7,946
Репутация: 2054
lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру lllll Гуру
2,028 902
22 78
По умолчанию

ipaSoft,
ЗоД -сленг (Защита от Дурака) В простейшем варианте - это круглый штырь срезаный по диаметру на модуле и полукруглое отверстие в блоке.
Поворт штыря по 45 гр даёт 8 номеров. Два штыря уже 64 номера.
lllll вне форума  
Оценка 0
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Оценка этой теме
Оценка этой теме:
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Часовой пояс GMT +3, время: 05:21.
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Преимущества новых высоковольтных SOI-драйверов Infineon
Батарейки FANSO – стабильное напряжение в любом положении
Срезы портала ↓
Рейтинг@Mail.ru