Retour à l'accueil

Erreurs de débogage de microcontrôleur : SWD et bogues matériels

L'article analyse des cas réels de bogues dans le développement de microcontrôleurs : Erreurs matérielles comme débris dans les connecteurs et conflits de broches, Logiciel — Configuration Flash et FPU. Solutions pratiques pour un débogage fiable de STM32, TI CC, nRF.

Bogues épiques MCU : de SWD à ESD et Cristaux
Advertisement 728x90

Pièges courants en matériel et logiciel lors du débogage des microcontrôleurs

Le firmware du microcontrôleur se fige : la LED heartbeat cesse de clignoter, la console UART devient insensible. Symptôme classique. Pas de panique — vérifiez méthodiquement les traces de pile, les journaux et les périphériques. Le coupable est souvent quelque chose de simple : débris dans les connecteurs, conflits de broches ou mauvaises configurations.

Pièges matériels : Des débris aux bourdes de soudure

Développement d'une carte télématique pour un réseau CAN : la voiture ne démarre pas, le démarreur tourne à vide. Trois heures de diagnostic — la cause est dans le connecteur OBD-II : un bout de feuille d'aluminium court-circuitait trois broches. Nettoyer les débris a tout résolu.

Disposition dense de la carte avec Tag-Connect : le connecteur de programmation est inaccessible à cause du régulateur Traco Power voisin. La pince ne s'accroche pas — les doigts n'atteignent pas. Solution : enrôler des collègues aux doigts fins ou repenser la disposition.

Google AdInline article slot

L'alimentation USB clignote et coupe. Chute de tension suspectée due au BLE/UWB écartée. Coupable : réceptacle USB-A défectueux — insertion complète de la fiche perd le contact, la tirer d'un demi-millimètre la restaure. Leçon : fiez-vous à des câbles et connecteurs de qualité.

Liaison SWD qui saute sur un câble de 90 cm traversant des bagues collectrices dans la tourelle. Les paquets ne passent pas. Un câble court de 12 cm fonctionne parfaitement. Au final, programmation des cartes avec des câbles volants.

Conflits de broches et débogage

JTAG/SWD refuse de se lancer : 'No device found'. Le script batch du firmware exige un reset manuel via STM32 ST-LINK Utility. Cause : LED sur PA13 (TMS/SWDIO). Les broches SWD (PA13, PA14) ne peuvent pas servir en GPIO. Déplacer la LED sur PA15 a restauré le débogage.

Google AdInline article slot

Carte avec FC7300 : J-Link affiche orange (état reset), J-Flash signale 'Could not download file'. Reflow du MCU n'a rien changé. Solution temporaire : changer de port USB ou de programmeur.

Configuration MCU et chargeurs de démarrage

CC26x2 se bloque après un cycle d'alimentation, même s'il fonctionne sous débogueur. Cause : absence d'écriture dans le secteur de configuration client sur la dernière page Flash. Pour TI CC26x4, flashez d'abord blinky_backdoor_select_btn26x2.bin avec SmartFR Flash Programmer 2, puis votre propre firmware.

Le chargeur de démarrage STM32F413ZGJ6 ne saute pas vers l'application : vérification MSP dans la table des vecteurs >128 kB. Le MCU dispose de 320 kB RAM, mais le bootloader était compilé pour STM32F205VC. La compatibilité Cortex-M4/M3 a masqué le bug pendant cinq ans.

Google AdInline article slot

Électricité statique et fiabilité

Test d'une semaine : les journaux en RAM sont effacés par une étincelle ESD au contact. Solution : NVRAM ou carte SD pour les journaux.

Audio et périphériques

I2S du BT1026 (Bluetooth Classic) : voix rauque sur nRF5340. WS à 50 kHz, mais le module FSC-BT1026C ne sort des échantillons qu'à jusqu'à 48 kHz — les zéros provoquent le grésillement. Correctif : BT1026 en maître I2S.

Bourdes en conception de circuits

Oubli d'alimenter le MCU — un bout de fil a réparé ça. Ou cristal Ethernet PHY à 23 MHz au lieu de 25 MHz : l'auto-négociation échoue. Olimex-STM32-H407 : données UART corrompues dues à un cristal de 12 MHz au lieu de 25 MHz dans le firmware.

Prototype SPI-NAND W25M02GV : les broches latérales court-circuitent le pad thermique sur perfboard. Reflow sur PCB verte a résolu le problème.

Driver haut-côté VNQ7E100AJ : fausse lecture de courant en open-load (pull-up V_SENSEH). L'ADC l'interprète comme une surcharge. Échange de puce dans la révision ECU.

Erreurs FPU et bibliothèques

snprintf() sur Cortex-M33 plante dans Default Handler à cause de soucis FPU lors du formatage float.

Points clés à retenir

  • Vérifiez les broches SWD/JTAG avant de les assigner en GPIO.
  • Configurez les secteurs client des MCU TI avant de flasher un firmware personnalisé.
  • Utilisez une protection ESD et de la NVRAM pour les journaux.
  • Validez les cristaux et connecteurs sur les prototypes.
  • Lisez la fiche technique : des fonctions comme la détection open-load évitent les faux déclenchements.

— Editorial Team

Advertisement 728x90

Lire ensuite