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

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

КОМЕНТАРІ • 77

  • @remontlive
    @remontlive Рік тому +3

    Как здорово, что видео выложено 4 года назад, а понадобилось только сейчас. Канал прям кладезь знаний по STM32 👍

  • @MrNitroalex
    @MrNitroalex 4 роки тому +12

    Доброго времени суток. Все красиво и даже казалось бы понятно при просмотре. Но при написание чего то своего не хватает шпаргалки для посмотреть. Огромная просьба к Владимиру и другим авторам. Выкладывайте файлы проекта под видео. Так проще смотреть код. Не приходиться по 100 раз ставить на паузу или перематывать видео, чтобы разглядеть какой то момент.

  • @АртемТроцунов
    @АртемТроцунов 4 роки тому +2

    Спасибо вам Владимир, вы очень интересно и доступно рассказываете, дай бог вам времени и здоровья, дальше создавать такие видео, чтоб такие бездарности как я, это все успешно переживали)))

  • @endi7768
    @endi7768 5 років тому

    Спасибо большое за видео! Очень полезная информация для меня

  • @artemboyarchuk505
    @artemboyarchuk505 5 років тому +1

    Спасибо за полезное видео !

  • @annanesterova4556
    @annanesterova4556 2 роки тому +2

    Спасибо!

  • @DipTrace87
    @DipTrace87 3 роки тому +2

    Не пойму, какие дегенераты ставят под этими видео палец вниз!? Однозначно лайк!

  • @slonbeskonechen8310
    @slonbeskonechen8310 3 роки тому

    Большое спасибо!!!

  • @Андрей-в8ш9ц
    @Андрей-в8ш9ц 5 років тому +4

    Задам вопрос, уместный или нет решать Вам, какой алгоритм изучения МК СТМ 32, при условии нулевых познаний в мк. Спасибо

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому +4

      Нулевые познания в МК это не страшно. Вы быстрее его освоите если знаете классический язык СИ.
      Если языка нет, то в начале заниматься именно им, а потом уже идти осваивать МК.
      Что касается микроконтроллеров то нужно (на мой взгляд) брать простенькую и дешевую плату с алиэкспресс рублей за 200-300 и к ней покупать программатор. Эта связка обойдется дешевле 500 рублей.
      Следующим шагом устанавливать CubeMX с сайта st.com и делать самый простой пример мигания светодиодом с использованием библиотеки HAL. Это всего несколько строк.
      Когда это получится - переходим вначале к базовым операциям ввода - вывода, а потом к интерфейсам: I2C, USART, SPI.
      Далее - DMA и прочее уже по необходимости. Как показывает практика при знании языка мы поднимали человека за месяц до весьма хорошего уровня. Дальше зависит от уровня владения языком и способностей.

    • @Андрей-в8ш9ц
      @Андрей-в8ш9ц 5 років тому +2

      @@VladimirMedintsev , спасибо за развёрнутый ответ.

  • @retro55i
    @retro55i 5 років тому +3

    Передачи команд или данных нет в CAN. Есть или передача данных или запрос данных remote. Самая страшная ошибка, это когда ни один из принимающих устройств на CAN шине не выставил подтверждение. Никто тебя не слушает. Здесь отсутствие подтверждения в нормальном режиме считается ошибкой передачи и кидает на подпрограмму обработки ошибок, хотя никакой ошибки фактически и нет. Еще очень сложно в этом камне сбросить количество ошибок до нуля, как по передаче, так и по приему, не считая полную перезагрузку процессора. Короче натрахался я с этой CAN ШИНОЙ пол года назад будь здоров. Программировал я на старой HAL-версии библиотеки, она существенно отличается от сегодняшней. CAN шина представляет интерес только для подключения к автомобилю, другое использование CAN шины мне не известно. ID айдишники всех грузовых автомобилей стандартизированы 29 бит. Айдишники легковых автомобилей 11 бит не стандартизированы, каждый производитель автомобиля лепит что хочет.

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому +2

      Автомобили это только малая часть айсберга. Огромное количество оборудования внутри себя имеет CAN-шину. И как правило это реализовано следующим образом: блоки между собой общаются по CAN, а наружу 485-й интерфейс. Пример - промышленные системы питания. Или популярные в России газотурбинные установки от Siemens там внутри системы управления крутится CAN интерфейс. Ну и таких примеров масса. Более того, то что крутится в автомобиле является не самой лучшей и полной реализацией протокола.

  • @gt540gfx
    @gt540gfx Рік тому +2

    В чем может быть проблема, в режиме лук бэк программа работает данные шлет и принимает но на пинах мк тишина, в Нормал режиме тоже тишина. Ножки настроены.

    • @artemmelnyk5522
      @artemmelnyk5522 9 місяців тому +1

      аналогичная проблема

    • @mikenonecessary423
      @mikenonecessary423 9 місяців тому +1

      @@artemmelnyk5522 и у меня тоже. Решение нашли?

    • @Oleg-fp9hn
      @Oleg-fp9hn 9 місяців тому

      BluePill STM32F103C8T6 + MCP 2551 STM32CubeIDE170 + FW180.
      CAN не работает вообще никак. В LoopMode можно запустить на кое каких настройках в NormalMode не работает и прерывания тоже не запускаются, кто нашёл решение дайте знать. Компилируется успешно, Функция HAL_CAN_AddTxMessage трабатывает без ошибок. Если у кого есть 100% рабочий проект для "BluePill STM32F103C8T6 + MCP 2551 STM32CubeIDE170 + FW180" буду признателен.

  • @mservice12
    @mservice12 5 років тому

    А не могли бы подробней рассказать об обработках ошибок при приёме или передачи данных в шине с прерываниями, желательно с выводом данных в консоль посредством fprint для полной наглядности?

  • @elmirakassymova380
    @elmirakassymova380 2 роки тому

    Здравствуйте, подскажите, почему одни и те же сообщения отправляются через CAN1, но через CAN2 не отправляется?

  • @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);
    }
    }
    И в итоге кучамала.
    Как их распределить по массивам?

  • @Олег-ю4ш3й
    @Олег-ю4ш3й 5 років тому

    Спасибо за видео. Очень мало информации по данной теме. Я не до конца понял, а как все таки реализуется режим если нужно и принимать и передавать данные?. Что-то я такого не увидел в режимах, или их нужно переключать ?

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому

      На прием одна функция, на передачу другая. Просто вызываете ту, которая вам нужна в данный конкретный момент.

  • @ukrfoil
    @ukrfoil 3 роки тому

    Жалко что не поделились своим примером в архиве. видео хорошие познавательные)

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому +1

      Мой код вам не даст абсолютно ничего. У вас наверняка другой микроконтроллер и если нет понимания как и что работает то код вас только запутает. Именно по этой причине на подобных моих видео кода и не бывает.

    • @ukrfoil
      @ukrfoil 3 роки тому +1

      @@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 роки тому +1

      @@ukrfoil Can_moduleHandle = osThreadNew(StartTask03, &hcan, &Can_module_attributes) - это дичь какая-то, вы ни фига не понимаете что здесь написали, и я тоже... а по поводу видимости hcan в файле freertos.c в секции Private variables добавить extern CAN_HandleTypeDef hcan

  • @ukrfoil
    @ukrfoil 3 роки тому

    Подскажите как там (11:58) с дистанциями ) - Вы провели эксперимент с большой бухтой'? какой результат?

    • @VladimirMedintsev
      @VladimirMedintsev  3 роки тому +2

      Все очень даже не плохо. Все работает.

  • @mikhaelkondrashkin
    @mikhaelkondrashkin 4 роки тому

    Подскажите, пожалуйста, если у нас одно устройство генерирует сообщение в can-шину, но при этом в can-шине будет два или более устройства, которые успешно считывают это сообщение, они же все должны сгенерировать Acknowledge bit? Не возникает ли при этом ошибок, если устройства-приемники одновременно пытаются ответить?

    • @vehiclesailboat
      @vehiclesailboat 2 роки тому

      Не нужно делать широковещательную параллельную связь с подтверждением, только и всего.

  • @cyberzx
    @cyberzx 5 років тому

    Отличное видео. Всё понятно. Но появился вопрос по железу. В первом видео упоминается контроллер mcp2515. Но я так понимаю, его функциональность реализована в самом STM и можно просто подавать CANH, CANL с шины на пины чипа. Или контроллер всё таки нужен?

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому +1

      Я не использую mcp2515. Пересмотрите первую часть с самого начала ровно 2 минуты. Там ответ на ваш вопрос. Спойлер: контроллер не нужен, трансивер нужен.

  • @homohabilis5718
    @homohabilis5718 6 років тому

    Огромное спасибо за ваши видео, очень информативно. Воспринимаются, как уроки, на ура. Будут ли подобные видео, от Вас, по I2C и 1Wire?

    • @VladimirMedintsev
      @VladimirMedintsev  6 років тому

      По I2C скорее всего будет, по времени правда не знаю когда, а по однопроводному он в жизни используется только для домофонов, больше почти никто с ним не работает. Зачем про него что-то говорить?

    • @homohabilis5718
      @homohabilis5718 6 років тому

      Спасибо за быстрый ответ. Про 1w-мастер просто для полноты картины. На вашем канале в смысле. Логично предположить ,что если Вы сделаете видео по работе с основными шинами, на одном канале, популярность его возрастет (IMHO). Но если 1w не будет, то и не надо, и так все хорошо. Успехов и Удачи Вам!

    • @VladimirMedintsev
      @VladimirMedintsev  6 років тому

      Я даже не знал что это пока не загуглил.

    • @ImAleko
      @ImAleko 5 років тому

      @@VladimirMedintsev Согласен .

    • @georgekruzenshtern7795
      @georgekruzenshtern7795 5 років тому

      Некоторые работают с 1wire при помощи UART, хотя мне такой подход не нравится.
      С I2C очень много пришлось бы рассказывать, там куча важных нюансов и косяков HAL...

  • @BychkovGleb
    @BychkovGleb 4 роки тому

    Откуда взялась переменная структуры "TxHeader" в формировании заголовка?

    • @megannnn98
      @megannnn98 3 роки тому

      Из инициализации

  • @5erG0
    @5erG0 5 років тому

    вот честно. Ничего не понял.
    Где объявляется sFilterConfig, TxMailBox? не увидел. Чем заполняется TxMailBox?
    Толи это стандартный код после Куба, толи самописное?
    Видимо ролик только для тех, кто в теме.

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому

      Возьмите куб, создайте проект и все вопросы отпадут.
      Видео для тех, кто не ленится и готов учиться.

  • @ilhitindustries7499
    @ilhitindustries7499 4 роки тому

    Здравствуйте Владимир! Мне удалось отправить одно сообщение по ID ,но мне не удается отправить несколько сообщений. Не подскажите как это сделать? Спасибо!

    • @VladimirMedintsev
      @VladimirMedintsev  4 роки тому

      Разумеется копать в сторону подтверждения доставки.

  • @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() она возвращает версию библиотеки. Ну и когда эту библиотеку вы берете в репозитории куба, то там версия указана в названии каталога. Ну и в настройке проекта в кубе есть выбор версии и там тоже указан номер.

  • @tarik20ua
    @tarik20ua Рік тому

    По дистанциям там все просто: чем выше скорость - тем меньше дистанция

  • @zhmenyaBSD
    @zhmenyaBSD 5 років тому

    Возможно ли выложить исходник?

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому

      Показанный в ролике код создавался в процессе сьемки 1й и 2й части и ценности не представляет. Я такой код даже не сохраняю.

  • @ImAleko
    @ImAleko 5 років тому +1

    Спасибо Огромное! Хорошо бы на эту тему не вылазить из Вашего сайта) Есть ли он?

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому

      Сайта у меня нету.

    • @videoCxema
      @videoCxema 5 років тому

      @@VladimirMedintsev можете поделиться рабочим проэктом из видео, а то читаю книгу вижу фигу 😐, на примере будет легче разобраться, спасибо

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому

      @@videoCxema Я не храню эти проекты. Видео снял ненужные файлы стер.

    • @videoCxema
      @videoCxema 5 років тому

      @@VladimirMedintsev Посмотрел первую часть понял где потерялся, инфо из мануала не соответствует реальности. &pTxMailbox подскажите о нем, а то я опять потерялся

    • @VladimirMedintsev
      @VladimirMedintsev  5 років тому +1

      Я упорно не понимаю в чем там нужна помощь.
      Просто уберите все мануалы и делайте по описанному в самих библиотеках.
      Там в комментариях все есть.

  • @MrKatbert92
    @MrKatbert92 4 роки тому +2

    Индетификатор.

  • @Numsarmik
    @Numsarmik 3 роки тому

    Здравствуйте!
    Я пытаюсь сделать самодельную систему индикации параметров двигателя где источник данных - КАН шина.
    Я решил перейти от кучи проводов с аналоговыми приборами к мониторчику где все параметры и ещё и сигнализация критических параметров, но мозгов не хватает. Я ни разу не электронщик.
    Насмотрелся в ютубе и собрал схему: Модуль каншины, ардуино, ноутбук. Данные получил.
    Что делать дальше не могу найти информацию.
    Можете проконсультировать?
    В основном я строю самолёты, но электроника для меня новая среда.
    Вот одно из видео и там весь мой канал: ua-cam.com/video/9RV3E2W64gA/v-deo.html