Comments 9
Многие STM32 микроконтроллеры обладают CAN трансивером.
Всё же CAN-контроллерами они обладают, а не CAN-трансиверами, исправьте.
Не принципиально, можно и так и эдак называть.
Учите матчасть. Контроллер и трансивер - разные устройства, работающие в паре, но один отвечает за кодирование, другое - за физику. Автор в базовой терминологии не разобрался.
Тот, что за физику отвечает, обычно называется драйвер шины)
Трансивер - приемопередатчик. А драйвер - это просто преобразователь уровней. Называть его приемопередатчиком некорректно.
Всё же CAN-контроллерами они обладают, а не CAN-трансиверами, исправьте.
Учите матчасть. Контроллер и трансивер - разные устройства
Ееее! Прям как я в своё время описывал :)))
Так это ж результат работы ИИ. Сам недавно с CAN работал на STM32. Не может человек, разобравшийся с CAN, допускать столь много ошибок в терминологии.
Для прототипирования и первых шагов лучше брать HAL и конфигать периферию в CubeMX.
Оk. Заменил на CAN MAC.
Важный момент по CAN на STM32.
Надо отключать CAN-периферию от шины на время инициализации.
Буквально переводить CAN_RX и CAN_TX на GPIO вход.
Иначе внешний обильный трафик на шине может препятствовать нормальному ходу алгоритма инициализации и функция HAL_CAN_Init у вас свалится в timeout или error.
При установке INRQ=1 CAN контроллер может просто не перейти в режим инициализации.
“ Once software has set the INRQ bit, the CAN hardware waits until the current CAN activity (transmission or reception) is completed before entering the initialization mode. Hardware signals this event by setting the INAK bit in the CAN_MSR register.”

Пуск CAN-MAC на STM32