Il LED si illumina debolmente quando UC è in reset

Aug 19 2020

Ho progettato un PCB che ha un STM32G431CBT6 su di esso. Sono inoltre presenti due LED, uno rosso e uno verde, collegati come mostrato:

Quando l'ho acceso per la prima volta (quindi nessun programma su UC ancora), il LED rosso si illuminava debolmente. Dopo aver caricato un programma lampeggiante LED sull'UC, funziona bene (con piena luminosità), tuttavia se premo il pulsante di reset, il LED rosso si accende di nuovo debolmente e la tensione su R1 è 120mV. Quindi 120uA scorre per qualche motivo. L'altro LED non lo fa e la tensione su R2 è 0.

Guardando la scheda tecnica ho trovato solo questa nota su PB4 (pagina 60):

"Dopo il ripristino, questi pin vengono configurati come funzioni alternative di debug JTAG / SW e vengono attivati ​​il ​​pull-up interno sui pin PA15, PA13, PB4 e il pull-down interno sul pin PA14."

Ma anche se c'è un pull-up su PB4, il LED non dovrebbe essere acceso, quindi cosa causa questo comportamento?


Modificare:

Dopo aver messo da parte il progetto per un po ', ora non lo fa, ma non so cosa sia cambiato. Stavo solo armeggiando con le impostazioni di avvio nei byte delle opzioni (con l'utilità ST-Link), anche se non penso che abbia nulla a che fare con il menu a discesa UCPD.

A proposito, ho trovato l'impostazione predefinita per disabilitare il pull-down:
(e sì, si chiama "pull-up" nelle impostazioni, ma sembra essere un errore)

Quando è selezionato (predefinito), inserisce l'estensione

HAL_PWREx_DisableUCPDDeadBattery();

chiamata di funzione nella funzione HAL_MspInit.

Se deselezionato, il LED si illuminava debolmente anche dopo il ripristino, quindi ha verificato la risposta accettata alla domanda originale. Fino a quando non ha iniziato a non fare mai più la luce fioca.

Sommario:

  1. In origine il LED si illuminava debolmente solo durante il ripristino.
  2. Ciò era dovuto al pull-down UCPD, che è stato disabilitato dalla casella di controllo "salva potenza di UCPD non attivo - pull-up batteria scarica disattivata" selezionata per impostazione predefinita. Ho potuto verificarlo deselezionandolo e non configurando il pin GPIO per il LED, il che ha comportato una scarsa illuminazione anche dopo il ripristino.
  3. È successo qualcosa e ora non lo fa mai, indipendentemente dalla casella di controllo o dal ripristino. Forse il pull-down si è interrotto per qualche motivo? So solo che il pin GPIO stesso è funzionale, può pilotare correttamente il LED quando programmato.

Risposte

11 Justme Aug 19 2020 at 15:24

Nel manuale di riferimento si legge che questa particolare serie di MCU utilizza PB4 per uno dei pin CC del connettore USB-C. Ciò significa che il pin ha il supporto per una funzione di pull-down interna 5.1k attivata per impostazione predefinita al momento del ripristino, altrimenti potrebbe non essere possibile utilizzare il bootloader per scaricare il firmware tramite il connettore USB-C. Pertanto, se è necessario utilizzare JTAG, il pull-down può essere disabilitato. Quindi influenzerà anche il LED.

KyleB Aug 19 2020 at 14:55

Ciò che causa il comportamento è un errore da qualche parte. O non sei realmente connesso ai pin che pensi (anche l'ingegnere più veterano può farlo), o il manuale è in errore. Hai ragione. L'unico modo in cui possono essere scarsamente illuminati è se c'è un pull-down.

A volte la risposta è sepolta in profondità nel manuale.

Se ti infastidisce, mettici un forte pull-up.

citizen Aug 19 2020 at 15:43

Se è attivato da un pull-down predefinito su GND (e questo dovrebbe essere annotato nella scheda tecnica del microprocessore se questo pin ha un pull-down all'inizializzazione) allora sì è probabile che scarichi un po 'di corrente attraverso il led. Normalmente il codice inizializza tutti i pin a doppia funzione nel loro stato corretto e / o rimuove eventuali pull-down / pull-up che non sono necessari. Ma nel tuo caso dici che non c'è codice. Bene, con un codice di inizializzazione scritto correttamente il LED verrà inizializzato allo stato di avvio corretto (probabilmente OFF per impostazione predefinita). Se stai perdendo sonno, è meglio aggiungere un forte pull-up o assicurarti che il codice sia in esecuzione non appena accendi la scheda ed esegui il codice.