2016-11-24 7 views
-1

Initialiser Bonjour toutSTM32F746 time out

Je suis en train de migrer d'un STM32F407 à un STM32F746. Le problème que j'ai rencontré était en utilisant la bibliothèque ST HAL pour initialiser le CAN. Le code a été généré à partir de MX Cube (4.16). En utilisant un Nucleo-144 STM32F746, j'ai pu dépasser le code d'initialisation (MX_CAN1_Init()) pendant le débogage (ST-Link), mais pas sur le système de production en utilisant un uLink Pro en débogage. Le temps d'attente est dépassé en attendant que le périphérique CAN (bit MSR INAK ne soit pas effacé).

Les broches CAN n'étaient connectées à rien, c'est-à-dire flottantes.

Répondre

-1

Trouvé une solution.

Apparemment, si la broche CAN RXD est laissée flottante ou tirée bas, alors la fonction d'initialisation expirera, sauf si le débogage est effectué en utilisant le ST-Link sur la carte Nucleo. J'ai ensuite utilisé les résistances internes pull-up dans GPIO et le problème a disparu. Les deux systèmes transmettent le code d'initialisation en mode exécution ou débogage.

Je ne me souviens pas si le STM32F407 avait un problème similaire.

+0

Généralement, la broche CAN Rx est entraînée au niveau de ralenti droit par l'émetteur-récepteur CAN. Placer des résistances de traction avec une polarité incorrecte sur ces lignes fera tomber tout le bus (cela a été fait). Il est préférable de ne pas utiliser de résistance de tirage. – Lundin

+0

@Lundin Avoir une résistance de tirage ne devrait pas affecter négativement le bus car les aigus sont "récessifs". Alors oui, l'émetteur-récepteur CAN devrait le tirer correctement, cependant pour tester le code, lorsque l'émetteur-récepteur CAN n'est pas nécessairement câblé, le fait de ne pas tirer sur la broche RXD empêchera le module CAN de s'initialiser. J'ai mentionné que je n'ai pas d'émetteur-récepteur connecté. – Flip

+0

Si vous n'avez pas d'émetteur-récepteur CAN, vous êtes en général en mode "loopback", où le signal ne quitte même pas le MCU. J'ai vieilli depuis que je me suis rendu compte que jouer avec de telles choses pendant la phase de développement est tout simplement néfaste. Mieux vaut obtenir un émetteur-récepteur et un autre nœud, comme un adaptateur d'écoute CAN, le plus tôt possible. Il n'y a pas beaucoup d'efforts impliqués dans la réparation de cela, par rapport au débogage comportement particulier causé par ne pas tester avec des conditions réelles. Les simulateurs en général devraient être évités, si possible. – Lundin