Простой протокол для шины CAN
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Простой протокол для шины CAN
В процессе написания на ассемблере AVR блоков модбас рту для atmega328, а в последствии разработки своего более простого протокола, захотелось реализовать этот протокол на физике CAN, что и было сделано. Протокол достаточно компактный (1444 байта), быстрый (обмен идет на скорости 1Мбит/с) и позволяет реализовать быстрый доступ к шине. Описание протокола:
Рабочий макет, приемо-передатчики использованы tja1051:
Кадр передачи одной переменной:
Для примера 2 проекта, каждый из которых прошивается в свою нанку, один с адресом на шине №1 передает переменную №22, второй с адресом на шине №21 передает переменную №55:
Блоки протокола, входящей и исходящей переменной (номера задаются параметром пользователя):
Для работы блоков нужно добавить библиотечную папку C:\Program Files (x86)\FLProg\ideV8\portable\sketchbook\libraries\BlackLogic с файлами:
Файл BUS_CAPTURE.txt нужно переписать с расширением .S (большое)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Простой протокол для шины CAN
Усложнил задачу, подключил на шину 4 контроллера и увеличил частоту посылок, терминальные RC-цепочки оставил только на двух приемопередатчиках. Попались 2 приемопередатчика CAN с неподключенным полигоном GND:
Работает шина, не виснет даже при горячем подключении
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Engineer200
- Рядовой
- Сообщения: 53
- Зарегистрирован: 19 дек 2025, 06:16
- Имя: Александр
- Благодарил (а): 18 раз
- Поблагодарили: 5 раз
Re: Простой протокол для шины CAN
Руки золотые.
Вот бы кто Bus77 завёл в FLProg...
Вот бы кто Bus77 завёл в FLProg...
Люблю делать то, что потом само работает.
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Простой протокол для шины CAN
Спасибо! А я даже не слышал о нем. Сейчас почитал - он универсальный и с шифрованием, а значит тяжелый. Здесь же была задача сделать простой протокол в основном для мег48-328
-
Engineer200
- Рядовой
- Сообщения: 53
- Зарегистрирован: 19 дек 2025, 06:16
- Имя: Александр
- Благодарил (а): 18 раз
- Поблагодарили: 5 раз
Re: Простой протокол для шины CAN
Да, он прям крутой. Шифрование скорее заведено в функции или методы, как там правильно. Может не надо будет с нуля программить. Тестовая сборка делалась на STM32.Сильно отличается от ESP32? Написано понятными словами... Но моих мозгов не хватает объять API. Только пользоваться блоками. Вот бы кто-нибудь...dstrufanov писал(а): 09 фев 2026, 13:01Спасибо! А я даже не слышал о нем. Сейчас почитал - он универсальный и с шифрованием, а значит тяжелый. Здесь же была задача сделать простой протокол в основном для мег48-328
Люблю делать то, что потом само работает.
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Простой протокол для шины CAN
Конечно, разбиваете штатными блоками FLProg на байтовые переменные и передаете, а на другой стороне опять собираете
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Простой протокол для шины CAN
Потихоньку рождается модульный контроллер с этой шиной.
На монтажную панель прикручиваются базы. Слева база с блоком питания, драйвером RS-485 и входами/выходами, справа база с входами/выходами. Входы устанавливаются либо цифровые (24В), либо аналоговые (0-10В или 4-20мА), выходы либо цифровые, либо ШИМ - открытый коллектор до 1А 80В (bcx56): Образовавшееся кроссовое поле на клеммниках разводится, после чего устанавливаются модули контроллеров на atmega48-328pb. Входы/выходы контроллеров универсальные, программируются модули через usbasp. Каждый модуль отвязан от общей шины через изоляторы ca-is3641: В результате получается законченный модульный прибор со скрытой разводкой. Не напечатал еще крышку блока питания и модуль справа, через который будут выходить провода. Предполагается, что в одной линейке может быть 8 модулей (ограничено мощностью БП 3Вт), для увеличения количества модулей монтируются несколько линеек, которые соединяются CANH, CANL, GND. Позже сделаю модуль с Ethernet на W5500
На монтажную панель прикручиваются базы. Слева база с блоком питания, драйвером RS-485 и входами/выходами, справа база с входами/выходами. Входы устанавливаются либо цифровые (24В), либо аналоговые (0-10В или 4-20мА), выходы либо цифровые, либо ШИМ - открытый коллектор до 1А 80В (bcx56): Образовавшееся кроссовое поле на клеммниках разводится, после чего устанавливаются модули контроллеров на atmega48-328pb. Входы/выходы контроллеров универсальные, программируются модули через usbasp. Каждый модуль отвязан от общей шины через изоляторы ca-is3641: В результате получается законченный модульный прибор со скрытой разводкой. Не напечатал еще крышку блока питания и модуль справа, через который будут выходить провода. Предполагается, что в одной линейке может быть 8 модулей (ограничено мощностью БП 3Вт), для увеличения количества модулей монтируются несколько линеек, которые соединяются CANH, CANL, GND. Позже сделаю модуль с Ethernet на W5500
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
dstrufanov
- Сержант
- Сообщения: 272
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 68 раз
Re: Простой протокол для шины CAN
Шина can работает на USART0, а для обмена с дисплеем у меня используется USART1 atmega328 и с этим оказалась проблема. FLProg этот последовательный интерфейс для atmega328 не поддерживает, софтовый интерфейс в версии 8.2.3 конфликтует с моими блоками, а в версиях 9 он вообще еще в работе. Пока получилось подключить сенсорную панель со скадой, но и тут танцы с бубном на каждом шагу
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя