Utilizzo della resistenza pull-up e pull-down sui pin MCU di input o output


18

Le resistenze pull-up / down (interne o esterne) sono necessarie solo per i pin MCU INPUT? Al contrario, un pin MCU configurato come OUTPUT "sa a che livello si trova" perché fa la guida - un pin "fluttuante" MCU OUTPUT collegato a un ingresso di un altro circuito non ha senso, perché lo stato del pin MCU può essere solo alto o basso ... ho questo giusto? Ora, all'avvio o al fallimento dell'MCU, può essere utile avere un pull-up / down legato a questa linea "MCU output to IC input" per garantire che l'ingresso a qualche IC non sia mai mobile.

Forse ho appena risposto alla mia domanda qui ... I resistori pull-up / down possono essere usati su entrambi i pin di input e output, a seconda dell'applicazione?

Risposte:


21

I pull-up e i pull-down sono normalmente utilizzati per garantire che una linea abbia uno stato definito mentre non è guidata attivamente. Vengono utilizzati sugli ingressi per impedire le linee fluttuanti, passando rapidamente tra regione alta e bassa e una regione "non definita" media. Le uscite normalmente non ne hanno bisogno.

Ma la maggior parte dei pin MCU sono GPIO, e talvolta all'avvio sono definiti come input anziché output. Come hai detto, a volte non si desidera che un ingresso pin IC galleggi all'avvio, in particolare come un pin di ripristino che normalmente si guida con il GPIO del microcontrollore.

Questo è quando si utilizza un debole pull-up o pull-down sulla linea. Poiché sono deboli e si sceglie lo stato predefinito, non forniscono alcuna interferenza con il circuito (se l'ingresso deve essere sempre basso, quindi tirato su alto, si sceglie un pull-down debole e viceversa), ma consumano un po 'di corrente. Questo è il motivo per cui si sceglie un resistore debole (più alto è il valore, più debole) abbastanza per il lavoro.

Un'altra configurazione di output normale che utilizza pull-up (o pull-down, più rari) sono le connessioni Open Drain o Open Collector . Questi guidano solo una connessione bassa o rilasciano la linea, lasciandola mobile. I pull-up vengono utilizzati per portare la linea in uno stato logico elevato.


Citi le connessioni Open Drain e Open Collector, queste non si applicano ai microcontrollori, vero? I soli mosfet vengono utilizzati per impostare un livello logico? Volevo chiarire se un microcontrollore può o meno guidare una linea che ha un resistore pull down alto.
genericpurpleturtle,

9

Hai ragione? normalmente non hai bisogno di pullup sulle uscite, ma possono essere utili per mantenere la sicurezza durante l'avvio, ecc.

Un altro motivo per utilizzare un pull-up su un'uscita: se più uscite di più MPU sono collegate tra loro, in realtà non si desidera che un VCC sia pilotato e un altro 0V sullo stesso filo! Quindi o guidi 0 V sull'uscita o disattivi l'uscita (forse configurandolo come input). Quando tutte le uscite sono disattivate, il filo viene tirato su "1" (Vcc) dal pullup. Questo è chiamato segnale "cablato AND". (Puoi fare lo stesso guidando '1' o fuori, con un pulldown R, quindi si chiama OR cablato).

Questo modello ha diversi usi tra cui consentire a qualsiasi MPU di segnalare un errore o accendere un LED o consentire a tutti di alternarsi inviando messaggi l'un l'altro su un singolo filo.


4

Come hai affermato, l'uso di resistori pullup / pulldown sui pin che dovrebbero essere pin di uscita può essere lì per garantire uno stato di ingresso.

Questo viene fatto per mitigare i guasti del firmware / MCU, ma funzionerà solo per proteggere dallo stato di Hi-impedance (fondamentalmente il pin è configurato come input per errore).

La maggior parte degli MCU ho familiarità con i pin IO predefiniti allo stato di ingresso ad alta impedenza all'avvio (ma nessuna garanzia, e non ho esperienza con quasi tutte le famiglie di MCU), il che significa che può impiegare un po 'di tempo prima che il codice inizializzi il pin lo stato viene eseguito.

A volte questo non importa, altre volte lo fa.


Grazie per la risposta, che complimenti anche alle altre risposte! Cordiali saluti, la serie PIC24F imposta automaticamente i pin GPIO su alta impedenza (input) al momento del ripristino (foglio dati pin I / O).
The_Ders,

3

La risposta è che dipende dalla famiglia di microcontrollori e quale è il comportamento predefinito in Power On Reset. Se il microcontrollore può essere configurato solo per "output" o "input" su un pin, questo di solito significa che sta usando un driver Totem-Pole per output - il che significa che è essenzialmente l'output di un gate CMOS, nel qual caso il l'output è sempre guidato su un binario, quindi non c'è motivo di influenzarlo passivamente. L'unico caso in cui ha senso usare pull-up / pull-down su un'uscita è quando è configurato come topologia Open Collector / Open Drain. È molto più comune vedere le opzioni pull-up / pull-down interne che sono applicabili solo quando un pin è configurato come input. Se puoi garantire che nel tuo sistema l'input sia sempre guidato da qualcosa, questo spreca un po 'di energia.


Ottima spiegazione a livello hardware. Grazie!
The_Ders,

2

Puoi avere un pin che è un output qualche volta , come per fare I2C.


Lo terrò presente quando lavorerò con I2C in futuro. Credo con la serie PIC24F, il modulo I2C assume il pieno controllo sui pin e le linee richiedono pull-up esterni. Ora so perché: il modulo I2C sta essenzialmente configurando il pin di dati come uscita open-drain / collector (che richiede una resistenza di pull-up) o ingresso ad alta impedenza, a seconda che i dati vengano inviati / immessi da / verso Modulo I2C ... ho questo diritto? Non ho familiarità con I2C.
The_Ders,

Esatto.
pjc50,

I2C è un'istanza del modello AND cablato. Open collector rende tutto più semplice con un pin GPIO.
Brian Drummond,
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.