Aclarando algunas dudas respecto al registro PUPDR del GPIO [STM32]

Puede parecer una pregunta trivial, pero ¿cuándo se usa Pull up y Pull down como PUPDRregistro del GPIO? Supongo que se usa para definir el estado predeterminado del pin.

A continuación se incluye la imagen del botón pulsador en la placa nucleo STM32F401. Es evidente que PC13IO se eleva a través de una resistencia de extracción en caso de que no se presione el botón.

ingrese la descripción de la imagen aquí

Entonces, el pin IO como se muestra a continuación ya está alto, ¿no es así? ¿Importa si PC13está configurado para estar en modo Pull upo Pull downevento?

ingrese la descripción de la imagen aquí

En segundo lugar, para el LED ( LD2) que está conectado PA5: si el PUPDRde este pin está configurado para tirar hacia abajo, hay una resistencia desplegable (como se muestra en la imagen IO de arriba) que está conectada PA5y para tirar hacia arriba, hay un pull up a VDD ? Suponiendo que ese sea el caso, ¿no debería LD2estar "encendido" al inicio del programa si PUPDRestá configurado en PULL UP? (no parece ser el caso conmigo)

ingrese la descripción de la imagen aquí

Respuestas (1)

Según la hoja de datos , el valor de las resistencias pull up y pull down es nominal 40K. (Tenga en cuenta que, a menudo, los valores de subida y bajada pueden ser diferentes).

Para el caso de PC13, anote el valor de la resistencia pull up externa - 4K7. Esto es mucho más bajo que las resistencias de extracción internas.

  • Si el pull up está habilitado, el valor resultante es 4K7 || 40K, que es 4K2.

  • Si el pull down está habilitado, entonces forma un divisor de voltaje. Debido a que el pull down es mucho mayor que el 4K7, el voltaje de entrada estará por encima del umbral alto.

Probablemente hayan puesto un tirón más fuerte aquí porque saben que se usará para un interruptor y tiene potencial para captar interferencias externas. El condensador C15también ayuda en este sentido.

Para PA5, el valor de la resistencia pull up es tan alto que no habrá suficiente corriente para encender el LED.

Lo siento, ¿cuál es el valor de la impedancia de entrada de la MCU? Por lo general, está en mega ohmios (no estoy seguro acerca de la serie STM), pero si ese es el caso, su punto sobre no generar suficiente corriente para encender el LED tiene sentido. (suponiendo que pull up esté habilitado, tiene 40K y la impedancia de entrada de MCU en serie). No estoy seguro acerca de su explicación sobre el botón pulsador, y cómo es 4K7mayor que el tirón interno que es40K
@Pokloha Lo siento, error tipográfico en 4K7 > 40k. Se agregó algo más de información. La impedancia de entrada es tan grande que no importa. Estará en paralelo con la resistencia de extracción, por lo que el valor efectivo será ~40K. ¿Tiene sentido?
40K || 4k7 ~ 4k7y no ~40Kaunque a menos que te estés refiriendo a otra cosa? ¿No es esto lo que parece con el botón pulsador ( tinyurl.com/yddcgj6h )?
Si se configura pull up, veo que están en paralelo, lo que resulta en ~4k7una impedancia de entrada. si se configura pull down, obtienes ~ 3.3V en la entrada tirando de ella hacia arriba. No estoy seguro de lo que sucede cuando se establece pull up y cuando no se establece pull up ni pull down (flotante). ¿No está R30 allí para tirar del alfiler alto de todos modos?
@Pokloha - eso es lo que escribí - 40K || 4K7 ~ 4K2. En su esquema vinculado, el 40Kmenú desplegable no debe estar conectado. R30siempre tira del pin alto, como mencioné en mi respuesta, la razón por la que tienen este pull up más fuerte es que está en un pin que se conecta al "mundo" (no a otro IC), y es más probable que se vea afectado por la interferencia. El 4K7tirón más fuerte mitiga eso, mientras que el 40Ksolo podría no ser lo suficientemente fuerte. ¿Eso responde a tu consulta?
Puse 40K pull down porque eso es lo que tiene el esquema de la MCU, y suponiendo que pull down esté ENCENDIDO, forma un divisor de voltaje entre 4.7K y 40K que le da ~ 5V en el pin IO, ¿no?
@Pokloha No hay un pull up/down conmutable en el esquema: son internos al microcontrolador. Hay R30un fuerte tirón externo en PC13. Para los tirones intercambiables, no puede tener ambos al mismo tiempo. Si configura PC13como pull up , tiene un pull up efectivo 40K || 4K7y si habilita el pull down , obtiene un divisor de voltaje como dije en la respuesta. :)