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.