Тёмный

STM32 CAN шина. Часть 2. Фильтрация и демонстрация работы 

Vladimir Medintsev
Подписаться 36 тыс.
Просмотров 17 тыс.
50% 1

Продолжение видео о работе CAN шины на процессоре STM32.
Первый видеоролик доступен по ссылке - • STM32 CAN шина. Часть ...
------------------------------------------
Поддержать автора канала можно перейдя по ссылке:
yoomoney.ru/to...
Или просто отправив перевод на Yandex.кошелек:
4100116547550395
А также переводом по номеру карты Сбер:
4279-3000-1033-0561
------------------------------------------

Наука

Опубликовано:

 

23 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 77   
@remontlive
@remontlive 11 месяцев назад
Как здорово, что видео выложено 4 года назад, а понадобилось только сейчас. Канал прям кладезь знаний по STM32 👍
@MrNitroalex
@MrNitroalex 4 года назад
Доброго времени суток. Все красиво и даже казалось бы понятно при просмотре. Но при написание чего то своего не хватает шпаргалки для посмотреть. Огромная просьба к Владимиру и другим авторам. Выкладывайте файлы проекта под видео. Так проще смотреть код. Не приходиться по 100 раз ставить на паузу или перематывать видео, чтобы разглядеть какой то момент.
@user-vv1tz9ss3e
@user-vv1tz9ss3e 4 года назад
Спасибо вам Владимир, вы очень интересно и доступно рассказываете, дай бог вам времени и здоровья, дальше создавать такие видео, чтоб такие бездарности как я, это все успешно переживали)))
@endi7768
@endi7768 5 лет назад
Спасибо большое за видео! Очень полезная информация для меня
@artemboyarchuk505
@artemboyarchuk505 5 лет назад
Спасибо за полезное видео !
@annanesterova4556
@annanesterova4556 2 года назад
Спасибо!
@DipTrace87
@DipTrace87 2 года назад
Не пойму, какие дегенераты ставят под этими видео палец вниз!? Однозначно лайк!
@slonbeskonechen8310
@slonbeskonechen8310 3 года назад
Большое спасибо!!!
@mservice12
@mservice12 4 года назад
А не могли бы подробней рассказать об обработках ошибок при приёме или передачи данных в шине с прерываниями, желательно с выводом данных в консоль посредством fprint для полной наглядности?
@retro55i
@retro55i 5 лет назад
Передачи команд или данных нет в CAN. Есть или передача данных или запрос данных remote. Самая страшная ошибка, это когда ни один из принимающих устройств на CAN шине не выставил подтверждение. Никто тебя не слушает. Здесь отсутствие подтверждения в нормальном режиме считается ошибкой передачи и кидает на подпрограмму обработки ошибок, хотя никакой ошибки фактически и нет. Еще очень сложно в этом камне сбросить количество ошибок до нуля, как по передаче, так и по приему, не считая полную перезагрузку процессора. Короче натрахался я с этой CAN ШИНОЙ пол года назад будь здоров. Программировал я на старой HAL-версии библиотеки, она существенно отличается от сегодняшней. CAN шина представляет интерес только для подключения к автомобилю, другое использование CAN шины мне не известно. ID айдишники всех грузовых автомобилей стандартизированы 29 бит. Айдишники легковых автомобилей 11 бит не стандартизированы, каждый производитель автомобиля лепит что хочет.
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Автомобили это только малая часть айсберга. Огромное количество оборудования внутри себя имеет CAN-шину. И как правило это реализовано следующим образом: блоки между собой общаются по CAN, а наружу 485-й интерфейс. Пример - промышленные системы питания. Или популярные в России газотурбинные установки от Siemens там внутри системы управления крутится CAN интерфейс. Ну и таких примеров масса. Более того, то что крутится в автомобиле является не самой лучшей и полной реализацией протокола.
@ukrfoil
@ukrfoil 3 года назад
Жалко что не поделились своим примером в архиве. видео хорошие познавательные)
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Мой код вам не даст абсолютно ничего. У вас наверняка другой микроконтроллер и если нет понимания как и что работает то код вас только запутает. Именно по этой причине на подобных моих видео кода и не бывает.
@ukrfoil
@ukrfoil 3 года назад
@@VladimirMedintsev Ваш пример просто помог бы с последовательностью заполнения структур разобраться, а то видео постоянно останавливать приходиться)) Но я понимаю Вас)), просто текстовка был сократила на пару дней, а так придется недельку помучаться)) Вот пример RTOS и использование CAN - в файле can.h обьявлена глобальная структура extern CAN_HandleTypeDef hcan , но почему она в потоки не подтягивается фиг разберешь...)) ошибка аргумент не определен .. Вы все настройки CAN в main.c производите ? Я имею ввиду как пример функция void MX_FREERTOS_Init(void) , а в ней например создание потока Can_moduleHandle = osThreadNew(StartTask03, &hcan, &Can_module_attributes); - уже вызывает ошибку с неопределенным аргументом hcan. Так что если у Вас будет время может получится ролик СAN и free-rtos.)))
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Честно говоря я не сумел понять что вызывает проблемы.
@ukrfoil
@ukrfoil 3 года назад
@@VladimirMedintsev При компиляции (CubemixIDE) структура CAN_HandleTypeDef hcan видна в main.c , а в файле freertos.c уже о ней ничего не известно)) .. ладно извините что загружая.. буду разбираться.
@psg5_prog
@psg5_prog 3 года назад
@@ukrfoil Can_moduleHandle = osThreadNew(StartTask03, &hcan, &Can_module_attributes) - это дичь какая-то, вы ни фига не понимаете что здесь написали, и я тоже... а по поводу видимости hcan в файле freertos.c в секции Private variables добавить extern CAN_HandleTypeDef hcan
@user-es3wc7ov7q
@user-es3wc7ov7q 5 лет назад
Задам вопрос, уместный или нет решать Вам, какой алгоритм изучения МК СТМ 32, при условии нулевых познаний в мк. Спасибо
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Нулевые познания в МК это не страшно. Вы быстрее его освоите если знаете классический язык СИ. Если языка нет, то в начале заниматься именно им, а потом уже идти осваивать МК. Что касается микроконтроллеров то нужно (на мой взгляд) брать простенькую и дешевую плату с алиэкспресс рублей за 200-300 и к ней покупать программатор. Эта связка обойдется дешевле 500 рублей. Следующим шагом устанавливать CubeMX с сайта st.com и делать самый простой пример мигания светодиодом с использованием библиотеки HAL. Это всего несколько строк. Когда это получится - переходим вначале к базовым операциям ввода - вывода, а потом к интерфейсам: I2C, USART, SPI. Далее - DMA и прочее уже по необходимости. Как показывает практика при знании языка мы поднимали человека за месяц до весьма хорошего уровня. Дальше зависит от уровня владения языком и способностей.
@user-es3wc7ov7q
@user-es3wc7ov7q 5 лет назад
@@VladimirMedintsev , спасибо за развёрнутый ответ.
@gt540gfx
@gt540gfx Год назад
В чем может быть проблема, в режиме лук бэк программа работает данные шлет и принимает но на пинах мк тишина, в Нормал режиме тоже тишина. Ножки настроены.
@artemmelnyk5522
@artemmelnyk5522 7 месяцев назад
аналогичная проблема
@mikenonecessary423
@mikenonecessary423 7 месяцев назад
@@artemmelnyk5522 и у меня тоже. Решение нашли?
@Oleg-fp9hn
@Oleg-fp9hn 7 месяцев назад
BluePill STM32F103C8T6 + MCP 2551 STM32CubeIDE170 + FW180. CAN не работает вообще никак. В LoopMode можно запустить на кое каких настройках в NormalMode не работает и прерывания тоже не запускаются, кто нашёл решение дайте знать. Компилируется успешно, Функция HAL_CAN_AddTxMessage трабатывает без ошибок. Если у кого есть 100% рабочий проект для "BluePill STM32F103C8T6 + MCP 2551 STM32CubeIDE170 + FW180" буду признателен.
@tarik20ua
@tarik20ua Год назад
По дистанциям там все просто: чем выше скорость - тем меньше дистанция
@elmirakassymova380
@elmirakassymova380 2 года назад
Здравствуйте, подскажите, почему одни и те же сообщения отправляются через CAN1, но через CAN2 не отправляется?
@homohabilis5718
@homohabilis5718 5 лет назад
Огромное спасибо за ваши видео, очень информативно. Воспринимаются, как уроки, на ура. Будут ли подобные видео, от Вас, по I2C и 1Wire?
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
По I2C скорее всего будет, по времени правда не знаю когда, а по однопроводному он в жизни используется только для домофонов, больше почти никто с ним не работает. Зачем про него что-то говорить?
@homohabilis5718
@homohabilis5718 5 лет назад
Спасибо за быстрый ответ. Про 1w-мастер просто для полноты картины. На вашем канале в смысле. Логично предположить ,что если Вы сделаете видео по работе с основными шинами, на одном канале, популярность его возрастет (IMHO). Но если 1w не будет, то и не надо, и так все хорошо. Успехов и Удачи Вам!
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Я даже не знал что это пока не загуглил.
@ImAleko
@ImAleko 5 лет назад
@@VladimirMedintsev Согласен .
@georgekruzenshtern7795
@georgekruzenshtern7795 5 лет назад
Некоторые работают с 1wire при помощи UART, хотя мне такой подход не нравится. С I2C очень много пришлось бы рассказывать, там куча важных нюансов и косяков HAL...
@befrikpa
@befrikpa 2 года назад
А как получать с одного fifo сообщения разных адресов? если быть точнее записывать сообщения с разных адресов в разные массивы. У меня получается что все посылки записываются в один массив. void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { if(HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader, RxData) == HAL_OK) { HAL_GPIO_TogglePin(LED_plate_GPIO_Port, LED_plate_Pin); } } И в итоге кучамала. Как их распределить по массивам?
@user-tl3fg5br5u
@user-tl3fg5br5u 5 лет назад
Спасибо за видео. Очень мало информации по данной теме. Я не до конца понял, а как все таки реализуется режим если нужно и принимать и передавать данные?. Что-то я такого не увидел в режимах, или их нужно переключать ?
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
На прием одна функция, на передачу другая. Просто вызываете ту, которая вам нужна в данный конкретный момент.
@BychkovGleb
@BychkovGleb 4 года назад
Откуда взялась переменная структуры "TxHeader" в формировании заголовка?
@megannnn98
@megannnn98 3 года назад
Из инициализации
@mikhaelkondrashkin
@mikhaelkondrashkin 3 года назад
Подскажите, пожалуйста, если у нас одно устройство генерирует сообщение в can-шину, но при этом в can-шине будет два или более устройства, которые успешно считывают это сообщение, они же все должны сгенерировать Acknowledge bit? Не возникает ли при этом ошибок, если устройства-приемники одновременно пытаются ответить?
@vehiclesailboat
@vehiclesailboat 2 года назад
Не нужно делать широковещательную параллельную связь с подтверждением, только и всего.
@ukrfoil
@ukrfoil 3 года назад
Подскажите как там (11:58) с дистанциями ) - Вы провели эксперимент с большой бухтой'? какой результат?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Все очень даже не плохо. Все работает.
@cyberzx
@cyberzx 4 года назад
Отличное видео. Всё понятно. Но появился вопрос по железу. В первом видео упоминается контроллер mcp2515. Но я так понимаю, его функциональность реализована в самом STM и можно просто подавать CANH, CANL с шины на пины чипа. Или контроллер всё таки нужен?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Я не использую mcp2515. Пересмотрите первую часть с самого начала ровно 2 минуты. Там ответ на ваш вопрос. Спойлер: контроллер не нужен, трансивер нужен.
@5erG0
@5erG0 4 года назад
вот честно. Ничего не понял. Где объявляется sFilterConfig, TxMailBox? не увидел. Чем заполняется TxMailBox? Толи это стандартный код после Куба, толи самописное? Видимо ролик только для тех, кто в теме.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Возьмите куб, создайте проект и все вопросы отпадут. Видео для тех, кто не ленится и готов учиться.
@ilhitindustries7499
@ilhitindustries7499 4 года назад
Здравствуйте Владимир! Мне удалось отправить одно сообщение по ID ,но мне не удается отправить несколько сообщений. Не подскажите как это сделать? Спасибо!
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Разумеется копать в сторону подтверждения доставки.
@ImAleko
@ImAleko 5 лет назад
Спасибо Огромное! Хорошо бы на эту тему не вылазить из Вашего сайта) Есть ли он?
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Сайта у меня нету.
@videoCxema
@videoCxema 5 лет назад
@@VladimirMedintsev можете поделиться рабочим проэктом из видео, а то читаю книгу вижу фигу 😐, на примере будет легче разобраться, спасибо
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
@@videoCxema Я не храню эти проекты. Видео снял ненужные файлы стер.
@videoCxema
@videoCxema 5 лет назад
@@VladimirMedintsev Посмотрел первую часть понял где потерялся, инфо из мануала не соответствует реальности. &pTxMailbox подскажите о нем, а то я опять потерялся
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Я упорно не понимаю в чем там нужна помощь. Просто уберите все мануалы и делайте по описанному в самих библиотеках. Там в комментариях все есть.
@smart_electronics_il
@smart_electronics_il 4 года назад
Владимир, подскажите, а существует какая либо версия HAL библиотеки ? ну типа там 2.34 Я просто смотрю, что в моём случае, некоторые параметры в функциях различаются от вашей... Т.е ваш код в моей библиотеки HAL работать не будет, нужно править некоторые строки.. т.е если я найду какой либо код в интернете, то мне нужен будет полностью пакет со всеми файлами драйвера HAL иначе не факт что он заработает...
@VladimirMedintsev
@VladimirMedintsev 4 года назад
библиотека hal обновляется постоянно. ее новые версии можно получить через CubeMX. В зависимости от семейства микроконтроллера функции могут немного меняться, но на общее понимание происходящего это не влияет. Просто используйте функции доступные для вашего семейства МК.
@smart_electronics_il
@smart_electronics_il 4 года назад
@@VladimirMedintsev Ок, это я понимаю, а можно где то увидеть версию HAL библиотеки ?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
@@smart_electronics_il Версия библиотеки указана в виде константы __STM32(серия)xx_HAL_VERSION, ее определение находится в файле *_hal.c или можно просто запросить у функции HAL_GetHalVersion() она возвращает версию библиотеки. Ну и когда эту библиотеку вы берете в репозитории куба, то там версия указана в названии каталога. Ну и в настройке проекта в кубе есть выбор версии и там тоже указан номер.
@MrKatbert92
@MrKatbert92 4 года назад
Индетификатор.
@zhmenyaBSD
@zhmenyaBSD 5 лет назад
Возможно ли выложить исходник?
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Показанный в ролике код создавался в процессе сьемки 1й и 2й части и ценности не представляет. Я такой код даже не сохраняю.
@Numsarmik
@Numsarmik 3 года назад
Здравствуйте! Я пытаюсь сделать самодельную систему индикации параметров двигателя где источник данных - КАН шина. Я решил перейти от кучи проводов с аналоговыми приборами к мониторчику где все параметры и ещё и сигнализация критических параметров, но мозгов не хватает. Я ни разу не электронщик. Насмотрелся в ютубе и собрал схему: Модуль каншины, ардуино, ноутбук. Данные получил. Что делать дальше не могу найти информацию. Можете проконсультировать? В основном я строю самолёты, но электроника для меня новая среда. Вот одно из видео и там весь мой канал: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-9RV3E2W64gA.html
Далее
Подробно про CAN шину
30:19
Просмотров 681 тыс.
STM32 CAN LOOPBACK Mode || FILTER Configuration
30:44