Comment utiliser ST-Link externe pour déboguer / programmer le microcontrôleur STM32F103?

16

J'utilise le microcontrôleur STM32F103 pour mon propre projet et je souhaite utiliser la carte ST-Link de la carte Nucleo STM32F411 à des fins de débogage / programmation externe.

J'ai désactivé les cavaliers CN2 et ma véritable question se trouve dans les brochages de SWO (CN2). Voici comment je procède:

  • Le PIN 1 (de SWO) est VDD_Target
  • PIN 2 est SWCLK
  • PIN 3 est GND
  • PIN 4 est SWDIO
  • PIN 5 est NRST
  • PIN 6 est SWO

À ma connaissance, je ne devrais pas utiliser toutes ces broches ci-dessus. Comme dans, je me suis connecté

  • PIN 2 à PIN 37 (ou PA14) dans MCU
  • PIN 3 à GND
  • PIN 4 à PIN 34 (ou PA13)
  • PIN 5 à PIN 7 ou (RESET) dans le MCU cible.

Je ne sais pas si je dois connecter la broche SWO car elle est définie comme "réservée" (Pourquoi?). Je donne également 3,3 V à la broche VIN du MCU, ce qui signifie que je n'ai pas besoin de connecter le VDD (PIN 1 de stlink).

Veuillez vous référer à ce tableau que j'ai extrait de la fiche officielle:

entrez la description de l'image ici entrez la description de l'image ici

Voici la configuration générale de brochage du MCU ici:

entrez la description de l'image ici

J'ai testé "presque" tout avec un oscilloscope et un testeur et tout semble correct. Que manque-t-il d'autre ici? Dois-je faire quoi que ce soit avec les broches BOOT0 ou BOOT1?

baqx0r
la source

Réponses:

11

Tout d'abord, vous avez raison, si votre carte a déjà une source de tension d'alimentation, vous n'avez pas à connecter la broche VDD de ST-Link.

La deuxième chose que je vous recommanderais est d'ouvrir le manuel de référence de la carte STM32F411 Nucleo et de regarder les schémas. Surtout la partie où le ST-Link est connecté au contrôleur de la carte.

entrez la description de l'image ici

Par ST Microelectronics, SWCLK, SWDIO, NRST et SWO (et GND bien sûr) sont connectés au MCU cible. La broche SWO supplémentaire est utilisée à des fins de débogage, vous pouvez accéder aux données imprimées avec la printffonction via cette broche avec l' utilitaire ST-Link .

Printf via SWO Viewer affiche les données printf envoyées depuis la cible via SWO.

Je peux donc vous recommander de connecter SWO également, cela peut être utile plus tard. Connectez votre MCU à ST-Link comme ils y ont connecté le MCU du Nucleo.

En ce qui concerne les configurations de démarrage, il existe trois options sélectionnables, la plus simple est de s'en tenir au flash principal et de lier Boot0 à GND, mais je ne connais pas vos besoins, c'est donc à vous de choisir.

entrez la description de l'image ici

Bence Kaulics
la source
3
Bien que vous puissiez vous débrouiller en ne connectant pas la broche VDD, elle n'est pas là pour être alimentée, mais plutôt pour détecter la tension d'alimentation de la cible (voir comment elle est connectée à une entrée analogique). Une interface de débogage plus sophistiquée pourrait maintenir ses lignes basses sans cela, et ne les élever qu'au niveau d'alimentation correspondant, prenant en charge plusieurs tensions cibles. La ligne de réinitialisation n'est normalement pas nécessaire (contrairement à de nombreuses autres implémentations SWD). Il est essentiel de se remettre de mauvaises charges et de firmwares qui désactivent les broches SWD, mais peuvent également être manipulés manuellement.
Chris Stratton
Sur une carte STM32F1xx, la principale raison pour laquelle BOOT0 est sélectionnable en externe serait si vous souhaitez utiliser le chargeur de démarrage d'usine ROM UART (etc.). Sur le '103, cela ne prend pas en charge l'USB comme il le fait sur de nombreuses pièces ultérieures de ST. Si l'on voulait un chargeur de démarrage USB sur le '103, il doit être dans la mémoire flash principale, donc la broche BOOT0 n'est pas utile pour cela.
Chris Stratton
Mon boot0 et boot0 est défini sur zéro pour vous assurer que le programme sera écrit dans la mémoire Flash. En dehors de cela, je vais essayer d'utiliser l'utilitaire st-link sur une machine Windows. J'utilise actuellement Mac OS, mais je ne sais pas si mon problème est lié au système d'exploitation.
baqx0r
J'ai utilisé le ST-Link d'un kit de découverte STM32F407 pour programmer un STM32F303. J'ai simplement connecté le connecteur SWD du kit (2-5 broches) à ma carte SWCLK, GND, SWDIO, NRST, SWO (tout comme cela se fait sur le Discovery et le Nucleo) et cela a fonctionné avec l'utilitaire ST-Link. La broche boot0 est liée à GND via une résistance 10k, basée sur le manuel de référence du matériel STM32F303 .
Bence Kaulics
6

Tout d'abord merci à tous pour leur contribution.

Après deux nuits blanches et des luttes, j'ai pu découvrir le problème. Le problème était dans les connexions de broches dans ma carte personnalisée: je pensais que, dans mon MCU, la broche 9 (VDDA) était court-circuitée avec les codes PIN 24-36-48 et la broche 8 (VSSA) avec les codes PIN 23-35-47, mais ce n'est pas le cas.

Je devais donner un autre 3.3V et GND à VDDA et EPHV et st-link a commencé à fonctionner.

Méthode de la solution : J'ai utilisé les schémas de Maple Mini pour comprendre les connexions du STM32F103. Il s'est avéré que, ils ont court-circuité VDDA avec VDD1, VDD2 & VDD3 et VSSA avec VSS1, VSS2 et VSS3. Je pense que j'aurais dû comprendre cela du nom de VSSA, car ce n'est pas VSS0 ou VSS4.

baqx0r
la source