Tire de las resistencias en UART

16

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 del 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?

Whiskyjack
fuente
1
Cuando UART está inactivo, ambas líneas son altas. El bit de inicio en UART es la primera transición de alto a bajo en la línea. Por lo tanto, se levantan.
Swanand
@swanand - Eso es lo que incluso pensé. Me pregunto por qué esta nota de aplicación recomendaría pull ups.
Whiskeyjack
1
Probablemente para garantizar ciertos requisitos, como que es alto antes de que el micro finalice su ciclo de energía o que los tiempos de subida sean lo suficientemente rápidos ...
zakkos
1
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 estar en lo cierto. También vea la nota debajo del esquema: solo es necesario si el host no tiene un pull up propio, por lo que parece aún más probable que esté allí para evitar algún requisito para el estado de la línea.
Jan Dorniak
2
@swanand, lo que quise decir es que los pines UART se levantan por sí mismos. 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. :)
Whiskeyjack

Respuestas:

17

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

Algunos circuitos integrados de controladores 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 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 en serie (RXD) de UART porque el receptor de línea RS232 siempre conduce ese pin.

Tenga en cuenta que el período de reinicio suele ser un tiempo relativamente largo y que los pines de E / S utilizados como pines de salida son propensos a este problema y deben considerarse para una resistencia pull-up o pull-down.

TonyM
fuente
1
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.
diverger