Tire de las resistencias en UART

Estaba revisando una nota de aplicación AN2606 donde encontré este diagrama de conexión:

ingrese la descripción de la imagen aquí

Según mi conocimiento, UART es de tipo push-pull y Tx proporciona el pull-up requerido y, por lo tanto, no necesitamos usar pull-ups externos. ¿Me estoy perdiendo de algo?

Cuando UART está inactivo, ambas líneas están altas. El bit de inicio en UART es la primera transición de alto a bajo en la línea. Por lo tanto, se tiran hacia arriba.
@swanand - Eso es lo que incluso yo pensé. Me pregunto por qué esta nota de la aplicación recomendaría pull ups.
Probablemente para garantizar ciertos requisitos, como que esté alto antes de que el micro termine su ciclo de encendido o que los tiempos de subida sean lo suficientemente rápidos...
He usado UART varias veces en STM32 y no he tenido ningún pullup, aunque admití que no era para el gestor de arranque, por lo que @zakkos podría tener razón. Consulte también la nota debajo del esquema: solo es necesario si el hostst no tiene un pull up propio, por lo que parece aún más probable que esté allí para garantizar algún requisito para el estado de la línea.
@swanand: lo que quise decir fue que los pines UART se levantan solos. No deberíamos necesitar pull ups externos como se muestra en la imagen. Los pines Tx son responsables de conducir la línea ALTA sin necesidad de resistencias externas. La respuesta de Tony explica el requisito de esas resistencias. :)

Respuestas (2)

Mientras el microcontrolador está reiniciado, sus pines de E/S se configurarán como entradas de alta impedancia. Por lo tanto, el pin utilizado para la transmisión de datos en serie UART (TXD) estará flotando durante este tiempo. Esto puede provocar que el controlador de línea RS232 transmita ruido y basura.

Algunos circuitos integrados de controlador de línea tienen resistencias pull-up internas en sus pines de entrada del lado TTL/LVTTL para evitar esto y producir un estado inactivo de RS232. De lo contrario, se puede agregar una resistencia pull-up.

No es necesaria una resistencia pull-up en el pin de entrada de datos de recepción serie (RXD) del UART porque el receptor de línea RS232 siempre está manejando ese pin.

Tenga en cuenta que el período de reinicio suele ser relativamente largo y que cualquier pin de E/S utilizado como pin de salida es propenso a este problema y debe tenerse en cuenta para una resistencia pull-up o pull-down.

Acerca de RXD, si el lado del host no tiene pull-up en su pin 'TXD', el pin 'RXD' en el lado esclavo (lado STM32) también puede necesitar pull-up.
Ver diagrama de preguntas. RXD siempre es impulsado por un receptor de línea RS232, nunca flota, por lo que no es necesario tirar, como dice la respuesta.

Los pull-ups son significativos en caso de que el micro esté en modo de arranque. En ese caso, el ciclo del micro en diferentes puertos (uart, usb I2C, can) según el tipo de micro.

Si el puerto de entrada no está activado, el ruido podría eventualmente dejar que el micro piense que hay una transmisión en ese puerto y luego espere un bot de un puerto que no está conectado a nada. Tener un pull-up evitará este caso.