Реле Tianbo - ресурс 10 млн переключений

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

Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 811
Репутация: 114
105 141
4 0
 
19.06.2020 17:21 #1
Здравствуйте
Имеется цепочка приборов, работающая по I2C.

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

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

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

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

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

Где-то слышал ,что с помощью Unique ID , можно как-то реализовать. Правда пока не понимаю каким образом (.
Оценка
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 181
163 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
 
22.06.2020 09:17 #2
Помимо линии I2C выделите модулю 2 GPIO: Input и Output.
1) Когда модуль получает на Input лог. 1, то он готов к получению адреса. 2) Он начинает перекличку всех возможных адресов по порядку как мастер. И тот адрес, который не ответил, будет для него свободен.
3) После получения адреса на Output выставляется лог. 1 - следующий модуль, получай адрес.
И так хоть 127 модулей можно в баян нацепить)
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
Оценка
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 181
163 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
 
22.06.2020 09:22 #3
Цитата:
Сообщение от схемопай
так как уже есть шлейф между устройствами на 4 провода.
Всего 4 провода и питание нельзя коммутировать? Однако непросто. Загалдят как мастера все, с арбитражом замучишься.
Как вариант, при подаче питания, каждый модуль с рандомной задержкой получает адрес. У одного модуля, допустим, рандомно выпало получить адрес через 320 мс, у другого через 17 мс.
Вам бы тут CAN пригодился, а не I2C или тем более UART
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
Оценка
Новичок
 
Регистрация: 04.06.2011
Сообщений: 47
Репутация: 37
27 0
0 0
 
24.06.2020 21:17 #4
- вы можете и хотите перепрограммировать адреса I2C в приборах или каждый прибор уже имеет прошитый адрес I2C?
- что вы можете перепрограммировать? только МК, который опрашивает по I2C приборы? можете ли перепрограммировать и имеете ли программы МК приборов?
Оценка
Знаток
 
Регистрация: 06.12.2009
Адрес: Днепропетровск
Сообщений: 811
Репутация: 114
105 141
4 0
 
25.06.2020 22:40 #5
Доступ к прошивкам есть, хотелось бы без конструктивных изменений это все сделать, сохраняя I2C линию.

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

Грубо говоря, лежат 10 прибором , один за одним. Нужно чтобы адреса раставились по возрастанию, 1...10
Оценка
Гуру
 
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 8,267
Репутация: 2207
2,193 1,120
40 83
 
25.06.2020 22:53 #6
Для "особо одарённых пользователей" давно придумана ЗоД. Устанавливается механический ключ на позволяющий подключить блок не на своё место. Може это решение будет оптимальней?
Оценка
Новичок
 
Регистрация: 04.06.2011
Сообщений: 47
Репутация: 37
27 0
0 0
 
26.06.2020 09:07 #7
Цитата:
Сообщение от схемопай
10 прибором , один за одним. Нужно чтобы адреса раставились по возрастанию, 1...10
по I2C?
теоретически сделать можно, но дорого, с серьезными аппаратными наворотами, хотя бы со стороны МК мастера:
-всем МК приборов по включении одинаковый адрес А, но разный идентификатор (1 байт) ID,
-последовательно посылать A,ID[i]
-если есть ответ, МК с таким ID присутствует,
-этот МК переводится из I2C в режим ВХОД по одной линии, на выход по другой,
-мастер передает короткий импульс и ждет ответа по одной линии,
-МК возвращает импульс по другой линии
-а тут и аппаратная часть у мастера - измерение времени передачи-возврата импульса.
полученное время записывается для данного ID
как присваивать адреса, понятно.
измерение времени - ИС TDC GP22, разница должна быть хотя бы метры, разрешение менее 100пс, вопрос, смогут ли стабильно с таким разрешением отвечать ваши устройства в приборах: МК работают с тактированием, например, 100нс, поэтому возвращать импульс надо через логику или замыкание линий I2C.
сомнительно, что игра стоит свеч.
Оценка
Знаток
 
Аватар для ipaSoft
 
Регистрация: 22.05.2013
Адрес: Екатеринбург
Сообщений: 513
Репутация: 181
163 117
1 0
Отправить сообщение для ipaSoft с помощью Skype™
 
26.06.2020 09:55 #8
Используется одна шина I2C, 4 провода: GND, Vdd, SDA, SCL.
Есть, как мы видим из сообщений выше, как минимум, 4 способа решения вашей задачи:
1) Коммутировать VDD: модуль 1 не дает питание модулю 2 пока не получит адрес.
2) ЗоД. И это не генерал из супермена, и не заболевание органов дыхания, а нечто позволяющее с помощью механического ключа соблюдать предопределенную последовательность подключения модулей. Я, видимо, из числа "особо одаренных", и не смогу дать детальное объяснение.
3) Использовать 1-wire, так освободится линия, которая будет служить арбитром при получении адресов.
4) Использовать джамперы или DIP switch на каждом модуле для ручной установки адреса.
5) Использовать софтовую настройку адреса для каждого модуля.
__________________
"Словом можно убить, словом можно спасти, Словом можно полки за собой повести." (с) Шефнер Вадим
Оценка
Гуру
 
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 8,267
Репутация: 2207
2,193 1,120
40 83
 
26.06.2020 17:39 #9
ipaSoft,
ЗоД -сленг (Защита от Дурака) В простейшем варианте - это круглый штырь срезаный по диаметру на модуле и полукруглое отверстие в блоке.
Поворт штыря по 45 гр даёт 8 номеров. Два штыря уже 64 номера.
Оценка
Знаток
 
Аватар для salyamkamrad
 
Регистрация: 07.10.2009
Адрес: А кому интересно?
Сообщений: 375
Репутация: 71
62 15
1 1
 
10.08.2021 13:38 #10
Краской номера на корпусах написать никак нельзя было?
Оценка
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 21:21.
Обратная связь РадиоЛоцман Вверх