¿Baudios a la asignación de bits para el UART?

0

Antes de comenzar la pregunta, un recordatorio de la diferencia entre cómo se relacionan la velocidad en baudios y la velocidad en bits.

  

Dos personas están separadas 1 km y quieren intercambiar 8 bits de   datos. De antemano decidieron que a cada uno se les entregará banderas que tengan   Dígitos del 0-3 impresos en ellos. También acordaron que cambiarán la   bandera cada 1 segundo También acordaron el siguiente símbolo para morder.   mapeo:

     

0 - 00

     

1 - 01

     

2 - 10

     

3 - 11

     

Intercambiarán la información a una velocidad de 1 símbolo por   segundo. La velocidad en baudios es de 1 símbolo por segundo. La velocidad de bits es 2   porque un símbolo lleva 2 bits de información.

Para conectarnos a una consola serie de un dispositivo integrado, conectamos físicamente el dispositivo con un cable similar a éste . Después de especificar la velocidad de transmisión correcta, obtenemos un terminal y podemos comunicarnos con el dispositivo a través de nuestra PC.

Mi pregunta es si hay una asignación UART estándar entre los símbolos y los bits.

¿El símbolo UART a la asignación de bits es una relación uno a uno? Nivel de voltaje bajo - > 0 Nivel de voltaje alto - > 1?

Si no, ¿qué tipo de portadora de bits se utiliza?

    

4 respuestas

6

El UART utilizado en un puerto COM de la PC no realiza la modulación como tal, eso solo sucedería cuando envía los datos en serie a través de algo como un módem o un enlace de radio donde debe convertirse en una señal de audio en el rango transportado por una línea telefónica o utilizado para modular una onda portadora.

El "mapeo" está definido por el estándar de interfaz; en el caso de RS-232, cualquier cosa menor que -3V se considera una lógica 1 y cualquier otra mayor que + 3V una lógica 0.

    
respondido por el Finbarr
1

Lamentablemente no hay un término realmente bueno. RS-232 se usa incorrectamente a menudo para describir esta interfaz, supongo que UART es tan bueno como lo hemos hecho nosotros. En cuanto a la carga útil, los datos en sí, un símbolo es un bit.

Puedes simplemente buscar UART en wikipedia.

En cuanto a los niveles de TTL, la línea está inactiva en alto. Un bit de inicio tiene una duración de un bit y es bajo. Le dice al receptor que se enviarán algunos datos, el siguiente número de bits acordados en ambos lados, por ejemplo, que 7 u 8 bits es muy común que vengan al siguiente bit menos significativo primero. Una celda de bit por bit. Entonces, si desea enviar el byte 0x53, los siguientes bits serían 11001010. Y al menos un bit de parada, alto o, a veces, dos. Comience, carga útil, pare. Si no tenía otro personaje para enviar, simplemente dejó la línea en alto.

Otras opciones son paridad, par, impar o no (sin bit enviado). Entonces 8N1 es bastante común, 8 bits sin paridad un bit de parada. La paridad se calcula a través de la carga útil, los bits de datos, no el inicio y la parada.

Para enviarlo de una computadora a otra donde está el RS-232, define los niveles de voltaje y los pines, uno es algo menor que -3 voltios a -15 voltios, un cero es de +3 voltios a +15. Toma las señales de nivel TTL y las envía a través de un transceptor y luego a un conector común para convertirlo en un puerto COM o SERIAL en una PC, por ejemplo.

Baud y bitrate están relacionados si está utilizando 9600 baudios, es 9600Hz, cada celda de bit es 1/9600 o 0.000104 ... segundos o 9600 bit bit por segundo, pero no quisieron decir bits por segundo, porque uno no es necesariamente continuo y tiene algunas celdas de bits adicionales los bits de inicio, paridad y parada que no son bits de datos. Por lo tanto, a 9600 baudios, si estuviera ejecutando 8N1, es decir, 10 celdas de bit por carácter o byte si va lo más rápido posible o 960 caracteres por segundo, 7680 bits de datos por segundo. 9600 8E1 es diferente, aunque las celdas de 11 bits un poco más lentas por carácter no son 10.

