2016-11-24 8 views
-1

Добрый день все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 не были подключены ни к чему, то есть к левому плаву.

ответ

-1

Найдено решение.

По-видимому, если контакт CAN RXD оставлен плавающим или вытащен низким, функция инициализации будет отключена, если не будет отлаживаться с использованием ST-Link на плате Nucleo.

Затем я использовал внутренние подтягивающие резисторы в GPIO, и проблема исчезла. Обе системы передавали бы код инициализации в режиме запуска или отладки.

Я не помню, имела ли STM32F407 аналогичная проблема.

+0

Обычно контакт CAN Rx будет передаваться с помощью трансивера CAN на правый уровень простоя. Размещение резисторов с неправильной полярностью на этих линиях приведет к разрушению всей шины (было сделано это). Лучше вообще не использовать никаких резисторов тяги. – Lundin

+0

@ Lundin Наличие подтягивающего резистора не должно отрицательно влиять на шину, так как максимумы являются «рецессивными». Так что да, CAN-трансивер должен потянуть его правильно, однако для тестирования кода, где нет необходимости подключать трансивер CAN, при отсутствии выталкивания на выводе RXD, модуль CAN не будет инициализироваться. Я упомянул, что у меня нет подключенного трансивера. – Flip

+0

Если у вас нет трансивера CAN, вы, как правило, работаете в режиме «loop back», где сигнал даже не выходит из MCU. Были возрасты, так как я понял, что возиться с такими вещами на стадии разработки просто вредно. Лучше всего получить трансивер и другой узел, например адаптер адаптера CAN, как можно раньше. Это не так много усилий, чтобы исправить это, по сравнению с отладочным своеобразным поведением, вызванным не тестированием в реальных условиях. Симуляторы вообще следует избегать, когда это возможно. – Lundin