Добрый день всеSTM32F746 CAN Инициализация таймаут
Я пытался перенести из STM32F407 на STM32F746. Проблема, с которой я столкнулся, заключалась в использовании библиотеки ST HAL для инициализации CAN. Код был создан из MX Cube (4.16).
Использование Nucleo-144 STM32F746, я мог бы пройти код инициализации (MX_CAN1_Init()) во время отладки (ST-Link), но не в производственной системе, используя uLink Pro в отладке. Было бы время ожидания периферийного устройства CAN (бит MSR INAK не очищается).
Штыри CAN не были подключены ни к чему, то есть к левому плаву.
Обычно контакт CAN Rx будет передаваться с помощью трансивера CAN на правый уровень простоя. Размещение резисторов с неправильной полярностью на этих линиях приведет к разрушению всей шины (было сделано это). Лучше вообще не использовать никаких резисторов тяги. – Lundin
@ Lundin Наличие подтягивающего резистора не должно отрицательно влиять на шину, так как максимумы являются «рецессивными». Так что да, CAN-трансивер должен потянуть его правильно, однако для тестирования кода, где нет необходимости подключать трансивер CAN, при отсутствии выталкивания на выводе RXD, модуль CAN не будет инициализироваться. Я упомянул, что у меня нет подключенного трансивера. – Flip
Если у вас нет трансивера CAN, вы, как правило, работаете в режиме «loop back», где сигнал даже не выходит из MCU. Были возрасты, так как я понял, что возиться с такими вещами на стадии разработки просто вредно. Лучше всего получить трансивер и другой узел, например адаптер адаптера CAN, как можно раньше. Это не так много усилий, чтобы исправить это, по сравнению с отладочным своеобразным поведением, вызванным не тестированием в реальных условиях. Симуляторы вообще следует избегать, когда это возможно. – Lundin