Este diseño implementa un transmisor UART usando registros hechos de flip flops tipo D y multiplexores.
Antecedentes
UART significa Transmisor Receptor Universal Asíncrono y es un protocolo serial común, útil para obtener datos desde/hacia un dispositivo, por ejemplo, entre un Arduino y una computadora o un sensor.
UART funciona enviando datos de marcos de forma secuencial (es decir, un bit después de otro) a una tasa de datos previamente especificada, también conocida como tasa de baudios. Aunque varios marcos de datos diferentes son posibles, comúnmente se utiliza el protocolo 8N1 para enviar 8 bits con Ningún bit de paridad y 1 bit de parada. Podemos observar este protocolo en la imagen a continuación. Algunas cosas a tener en cuenta:
La duración de un bit se determina por la tasa de bits del transmisor y receptor UART, y la tasa de datos debe establecerse en el mismo valor en el transmisor y el receptor para una comunicación exitosa.
Este circuito, inspirado en @maehw, implementa un registro de desplazamiento (shift register) con 17 bits: cuatro bits de inactividad, un bit de inicio, ocho bits de datos, un bit de parada y tres bits más de inactividad.
El circuito admite transmitir un carácter ASCII seleccionado por el usuario desde 0x40 (@
) hasta 0x5F (_
), incluyendo letras mayúsculas del alfabeto latino.
Cómo usar
Ejemplo enviando ‘A’
Serial.begin(<baud rate>);
en el archivo *.ino a 300"attrs": { "frequency": "300" }
en el diagram.json a 300 también¡Felicidades! Ahora deberías ver la letra impresa en el monitor serial de Arduino Wokwi en la parte inferior de la simulación.
Ten en cuenta que pueden aparecer caracteres basura al inicializar.
SW | Función |
---|---|
1 | N/A |
2 | Bit 0 |
3 | Bit 1 |
4 | Bit 2 |
5 | Bit 3 |
6 | Bit 4 |
7 | Cargar/TX |
8 | Habilitar salida |
Este circuito implementa cinco registros de desplazamiento para transmitir ‘Tiny\n’.
Cada columna de flip flops almacena un único carácter ASCII. Para modificar un carácter, cambia los bits 6-0 modificando si el multiplexor correspondiente está establecido en VCC o GND.
Para agregar caracteres, copia y pega una columna. Conecta la salida de la nueva columna (puerto Q del flip flop superior) a la entrada de la etapa a la izquierda (puerto más a la izquierda del multiplexor inferior). Recuerda conectar la señal de selección del multiplexor y el reloj a la nueva columna también.
Por último, elimina la salida de la primera columna (puerto Q del flip flop superior) y crea una nueva conexión a la entrada de la nueva etapa que has agregado (puerto más a la izquierda del multiplexor inferior).
Cómo usar
Para comenzar la transmisión:
Serial.begin(<baud rate>);
en el archivo *.ino a 300"attrs": { "frequency": "300" }
en el diagram.json a 300 también¡Felicidades! Ahora deberías ver tus letras personalizadas impresas en el monitor serial de Arduino Wokwi en la parte inferior de la simulación.
Ten en cuenta que pueden aparecer caracteres basura al inicializar.
SW | Function |
---|---|
1 | N/A |
2 | N/A |
3 | N/A |
4 | N/A |
5 | N/A |
6 | N/A |
7 | Cargar/TX |
8 | Habilitar salida |