Transmisión / recepción asíncrona de bits en serie

1

Estoy haciendo esta pregunta estúpida para mi conocimiento general. ¿Por qué en el protocolo serial a menudo se envía primero el bit menos significativo? Por ejemplo, en UART, el byte de datos 10101100b (0xAC) se envía como 00110101b (0x35). ¿Qué diseñador de protocolo puede haber considerado?

    

2 respuestas

2

si está generando un número en binario, el bit de "mano derecha" es el menos significativo, y los procesos suelen contar el índice o "posición de bit" que va hacia la izquierda hacia el bit más significativo. Esto, por supuesto, está completamente relacionado con la "endianzabilidad" de la arquitectura del sistema, que determina si es el bit 7 o el bit cero como el más significativo.

Un código psuedo para el receptor en un registro de desplazamiento de un UART podría ser:

  • Oh, mira, ¡detecté un bit de inicio!
  • Oh, mira, ¡hay más bits que se ajustan a mi configuración de velocidad en baudios! (no se ha agotado el tiempo de espera, y no demasiado rápido para que se considere ruido, etc.)
  • para cada bit, el índice de inicio 0, si el bit es alto, coloque un 1 en el registro de desplazamiento; de lo contrario, coloque un cero en el registro de desplazamiento
  • después del número x de bits de datos (podría ser de 8 a 10 bits de datos en una trama serie) el proceso ha finalizado y el indicador para que el microcontrolador lea mi registro de datos de recepción!

    Todo esto está seguido, por supuesto, por 1 o 2 bits de parada, y luego la línea de datos se mantiene en cualquier nivel de inactividad (¿generalmente alto?) hasta que se detecte la próxima transmisión.

El software serial utiliza el mismo estilo de pensamiento para cambiar los bits. A medida que cambia el nivel del pin, aumenta el índice de bits y configura / restablece el bit en una variable de "byte recibido". Se basa esencialmente en la endiancia del sistema (little o big endian) y en el hecho de que a los programadores les gusta utilizar la indexación 0 y comenzar en el extremo inferior de una variable. Los registros de cambio de transmisión de UART del hardware generalmente cambian los datos "hacia atrás" de lo que usted espera, como mencionó en su pregunta.

    
respondido por el KyranF
1

Por lo que yo sé, fue una elección arbitraria hecha en el momento en que se concibió el protocolo serie asíncrono. Otros protocolos seriales, por ej. SPI, envía el MSB primero. Esto último me parece más natural, pero en última instancia, hace muy poca diferencia.

    
respondido por el markt

Lea otras preguntas en las etiquetas