Comunicación serial usando el modulo UART El modulo UART es empleado para la transmisión y recepción de datos paralelos de 8-bit o 9-bit sobre una línea de transmisión y una de recepción serial.
Un receptor-transmisor asincrónico universal ( Universal (U Asynchronous Receiver-T eceiver-Transmitter) por naturaleza, significa que el transmisor y receptor no están sincronizados. Para ello tanto el transmisor como el receptor hacen uso de una referencia de tiempo que permite una tolerancia adecuada para la transmisión de cada dato.
Comunicación serial usando el modulo UART Definición del protocolo ( handshake ) El dato es transmitido enviando primero el LSB a una velocidad de bit (Baud Rate), que es conocida por el transmisor y el receptor
El receptor necesita un método de identificación para conocer cuando el LSB esta siendo enviado. Esto se logra por la transmisión de un bit de sincronismo cuya representación corresponde a un tiempo de bit.
Comunicación serial usando el modulo UART Conjunto de reglas 1 start bit
•
8 (9) data-bits: NRZ “non-return-to-zero”
•
•
1 (2) stop
Electronic Industries Alliance (EIA) RS-232 standard Especifica las características eléctricas, mecánicas y funcionales para los equipos de comunicación.
Comunicación serial usando el modulo UART Sincronización El receptor emplea el flanco de bajada del bit Start para iniciar un circuito interno de temporización que permite muestrear el valor del bit de entrada serial en un punto aproximadamente en el medio de cada bit, punto en donde el bit deberá ser mas estable.
1 tb
0
1
0
0
1
0
1
Comunicación serial usando el modulo UART Algoritmo La rata de muestreo es 16 veces la velocidad de bit, esto significa que cada bit es muestreado 16 veces. •
En el flanco del bit de Start un contador inicia un conteo hacia 7, alcanzando el punto medio del bit. El contador es inicializado a 0. •
Cuando el contador realiza 16 conteos (0-15) alcanza el punto medio del bit y su valor en ese instante es almacenado en un registro de desplazamientos. El contador es inicializado a 0. El proceso se repite N-1 + M veces. •
Luego de que el MSB ha sido muestreado, el receptor verifica si el bit de stop es el valor esperado (1) el cual confirma la correcta operación. El receptor es resincronizado para el flanco de bajada de cada bit de Start.
Comunicación serial usando el modulo UART Proceso de Sobre-muestreo (Oversampling)
Comunicación serial usando el modulo UART Baud Rate Timing
Comunicación serial usando el modulo UART Baud Rate Timing
= 16
= 16 ∙
= ∙
= =
16 ∙
Qué significa K?
Comunicación serial usando el modulo UART Macro UART de Xilinx
•
Full-duplex, comunicación asincrónica
•
8-bit, No Parity, 1-Stop: (8,N,1)
•
Buffer FIFO de 16 niveles para Transmisión y Recepción
Comunicación serial usando el modulo UART Macro UART_TX KCUART_Tx BBFIFO_16x8
Comunicación serial usando el modulo UART Declaration of UART Transmitter with integral 16-byte FIFO buffer
component uart_tx Port ( data_in : in std_logic_vector(7 downto 0); write_buffer : in std_logic; reset_buffer : in std_logic; en_16_x_baud : in std_logic; serial_out : out std_logic; buffer_full : out std_logic; buffer_half_full : out std_logic; clk : in std_logic); end component;
Comunicación serial usando el modulo UART Macro UART_RX KCUART_Rx BBFIFO_16x8
Comunicación serial usando el modulo UART Declaration of UART Receiver with integral 16-byte FIFO buffer
component uart_rx Port ( serial_in : in std_logic; data_out : out std_logic_vector(7 downto 0); read_buffer : in std_logic; reset_buffer : in std_logic; en_16_x_baud : in std_logic; Buffer_data_present : out std_logic; buffer_full : out std_logic; buffer_half_full : out std_logic; clk : in std_logic); end component;
Comunicación serial usando el modulo UART Conexión UART – KCPSM3
INPUT Operations READ_STROBE Iteration with FIFOs
Comunicación serial usando el modulo UART
Documentos de consulta
•
UART Transmitter and Receiver Macros Ken Chapman Xilinx Ltda.
Comunicación serial usando el modulo UART dsPIC30F
•
Full-duplex, comunicación asincrónica
•
Soporte para protocolos: RS-232, RS-422, RS-485 y LIN
•
Buffer FIFO de 4 niveles para Transmisión y Recepción
•
Interrupción para Transmisión y Recepción
•
Detección de errores
•
Soporte para direccionamiento
Comunicación serial usando el modulo UART Diagrama de Bloques
Comunicación serial usando el modulo UART
Registros UxBRG UxMODE UxSTA Generador de Baud-Rate Baud-Rate de 16-bit controlado por el UxBRG
= 16 ∙ ( + 1)
Receptor y Transmisor emplean el mismo BRG
Comunicación serial usando el modulo UART
Detección de errores Parity Cuando el bit de paridad transmitido no coincide con el bit de paridad calculado por el receptor. UxSTA
•
Framing Cuando el bit de STOP es esperado y se detecta un nivel bajo. UxSTA •
Receive Overrun Cuando el buffer esta lleno y un 5 dato es recibido. UxSTA •
Comunicación serial usando el modulo UART Ejemplo Configuración Modulo UART 1 8-bit,1stop, No Parity, 9600 bps UxMODE Register
1
-
0
-
-
1
-
-
0
0
0
-
-
0
0
0
8-bit,NP 1stop
Comunicación serial usando el modulo UART Ejemplo Configuración Modulo UART 1 8-bit,1stop, No Parity, 9600 bps UxSTA Register
0
-
-
-
0
1
R
R
0
X
0
R
R
R
R
R
1 carácter
Detección de errores
Comunicación serial usando el modulo UART Ejemplo Configuración Modulo UART 1 8-bit,1stop, No Parity, 9600 bps UxBRG Register
= −1 16 ∙ 4 −1 = 16 ∙ 9600
Comunicación serial usando el modulo UART
/* Ex: LoopBack */ /* Config UART */
clr U1CON
; Reset UART 1 module to defaul state
mov #BRGVal, W0 mov W0, U1BRG
; 9600 bits/s
mov #0x8400, W0 mov W0, U1MODE
; 8-N-1
mov #0x0800, W0 mov W0, U1STA
; 1 character
Comunicación serial usando el modulo UART
LOOP:
btss U1STA, #URXDA ; ¿Dato Recibido? bra NEXTPROCESS
; NO: Continua con el siguiente proceso
mov U1RXREG, W0
; SI: Lee dato recibido
mov W0, U1RXVal
; Almacena dato
mov W0, U1TXREG
; Loopback
NEXTPROCESS: instruction ...
bra LOOP
Comunicación serial usando el modulo UART
Documentos de consulta
Microcontrollers and Microcomputers: Principles of Software and Hardware Engineering. •
Serial I/O-The Asynchronous Serial Communication System.
•
•
dsPIC30F Family Refence Manual
•
Implementing Auto Baud on dsPIC30F Devices