Consideraciones al usar resistencias pull-up/down internas

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 proporcionar una 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 propio microcontrolador.

¿Será eso algo bueno para hacer?

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

Uso el pu/pd interno siempre que puedo y hasta ahora no he tenido problemas. Entonces, a menos que tenga una razón válida para no usar el menú desplegable incorporado, 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 altera más fácilmente que, por ejemplo, una resistencia de 10 kohm.
@Falso - Gracias. Parece que puedo usarlo sin ninguna preocupación. Mi entrada es opto-aislada.
Una pequeña nota: es posible 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 iniciar. Si solo lo lee el micro, esto no es un problema.
@ pjc50 debería haber publicado eso como respuesta, no me di cuenta de su comentario hasta después de publicar mi respuesta.
Si no puede confiar en la resistencia pull up en un microcontrolador, no puede confiar en nada en ese controlador. Sin embargo, lo que quieres saber es si es útil.
@Passerby - Sí, tienes razón. Elección incorrecta de palabras de mi parte.
@Whiskeyjack: debería considerar cambiar el título de las preguntas. Tal vez "Consideraciones al usar resistencias pull-up/down internas" o algo así.
@rev: sí, ese es un título mucho mejor que el que sugirió. Gracias.

Respuestas (5)

Sí... Puedes... Es una característica comprobada. Si ve la estructura de pines en el manual de referencia de STM32, puede ver que tiene los componentes requeridos:

Estructura de pines STM32

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

Editar Recuerde que en el encendido, los pines se restablecerán. Si no obstaculiza su aplicación, ¡es bueno! Es por eso que es una buena práctica iniciar primero la sección IO y luego continuar con otros periféricos.

Correcto, pero aún durante el reinicio está triestablecido, ¿verdad?
Respondí a la pregunta "¿Debería confiar en la función desplegable del microcontrolador?" y ahora la pregunta misma cambió :-/ Y con la nueva pregunta, ¡la respuesta de Bence Kaulics es más precisa!
Pregunta: ¿El uso de un montón de resistencias pullup/down internas hará que el chip se caliente?

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

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

Las resistencias pull-up y pull-down internas del STM32 suelen tener un valor entre 30   k Ω y 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.

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 de las principales razones para utilizar resistencias pullup o pulldown externas.

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

  • te acuerdas de configurarlos,
  • son lo suficientemente fuertes,
  • no terminas combatiéndolos 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 un 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 extracción externas producirán un diseño más conservador.

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ño a un dispositivo, pero pueden estar en órdenes de magnitud por encima del mejor de un dispositivo. caso corrientes de sueño. En algunos casos, tales corrientes no importan; en otros son un asesino absoluto.
+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 inicia. Esto es más difícil de lo que parece, si 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.

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

Por supuesto, algunos microcontroladores (¿muchos?) tienen pines de drenaje abiertos específicamente para I2C que puede configurar
No he visto nada más que subidas y bajadas débiles, @Thomas