Consideraciones al usar resistencias pull-up / down internas

11

Estoy trabajando con microcontroladores STM32. Estos microcontroladores tienen la opción de configurar el pin de entrada como pull up o pull down:

ingrese la descripción de la imagen aquí

Anteriormente solía dar resistencia externa pull-up o pull-down donde fuera necesario, pero ahora me pregunto si puedo eliminar los componentes externos y usar la función pull-down del microcontrolador.

¿Será eso algo bueno que hacer?

¿Hay algún caso de uso en el que deba tomar precauciones adicionales o no usar esta función?

Whiskyjack
fuente
2
Uso el pu / pd interno siempre que puedo y no tuve problemas para sofar. Por lo tanto, a menos que tenga una razón válida para no usar el pull-up incorporado, solo puede usarlos. Una razón para no confiar en el pu / pd interno podría ser que la entrada tiene un cable largo conectado que podría acoplarse a otras líneas y causar un comportamiento inesperado. El pu / pd interno es bastante débil (para ahorrar corriente) y se perturba más fácilmente que, por ejemplo, una resistencia de 10 kohm.
Bimpelrekkie
22
Una pequeña nota: puede que no funcione como un pullup mientras el microcontrolador se reinicia. Entonces, si hay un circuito externo que depende de que se desconecte todo el tiempo, es posible que tenga un problema al inicio. Si solo lo está leyendo el micro, esto no es un problema.
pjc50
1
@ pjc50 deberías haber publicado eso como respuesta, no noté tu comentario hasta después de haber publicado mi respuesta.
Jason S
1
Si no puede confiar en la resistencia pull-up de un microcontrolador, no puede confiar en nada en ese controlador. Sin embargo
Passerby el
1
@Whiskeyjack: Debería considerar cambiar el título de las preguntas. Tal vez "Consideraciones al usar resistencias pull-up / down internas" o algo así.
Rev1.0

Respuestas:

15

Sí ... puedes ... Es una característica comprobada. Si ve la estructura del pin en el manual de referencia STM32, puede ver que tiene los componentes necesarios:

Estructura del pin STM32

Si esto satisface sus requisitos, puede eliminar los componentes externos.

Editar Recuerde que en Power up, los Pins serán tristados. Si no obstaculiza su aplicación, ¡está bien! Es por eso que es una buena práctica iniciar la sección IO primero y luego continuar con otros periféricos.

Swanand
fuente
1
Correcto, pero aún así durante el reinicio se trista ¿verdad?
seetharaman el
1
Respondí a la pregunta "¿Debería confiar en la función desplegable del microcontrolador?" y ahora la pregunta misma cambió: - / ¡Y con una nueva pregunta, la respuesta de Bence Kaulics es más precisa!
Swanand
Pregunta: ¿el uso de un conjunto de resistencias pullup / down internas hará que el chip se caliente?
Caleb Reister
16

En general, está perfectamente bien usar las resistencias internas pull-up o pull-down.

La desventaja es que puede olvidarse de habilitarlo desde el software, que puede causar un poco de dolor de cabeza. Los pull-ups externos siempre estarán ahí. Por lo tanto, no olvide habilitar los internos y ahorrar una gran cantidad de área de PCB al reducir el número de componentes.

30 kΩ50 kΩ

ingrese la descripción de la imagen aquí

Siempre debe verificar si su aplicación necesita un cierto valor de resistencia pull-up o pull-down antes de usar las resistencias internas. Por ejemplo , no los use con I 2 C , ya que estos valores serán demasiado altos para eso.

Bence Kaulics
fuente
12

A menos que las resistencias pullup y pulldown estén activas durante el reinicio (sospecho que no lo están, pero no estoy familiarizado con los dispositivos STM32), hay un estado de pin indefinido en el reinicio. Esta es una razón importante para usar resistencias pullup o pulldown externas.

Jason S
fuente
10

Como otros han dicho, los pull-ups internos y pull-down están bien siempre que:

  • recuerdas configurarlos,
  • son lo suficientemente fuertes
  • no terminas luchando contra ellos con un tirón externo, y
  • el voltaje en el arranque y reinicio no es importante.

En el último punto, recuerde que las entradas CMOS a nivel de voltaje medio pueden causar una corriente de disparo significativa en su par de entrada. Esto puede causar un problema en un sistema de baja potencia durante el arranque.

En general, las resistencias de tracción externas producirán un diseño más conservador.

Ricardo
fuente
1
Con respecto a las corrientes de disparo, podría ser útil poner las cosas en perspectiva al señalar que para la mayoría de los microcontroladores, los niveles generalmente están muy por debajo de cualquier cosa que pueda causar daños a un dispositivo, pero pueden ser órdenes de magnitud superiores a los mejores de un dispositivo. caso de las corrientes de sueño. En algunos casos, tales corrientes no importan; en otros son un asesino absoluto.
supercat
1
+1 para "el voltaje al inicio y reinicio no es importante". Debe garantizar que el resto de su circuito esté en un estado seguro y en reposo mientras el micro se está iniciando. Esto es más difícil de lo que parece, cuando considera que un reinicio o un ciclo de encendido rápido pueden dejar el resto de su circuito en un estado indeterminado, o dejarlo encendido y funcionando sin que el micro lo vigile.
Graham el
3

Además de las otras excepciones que figuran en todas las respuestas, las resistencias pull-up internas son demasiado débiles para I²C en muchos casos.

Scott Seidman
fuente
Por supuesto, algunos (¿muchos?) Microcontroladores tienen pines de drenaje abierto específicamente para I2C que puede configurar
Thomas
1
No he visto nada más que subidas / bajadas débiles, @Thomas
Scott Seidman