Förstå Pull-Up-motstånd
Innan du dyker in i detaljerna för ESP32 pull-up stift, är det viktigt att förstå rollen av pull-up motstånd i en krets. När en digital ingångsstift lämnas flytande (inte ansluten till någon spänningskälla) kan den läsa slumpmässiga värden, vilket gör det svårt att bestämma dess logiska nivå.
För att undvika detta problem är ett pull-up-motstånd anslutet mellan ingångsstiftet och en spänningskälla (vanligtvis Vcc) för att säkerställa att ingången läser ett högt (logiskt 1) tillstånd som standard. När ingången är ansluten till en låg (logisk 0) signal, drar motståndet ingången ner till marken, vilket gör att ingången kan läsa ett lågt tillstånd.
Inbyggda Pull-Up Pins på ESP32
ESP32-mikrokontrollern har 34 ingångs-/utgångsstift (GPIO) för allmänna ändamål, som kan konfigureras som antingen digitala eller analoga stift. Bland dessa 34 stift har vissa stift inbyggda pull-up-motstånd som kan aktiveras av programvara.
Följande tabell visar stiften på ESP32 som har inbyggda pull-up-motstånd:
Pinkod | Pinnamn | Inbyggd Pull-Up Resistor |
0 | GPIO0 | Ja |
2 | GPIO2 | Ja |
4 | GPIO4 | Ja |
5 | GPIO5 | Ja |
12 | GPIO12 | Ja |
13 | GPIO13 | Ja |
14 | GPIO14 | Ja |
femton | GPIO15 | Ja |
25 | GPIO25 | Ja |
26 | GPIO26 | Ja |
27 | GPIO27 | Ja |
32 | GPIO32 | Ja |
33 | GPIO33 | Ja |
3. 4 | GPIO34 | Nej |
35 | GPIO35 | Nej |
36 | GPIO36 | Nej |
39 | GPIO39 | Nej |
Som du kan se har de flesta digitala stiften på ESP32 inbyggda pull-up-motstånd. Men inte alla stift har denna funktion. Stiften 34, 35, 36 och 39 har inte inbyggda pull-up-motstånd.
Notera: I ESP32 är Integrated pull-up och pull-down resistorer endast tillgängliga i stift som stöder både ingång och utgång. GPIO:er 34-39 , som är begränsade till endast ingång, har inte dessa motstånd inbyggda.
Kontrollera hela ESP32 Pinout Referens .
Aktiverar Pull-Up Resistors på ESP32
För att aktivera pull-up-motståndet på ett ESP32-stift kan du använda gpio_set_pull_mode() funktion som tillhandahålls av ESP-IDF ramverket.
Denna funktion tar två argument:
- GPIO-pinnumret
- Uppdragningsläget
Pull-up-läget kan vara antingen GPIO_PULLUP_ENABLE eller GPIO_PULLUP_DISABLE . Här är en exempelkod som aktiverar pull-up-motståndet på GPIO2:
#inkludera 'driver/gpio.h'tomhet enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Det är viktigt att notera att aktivering av pull-up-motståndet på ett stift kommer att påverka dess beteende när stiftet används som en utgång. I detta fall kommer pull-up-motståndet att fungera som en svag strömkälla och kan påverka utspänningsnivån.
Alternativt kan vi också aktivera interna pull-ups på ESP32 med hjälp av pinMode() Arduino funktion.
pinMode ( 5 , INPUT_PULLUP ) ;Ovanstående kod kommer att aktivera det interna pull-up-motståndet på stiftet 5 . På samma sätt kan du aktivera det interna neddragningsmotståndet genom att ange läget INPUT_PULLDOWN .
Slutsats
Pull-up-motstånd är viktiga komponenter i digitala kretsar, och ESP32-mikrokontrollern har inbyggda pull-up-motstånd på de flesta av sina digitala stift. Aktivering av dessa motstånd kan säkerställa stabila logiska nivåer och undvika flytande ingångsproblem. Det är dock viktigt att notera att inte alla stift på ESP32 har inbyggda pull-up-motstånd, så det är viktigt att kontrollera ESP32 pinout eller datablad innan du designar en krets. Dessutom kan aktivering av pull-up-motståndet påverka stiftets beteende när det används som utgång.