Impossibile programmare una scheda STM32 personalizzata


9

Ho progettato una semplice scheda STM32. Di seguito sono riportate le immagini schematiche e del layout del pcb:

schema:
inserisci qui la descrizione dell'immagine

Layout PCB: inserisci qui la descrizione dell'immagine

Layout PCB con VDD evidenziato: inserisci qui la descrizione dell'immagine

Layout PCB con GND evidenziato: inserisci qui la descrizione dell'immagine

Solo le parti di questo disegno che sono rilevanti per la mia domanda sono mostrate nelle immagini sopra.

Il mio problema è: ho provato a utilizzare lo ST-Link integrato di una scheda di rilevamento STM32 per programmare questa scheda personalizzata, ma non ci sono ancora riuscito. L'applicazione ST-Link Utility su PC è in grado di riconoscere il programmatore, ma non è in grado di rilevare l'MCU di destinazione. I messaggi di errore che ho ricevuto sono stati: "Target non collegato" e "Errore di comunicazione USB ST-Link".

Ecco alcuni fatti correlati sul mio problema:

  • La scheda di rilevamento STM32 funziona perfettamente: posso utilizzare il ST-Link integrato per programmare la MCU STM32 integrata. Questo va bene.
  • La MCU STM32 è stata saldata con l'orientamento corretto sulla scheda personalizzata. L'ho controllato due volte.
  • Ho controllato le tracce VDD e SWD. Sono collegati bene (nessun problema di saldatura). Pin Boot0 è a 0 V. Il pin NRST è a 3,3 V.
  • Il cavo SWD è corto, lungo solo 7-8 cm.
  • L'STM32 sulla mia scheda personalizzata è dello stesso tipo di quella sulla scheda Discovery.
  • Ho seguito le istruzioni nel manuale della scheda di rilevamento STM32 su come utilizzare la scheda di rilevamento per programmare un MCU STM32 esterno. Per essere più specifici, ho rimosso i 2 jumper CN3 e quindi ho collegato le schede come in questa tabella: inserisci qui la descrizione dell'immagine

  • Ho anche rimosso il ponte di saldatura SB11 sulla scheda di rilevamento (in modo che il pin NRST possa funzionare correttamente).

  • Ho provato sia l'app ST-Link Utility che Keil. I messaggi di errore che ho ricevuto sono gli stessi.
  • Inizialmente non ho collegato il pin 6 nella tabella sopra (SWO) perché per quanto ne so non è necessario. Comunque dopo l'ho collegato anche io, ma le cose non hanno ancora funzionato.
  • Ho anche aggiunto un cappuccio da 100nF dal pin NRST a GND, e quindi un resistore pull-up da 100k da questo pin a VDD. Il problema rimane ancora.
  • Ho anche provato a utilizzare la modalità "Connetti in ripristino" del programma ST-Link Utility. Neanche fortuna.

Ho il sospetto che potrebbe esserci qualcosa di sbagliato nel design, ma non sono sicuro. Aiutatemi a risolvere il problema.

Grazie mille :)


Per quanto mi ricordo, devi alimentare sia lo st-link che la tua scheda personalizzata. 3.3V nel connettore SWD della scheda personalizzata deve fornire 3.3V per lo st-link da rilevare.
— davidrojas,

@davidrojas: grazie per la risposta. Bene, attualmente alimento ST-Link tramite la porta USB dal mio PC. La scheda STM32 personalizzata è alimentata da una 3.3V esterna separata. Tuttavia, la massa di queste 2 schede è già collegata (come nella tabella sopra). Inoltre, il 3.3V dalla mia scheda personalizzata è collegato anche a VDD_TARGET su ST-Link. Pensi che sia abbastanza?
— user3286500

Dovrebbe essere abbastanza, sì. Un altro problema potrebbe essere la lunghezza e il layout delle linee SWDIO e SWCLK, in passato ho avuto problemi di connessione intermittente. Devono essere il più corti possibile. Prova ad abbassare anche la velocità del SWD.
— davidrojas,

Ho abbassato la velocità SWD, da 1,8 MHz predefinito a meno di 400 kHz, ma non ho ancora avuto successo. Per quanto riguarda la lunghezza del cavo, nella mia configurazione la lunghezza totale della connessione SWD (da ST-Link al target STM32) è di circa 12-13 cm. È ancora nei limiti?
— user3286500

1
Hai notato che il getto di terra sotto il chip è fisicamente isolato e non collegato a nessuno dei pin di terra? Le connessioni effettive tra i pin di terra seguono percorsi tortuosi all'esterno del chip e alcuni di essi potrebbero effettivamente essere isolati. È necessario regolare le distanze in modo che il getto di terra non abbia isole isolate e ciò contribuirà a garantire che tutti i pin di terra del chip siano molto più vicini allo stesso potenziale.
— Dave Tweed,

Risposte:


5

Grazie per i tuoi fantastici commenti. Grazie a loro, sono stato sicuro che il mio design sia privo di errori. Ecco perché ho focalizzato la mia attenzione sulla ricerca di errori nell'hardware. E ho trovato l'errore! Questo è un errore di saldatura.

Ho trovato questo errore dopo aver seguito queste istruzioni: "Utilizzare un multimetro e testare tutte le connessioni per cortocircuiti o mancanza di connessione. Ricordarsi di toccare i pin / pad / qualunque cosa molto delicatamente, perché se si preme forte la sonda, è possibile" risolvere "la connessione temporaneamente (ad esempio si spinge il pin dell'IC sulla traccia sul PCB e il test è OK, ma non appena si rilascia il pin si piega di nuovo)". Il post originale è qui .

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.