Come utilizzare ST-Link esterno per eseguire il debug / programmare MCU STM32F103?


16

Sto usando la MCU STM32F103 per il mio progetto e voglio usare la ST-Link della scheda Nucleo STM32F411 per scopi di programmazione / debugging esterni.

Ho disattivato i jumper CN2 e la mia vera domanda è nei pinout di SWO (CN2). Come procedere su questo è il seguente:

  • Il PIN 1 (di SWO) è VDD_Target
  • PIN 2 è SWCLK
  • Il PIN 3 è GND
  • PIN 4 è SWDIO
  • Il PIN 5 è NRST
  • Il PIN 6 è SWO

Per quanto ne so, non dovrei usare tutti questi pin sopra. Come in, ho collegato

  • Da PIN 2 a PIN 37 (o PA14) in MCU
  • PIN da 3 a GND
  • Da PIN 4 a PIN 34 (o PA13)
  • Da PIN 5 a PIN 7 o (RESET) nell'MCU di destinazione.

Non sono sicuro se dovrei collegare il pin SWO poiché è impostato come "riservato" (Perché?). Inoltre sto dando 3.3 V al pin VIN dell'MCU, significa che non ho bisogno di collegare VDD (PIN 1 dello stlink).

Si prega di fare riferimento a questa tabella che ho preso dal foglio dati ufficiale:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Ecco la configurazione generale della piedinatura dell'MCU qui:

inserisci qui la descrizione dell'immagine

Ho testato "quasi" tutto con l'oscilloscopio e il tester e tutto sembra a posto. Cos'altro mi manca qui? Devo fare qualcosa con i pin BOOT0 o BOOT1?

Risposte:


11

Prima di tutto, hai ragione, se la tua scheda ha già una fonte di alimentazione non devi collegare il pin VDD di ST-Link.

La seconda cosa che ti consiglierei è aprire il manuale di riferimento della scheda Nucleo STM32F411 e guardare gli schemi. Soprattutto la parte in cui ST-Link è collegato al controller sulla scheda.

inserisci qui la descrizione dell'immagine

Con ST Microelectronics, SWCLK, SWDIO, NRST e SWO (e GND ovviamente) sono collegati all'MCU target. Il pin SWO aggiuntivo viene utilizzato per scopi di debug, è possibile accedere ai dati stampati con la printffunzione tramite questo pin con ST-Link Utility .

Printf tramite SWO Viewer visualizza i dati printf inviati dalla destinazione tramite SWO.

Quindi posso consigliare di connettere anche SWO, può essere utile in seguito. Collega il tuo MCU a ST-Link proprio come hanno collegato il MCU del Nucleo ad esso.

Per quanto riguarda le configurazioni di avvio, ci sono tre opzioni selezionabili, la più semplice da utilizzare con il Flash principale e collegare Boot0 a GND, ma non conosco i tuoi requisiti, quindi spetta a te scegliere.

inserisci qui la descrizione dell'immagine


3
Mentre puoi "cavartela" senza collegare il pin VDD, non c'è un alimentatore, ma piuttosto lì per rilevare la tensione di alimentazione del bersaglio (vedi come è collegato a un ingresso analogico). Un'interfaccia di debug più sofisticata potrebbe mantenere le sue linee basse senza quella e sollevarle solo al livello di alimentazione corrispondente, supportando più tensioni target. La linea di reset non è normalmente necessaria (diversamente da molte altre implementazioni SWD). È la chiave per il ripristino da carichi e firmware danneggiati che disabilitano i pin SWD, ma possono anche essere manipolati manualmente.
Chris Stratton,

Su una scheda STM32F1xx il motivo principale per cui BOOT0 può essere selezionato esternamente sarebbe se si desidera utilizzare il bootloader ROM ROM UART (ecc.). Sul '103 questo non supporta l'USB come su molte delle parti successive della ST. Se uno desiderava un bootloader USB sul '103, doveva trovarsi nella memoria flash principale, quindi il pin BOOT0 non è utile per quello.
Chris Stratton,

Il mio boot0 e boot0 sono impostati su zero per assicurarsi che il programma verrà scritto nella memoria Flash. A parte questo, proverò a utilizzare l'utilità st-link nel computer Windows. Attualmente sto usando Mac OS, ma non sono sicuro che il mio problema sia legato al sistema operativo.
baqx0r

Ho usato un ST-Link di un Discovery Kit STM32F407 per programmare un STM32F303. Ho semplicemente collegato il connettore SWD del kit (2-5 pin) alla mia scheda SWCLK, GND, SWDIO, NRST, SWO (proprio come è fatto su Discovery e Nucleo) e ha funzionato con l'utilità ST-Link. Il pin boot0 è collegato a GND tramite un resistore da 10k, basato sul manuale di riferimento hardware STM32F303 .
Bence Kaulics,

6

Innanzitutto grazie a tutti per il loro contributo.

Dopo due notti insonni e la lotta, ho potuto scoprire il problema. Il problema riguardava le connessioni pin nella mia scheda personalizzata: ho pensato che, nella mia MCU, il Pin 9 (VDDA) è in cortocircuito con PIN 24-36-48 e il Pin 8 (VSSA) con PIN 23-35-47, ma non è così.

Avevo bisogno di dare altri 3.3V e GND a VDDA e VSSA e st-link ha iniziato a funzionare.

Metodo di soluzione : ho usato gli schemi di Maple Mini per comprendere le connessioni di STM32F103. Si è scoperto che hanno messo in corto circuito VDDA con VDD1, VDD2 e VDD3 e VSSA con VSS1, VSS2 e VSS3. Penso che avrei dovuto capirlo dal nome VSSA, in quanto non è VSS0 o VSS4.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.