Comprensió de les resistències pull-up
Abans d'aprofundir en els detalls dels pins d'extracció ESP32, és important entendre el paper de les resistències d'extracció en un circuit. Quan un pin d'entrada digital es deixa flotant (no connectat a cap font de tensió), pot llegir valors aleatoris, cosa que dificulta la determinació del seu nivell lògic.
Per evitar aquest problema, es connecta una resistència pull-up entre el pin d'entrada i una font de tensió (normalment Vcc) per assegurar-se que l'entrada llegeix un estat alt (lògic 1) per defecte. Quan l'entrada està connectada a un senyal baix (0 lògic), la resistència tira l'entrada cap a terra, permetent que l'entrada llegeixi un estat baix.
Pins pull-up integrats a ESP32
El microcontrolador ESP32 té 34 pins d'entrada/sortida de propòsit general (GPIO), que es poden configurar com a pins digitals o analògics. Entre aquests 34 pins, alguns pins tenen resistències pull-up incorporades que es poden activar mitjançant programari.
La taula següent mostra els pins de l'ESP32 que tenen resistències d'extracció incorporades:
Número de pin | Nom del pin | Resistència Pull-Up incorporada |
0 | GPIO0 | Sí |
2 | GPIO2 | Sí |
4 | GPIO4 | Sí |
5 | GPIO5 | Sí |
12 | GPIO12 | Sí |
13 | GPIO13 | Sí |
14 | GPIO14 | Sí |
15 | GPIO15 | Sí |
25 | GPIO25 | Sí |
26 | GPIO26 | Sí |
27 | GPIO27 | Sí |
32 | GPIO32 | Sí |
33 | GPIO33 | Sí |
34 | GPIO34 | No |
35 | GPIO35 | No |
36 | GPIO36 | No |
39 | GPIO39 | No |
Com podeu veure, la majoria dels pins digitals de l'ESP32 tenen resistències d'extracció incorporades. Tanmateix, no tots els pins tenen aquesta característica. Els pins 34, 35, 36 i 39 no tenen resistències d'extracció incorporades.
Nota: A l'ESP32, les resistències de pull-up i pull-down integrades només estan disponibles en pins que admeten tant l'entrada com la sortida. GPIOs 34-39 , que es limiten només a l'entrada, no tenen aquestes resistències incorporades.
Comproveu el complet Referència de pinout de l'ESP32 .
Habilitació de resistències pull-up a ESP32
Per habilitar la resistència pull-up en un pin ESP32, podeu utilitzar el gpio_set_pull_mode() funció proporcionada pel marc ESP-IDF.
Aquesta funció pren dos arguments:
- El número de pin GPIO
- El mode pull-up
El mode pull-up pot ser qualsevol GPIO_PULLUP_ENABLE o GPIO_PULLUP_DISABLE . Aquí hi ha un exemple de codi que activa la resistència pull-up a GPIO2:
#inclou 'driver/gpio.h'buit enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
És important tenir en compte que habilitar la resistència d'extracció d'un pin afectarà el seu comportament quan el pin s'utilitza com a sortida. En aquest cas, la resistència pull-up actuarà com una font de corrent feble i pot afectar el nivell de tensió de sortida.
Alternativament, també podem habilitar pull-ups interns a ESP32 mitjançant el pinMode() Funció Arduino.
pinMode ( 5 , INPUT_PULLUP ) ;El codi anterior habilitarà la resistència d'extracció interna al pin 5 . De la mateixa manera, podeu habilitar la resistència desplegable interna especificant el mode INPUT_PULLDOWN .
Conclusió
Les resistències pull-up són components essencials en els circuits digitals, i el microcontrolador ESP32 proporciona resistències pull-up integrades a la majoria dels seus pins digitals. Habilitar aquestes resistències pot garantir nivells lògics estables i evitar problemes d'entrada flotant. Tanmateix, és important tenir en compte que no tots els pins de l'ESP32 tenen resistències d'extracció incorporades, per la qual cosa és important comprovar el Pinout de l'ESP32 o full de dades abans de dissenyar un circuit. A més, l'habilitació de la resistència pull-up pot afectar el comportament del pin quan s'utilitza com a sortida.