Impossible de programmer une carte STM32 personnalisée

9

J'ai conçu une simple carte STM32. Voici les images schématiques et la disposition de la carte PCB:

Schématique:
entrez la description de l'image ici

Disposition PCB: entrez la description de l'image ici

Disposition PCB avec VDD en surbrillance: entrez la description de l'image ici

Disposition PCB avec GND en surbrillance: entrez la description de l'image ici

Seules les parties de cette conception qui sont pertinentes pour ma question sont montrées dans les images ci-dessus.

Mon problème est: j'ai essayé d'utiliser le ST-Link intégré d'une carte de découverte STM32 pour programmer cette carte personnalisée, mais je n'ai pas encore réussi. L'application ST-Link Utility sur PC peut reconnaître le programmeur, mais elle ne peut pas détecter le MCU cible. Les messages d'erreur que j'ai reçus étaient: "Cible non connectée" et "Erreur de communication USB ST-Link".

Voici quelques faits liés à mon problème:

  • La carte de découverte STM32 fonctionne bien: je peux utiliser son ST-Link intégré pour programmer son microcontrôleur STM32 intégré. C'est acceptable.
  • Le MCU STM32 a été soudé avec une orientation correcte sur la carte personnalisée. J'ai vérifié cela deux fois.
  • J'ai vérifié les traces VDD et SWD. Ils sont bien connectés (pas de problème de soudure). Pin Boot0 est à 0V. La broche NRST est à 3,3 V.
  • Le câble SWD est court, seulement 7 à 8 cm de long.
  • Le STM32 de ma carte personnalisée est du même type que celui de la carte Discovery.
  • J'ai suivi les instructions du manuel de la carte de découverte STM32 sur la façon d'utiliser la carte de découverte pour programmer un microcontrôleur STM32 externe. Pour être plus précis, j'ai retiré les 2 cavaliers CN3, puis j'ai connecté les cartes comme dans ce tableau: entrez la description de l'image ici

  • J'ai également retiré le pont de soudure SB11 sur la carte Discovery (afin que la broche NRST puisse fonctionner correctement).

  • J'ai essayé l'application ST-Link Utility et Keil. Les messages d'erreur que j'ai reçus sont les mêmes.
  • Au début, je n'ai pas connecté la broche 6 sur le tableau ci-dessus (SWO) car à ma connaissance ce n'est pas nécessaire. Cependant, après cela, je l'ai également connecté, mais les choses n'ont toujours pas fonctionné.
  • J'ai également ajouté un capuchon de 100 nF de la broche NRST à GND, puis une résistance de rappel de 100 k de cette broche à VDD. Le problème persiste.
  • J'ai également essayé d'utiliser le mode «connexion sous réinitialisation» du programme utilitaire ST-Link. Pas de chance non plus.

Je soupçonne qu'il pourrait y avoir quelque chose de mal avec la conception, mais je ne suis pas sûr. S'il vous plaît, aidez-moi à résoudre le problème.

Merci beaucoup :)

user3286500
la source
Pour autant que je me souvienne, vous devez alimenter à la fois le st-link et votre carte personnalisée. Le 3,3 V dans le connecteur SWD de votre carte personnalisée doit fournir le 3,3 V pour le st-link à détecter.
davidrojas
@davidrojas: Merci pour votre réponse. Eh bien, actuellement, j'alimente le ST-Link par le port USB de mon PC. La carte STM32 personnalisée est alimentée par un 3,3 V externe séparé. Cependant la masse de ces 2 cartes est déjà connectée (comme dans le tableau ci-dessus). En outre, le 3,3 V de ma carte personnalisée est également connecté à VDD_TARGET sur le ST-Link. Pensez-vous que cela suffit?
user3286500
Cela devrait suffire, oui. Un autre problème pourrait être la longueur et la disposition des lignes SWDIO et SWCLK, j'ai eu des problèmes de connexion intermittente dans le passé à cause de cela. Ils doivent être aussi courts que possible. Essayez également de réduire la vitesse du SWD.
davidrojas
J'ai abaissé la vitesse SWD, de 1,8 MHz par défaut à moins de 400 kHz, mais toujours pas réussi. En ce qui concerne la longueur du câble, dans ma configuration, la longueur totale de la connexion SWD (de ST-Link au STM32 cible) est d'environ 12-13 cm. Est-ce toujours dans la limite?
user3286500
1
Avez-vous remarqué que le sol coulé sous la puce est physiquement isolé et n'est connecté à aucune des broches de terre? Les connexions réelles entre les broches de terre suivent des chemins tortueux à l'extérieur de la puce, et certaines d'entre elles peuvent en fait être isolées. Vous devez ajuster vos dégagements afin que la coulée de terre ne comporte pas d'îlots isolés, ce qui vous aidera à vous assurer que toutes les broches de terre de la puce sont beaucoup plus proches du même potentiel.
Dave Tweed

Réponses:

5

Merci pour vos bons commentaires. Grâce à eux, je suis convaincu que ma conception est sans erreur. C'est pourquoi j'ai concentré mon attention sur la recherche d'erreurs dans le matériel. Et j'ai trouvé l'erreur! Il s'agit d'une erreur de soudure.

J'ai trouvé cette erreur après avoir suivi cette instruction: "Utilisez un multimètre et testez toutes les connexions pour les courts-circuits ou le manque de connexion. N'oubliez pas de toucher les broches / pads / quoi que ce soit vraiment doucement, car si vous appuyez fortement sur la sonde, vous pouvez" corriger " "la connexion temporairement (par exemple, vous poussez la broche du CI vers la trace sur le PCB et le test est OK, mais dès que vous lâchez la broche se plie à nouveau)." Le message d'origine est ici .

user3286500
la source