RS-232C, RS-485, RS-422 son diferentes estándares eléctricos para describir los niveles de voltaje en los bits, así como el conector o los pines u otros, por ejemplo, utilizando un par diferencial, un lado del par es el baja tensión para una, mientras que la otra señal en ese par sería la opuesta. De esta manera, el receptor puede medir la diferencia entre ellos, uno con relación al otro en lugar de una señal con respecto a una conexión a tierra común, para extraer el estado de uno o cero. RS-422 puede enviar datos de uart, al igual que RS-232, no define la naturaleza de inicio / parada / datos de la corriente de bits, solo describe los pines y el cableado de los niveles de voltaje.

Cuando tomas un arduino o una frambuesa pi, por ejemplo, estos tienen uarts, pero no son RS-232, destruirías los chips si los conectaras a RS-232, son niveles de ttl 5.0V o 3.3v con un cero en tierra y uno alto, puede comprar por un par de dólares o menos dispositivos usb a uart basados en chips FTDI y otros que pueden tratarse de la misma manera que un puerto com / serial en una computadora más antigua, windows , linux, etc. véalos como puertos com / tty y puede usar el mismo software, pero no son RS-232, son solo un nivel TTL y puede conectarlos directamente a su arduino o frambuesa u otro microcontrolador o procesador si los usa Los niveles de voltaje correctos y son seguros con su referencia de tierra.

    
respondido por el old_timer
1

Hay dos cosas sucediendo aquí.

Primero, la capa física: los dispositivos serie "UART" del tipo del que estamos hablando usan algún tipo de voltaje alto / bajo para indicar marcas y espacios. RS-232 utiliza +/- 12V; La serie TTL a menudo usa 0 / 3.3V, o algunas veces otros voltajes dependiendo del sistema. En cualquier caso, hay un bit por período de tiempo; este no es un sistema complejo de varios niveles del tipo al que alude su cotización.

En segundo lugar, la velocidad en baudios frente a la velocidad de bits. Convencionalmente, la mayoría de los enlaces en serie enviarán cada byte de datos como un bit de inicio (siempre bajo), ocho bits de datos y un bit de parada (siempre alto). Los bits de inicio / parada cuentan para la velocidad en baudios (porque llevan tiempo para transmitir), pero no como parte de la velocidad en bits (porque no son datos). Como tal, un enlace de 9600 baudios tiene una tasa de bits de 7680 bits por segundo (9600 x 8 ÷ 10).

    
respondido por el duskwuff
0

Las respuestas respondieron correctamente a mis preguntas y afirmaron que para UART los bits se asignan al símbolo de manera personalizada.

Independientemente del TTL, RS232 o RS422, siempre hay solo dos símbolos que representan dos bits binarios.

Las respuestas parecen seguir la siguiente terminología cuando se aborda la velocidad en baudios y la velocidad de bits para UART:

  • bitrate - > tasa de bits de la carga útil de datos
  • baudrate - > la tasa de bits de la carga útil de datos y la sobrecarga del protocolo

Encontré que esto es una gran fuente de confusión y me gustan mucho más las siguientes definiciones:

  • baudrate - número de símbolos físicos por segundo
  • bitrate - número de bits por segundo sin implicaciones de sobrecarga de datos / protocolo

Dado que hay 1 bit por símbolo para UART, creo que la noción completa de la velocidad en baudios en UART no debería introducirse de manera innecesaria. No es que el concepto no exista, pero proporciona poca importancia práctica e introduce confusión.

Encuentro que hablar a través de la velocidad en baudios tiene sentido en situaciones donde los esquemas de modulación física llevan más bits por símbolo.

    
respondido por el TheMeaningfulEngineer

Lea otras preguntas en las etiquetas