El UART MICROPROCESADORES Sistema de comunicación serial Dato al destino Dato de la fuente 8 bits 1 bit a la vez Buffer de dato transmitido 8 bits Registro de corrimiento entrada paralelo/salida serie 8 bits Buffer de dato recibido 8 bits Registro de corrimiento entrada serie/salida paralelo Reloj del Receptor Reloj del Transmisor Transmisor Receptor Carlos E. Canto Quintal El UART MICROPROCESADORES Ci rrccui ttos nt Ci ui osii ntegr egrados adosadapt adaptador adores esde de ccomuni ccac óón n sser al ásus omuni acii erii almmás usados ados UART (Universal Asynchronous Reciever Transmitter). ACIA ( Asynchronous Communications Interfase Adapter). Z80 SIO (Serial Input/Output) USART (Universal Synchronous Asynchronous Reciever Transmitter) Carlos E. Canto Quintal El UART MICROPROCESADORES FUNCIONES DE UN UART 3 CONVIERTE LOS DATOS DE PARALELO A SERIE YVICEVERSA 3 GENERA YCHECA LA PARIDAD DE LOS DATOS 3 GENERA BIT DE ARRANQUE 3 INSERTA BIT DE PARADA 3 CONTROLA ELNÚMERO DE BITS POR CARÁCTER 3 ALMACENA TEMPORALMENTE ELMENSAJE 3 CONTROLA LA VELOCIDAD DE TRANSMISIÓN-RECEPCIÓN Carlos E. Canto Quintal El UART Bus de datos MICROPROCESADORES PUERTO SERIE RS232C NIVEL TTL NIVEL RS232 UART Paralelo/serie CPU Manejador RS-232 Serie/paralelo Periférico serie de salida Periférico serie de entrada DIAGRAMA DE BLOQUES DE UN PUERTO SERIE RS232C USANDO UN UART Carlos E. Canto Quintal El UART MICROPROCESADORES Protocolo de comunicación asíncrona de bitde arranque/bitde parada Bit de paridad opcional de 7 ú 8 bits de datos Línea ociosa b0 b1 b2 b3 b4 b5 b6 b7 P Bit(s) de parada Bit de arranque Carlos E. Canto Quintal El UART MICROPROCESADORES Bufferdel busde datos Bufferdelreceptor Registro de corrimiento delreceptor D0-D7 Temporización ycontroldel receptor Registro controlde línea Latchdivisor (LS) Latchdivisor(MS) Arquitectura interna delUART 8250 Registro de Statusde línea Retén de transmisor Generador de baudaje habilitadorde interrupciones identificadorde interrupciones Rclk Baudout Temporización ycontroldel transmisor Registro de corrimiento deltransmisor controlde modem Statusde modem Sin Lógica de controldel modem Lógica de controlde interrupciones Sout RTS CTS DTR DSR DCD RI OUT1 OUT2 Intr Carlos E. Canto Quintal El UART MICROPROCESADORES Manual Carlos E. Canto Quintal El UART MICROPROCESADORES 9Orden de lasseñalesde “handshaking”o decontrolen unacomunicación Half duplexvía puerto RS232. Carlos E. Canto Quintal El UART MICROPROCESADORES Registro de Control de Línea (Line Control Register LCR) b7 b6 DLAB DLAB b5 Break Break Control Control 0=off 0=off 1=on 1=on b4 000 001 011 101 111 = = = = = b3 b2 Número Número de destops stops bits bits 0=1 0=1 1=2 1=2 Paridad ninguna impar par marca espacio b1 b0 Número de bits de Datos 10=7 11=8 Divisor DivisorLatches LatchesAccess AccessBit: Bit: Bit de Acceso a los Bit de Acceso a losLatches Latches Divisores Divisores Carlos E. Canto Quintal El UART MICROPROCESADORES Registro de Status de Línea (Line Status Register LSR) b7 b6 b5 b4 Buffer Buffer de Tranmisor Detección Detección de Tranmisor Siempre Siempre Transmisor vacío de de Transmisor vacío 00 Vacío (TXE) Break Break Vacío (TXE) (TBE) (TBE) b3 Error Error de de tramado tramado b2 Error Error de de paridad paridad b1 Error Error de de Overrun Overrun b0 Dato Dato Listo Listo (RxRDY) (RxRDY) Carlos E. Canto Quintal El UART MICROPROCESADORES Registro de Habilitación de Interrupciones (Interrupts Enable Register IER) b7 Siempre Siempre 00 b6 b5 Siempre Siempre 00 b4 Siempre Siempre 00 b3 Siempre Siempre 00 b2 Entrada Entrada RS232 RS232 b1 b0 Error Buffer Buffer Error del del Dato del Dato del Receptor Transmisor Recibido Receptor Transmisor Recibido oo Vacío (RxRDY) Vacío (RxRDY) break (TBE) (TBE) break Carlos E. Canto Quintal El UART MICROPROCESADORES Registro de Identificación de Interrupciones (Interrupts Identificación Register IIR) b7 Siempre Siempre 00 b6 b5 Siempre Siempre 00 Bit 2 b4 Siempre Siempre 00 b3 Siempre Siempre 00 b2 b1 b0 Siempre Siempre 00 Bit 1 Bit 0 Prioridad * Interrupción identificada 0 0 1 Ninguna Ninguna 1 1 0 0 Error de serialización o Break 1 0 0 1 Dato Recibido 0 1 0 2 0 0 0 3 Buffer del Transmisor vacío Entrada RS232 * 0 Es la más alta Carlos E. Canto Quintal El UART MICROPROCESADORES Tabla de Registros y el DLAB A0 Lectura / Escritura Registro DLAB A2 A1 0 0 0 0 __ Receptor(lectura) Transmisor (escritura) 0 0 0 1 R/W Habilitación de interrupciones X 0 1 0 LECTURA Identificación de Interrupción X 0 1 1 R/W X 1 0 0 R/W Registro de Control del Modem X 1 0 1 R/W Registro de Status de Línea X 1 1 0 R/W Registro de Status del Modem X 1 1 1 R/W Scratch Pad 1 0 0 0 R/W Latch Divisor Menos Significativo 1 0 0 1 R/W Latch Divisor Más Significativo de Control de Línea Carlos E. Canto Quintal El UART MICROPROCESADORES Carlos E. Canto Quintal El UART MICROPROCESADORES Configuración de pines del UART National 8250 D7-D0 DISTR DOSTR INTRPT MR A0 A1 A2 SOUT SIN RTS DTR DSR DCD CTS RI XTAL1 ADS “0” 3.072 MHZ DOSTR DISTR CS2 CS1 “1” A conector RS-232 Manejadores EIA RS-232 CS0 XTAL2 BAUDOUT RCLK Carlos E. Canto Quintal El UART MICROPROCESADORES CONFIGURACIONES DE PINES DEL NS16650 Carlos E. Canto Quintal El UART MICROPROCESADORES DISTRIBUCIÓN DE TERMINALES DEL UART16650 Carlos E. Canto Quintal El UART MICROPROCESADORES TERMINALES DEL UART16650 ADS, Address Strobe, Pin 25: The positive edge of an active Address Strobe (ADS) signal latches the Register Select (A0, A1, A2) and Chip Select (CS0, CS1, CS2) signals. Note: An active ADS input is required when the Register Select (A0, A1, A2) and Chip Select (CS0, CS1, CS2) signals are not stable for the duration of a read or write operation. If not required, tie the ADS input permanently low. BAUDOUT, Baud Out, Pin 15: This is the 16 X clock signal from the transmitter section of the UART. The clock rate is equal to the main reference oscillator frequency divided by the specified divisor in the Baud Generator Divisor Latches.The BAUDOUT may also be used for the receiver section by tying this output to the RCLK input of the chip. CS0, CS1, CS2, Chip Select, Pins 12±14: When CS0 and CS1 are high and CS2 is low, the chip is selected. This enables communication between the UART and the CPU. The positive edge of an active Address Strobe signal latches the decoded chip select signals, completing chip selection. If ADS is always low, valid chip selects should stabilize according to the tCSW parameter. Carlos E. Canto Quintal El UART MICROPROCESADORES TERMINALES DEL UART16650 DDIS, Driver Disable, Pin 23: This goes low whenever the CPU is reading data from the UART. It can disable or control the direction of a data bus transceiver between the CPU and the UART. MR, Master Reset, Pin 35: When this input is high, it clears all the registers (except the Receiver Buffer, Transmitter Holding, and Divisor Latches), and the control logic of the UART. The states of various output signals (SOUT, INTR, OUT 1, OUT 2, RTS, DTR) are affected by an active MR input (Refer to Table I.) This input is buffered with a TTLcompatible Schmitt Trigger with 0.5V typical hysteresis. RCLK, Receiver Clock, Pin 9: This input is the 16 c baud rate clock for the receiver section of the chip. Carlos E. Canto Quintal El UART MICROPROCESADORES FIFO CONTROL REGISTER This is a write only register at the same location as the IIR (the IIR is a read only register). This register is used to enable the FIFOs, clear the FIFOs, set the RCVR FIFO trigger level, and select the type of DMA signalling. Bit 0: Writing a 1 to FCR0 enables both the XMIT and RCVR FIFOs. Resetting FCR0 will clear all bytes in both FIFOs. Carlos E. Canto Quintal El UART MICROPROCESADORES CONEXIÓN DEL UART USANDO INTERRUPCIONES Bus Bus de de Datos Datos CPU CPU INTR Bus Bus de de Direcciones Direcciones UART UART Driver Driver RS232 RS232 MODEM MODEM LÍNEA LÍNEA TELEFÒNICA TELEFÒNICA LÍNEAS DE CONTROL Y DE STATUS (HANSDSHAKING) Carlos E. Canto Quintal El UART MICROPROCESADORES Carlos E. Canto Quintal El UART MICROPROCESADORES PRACTICA NUM. 10 IMPLEMENTACIÓN DE UN PUERTO SERIE USANDO EL UART NS8250 +5v 40 2 INT 7414 12 13 30 1 21 18 22 19 25 35 IORD IOWR RESET BUS DE DATOS BUS DE DIRECCIONES A0 A1 A2 OUT1 OUT2 RD WR RD WR ADS RESET 1 2 3 4 5 6 7 8 D0-D7 VCC CS0 CS1 INT RXD DCD DSR CTS RI D0 D1 D2 D3 D4 D5 D6 D7 28 27 26 TXD RTS DTR SALIDA SERIE TTL 11 32 33 RS232 (MAX232) 10 38 37 36 39 ENTRADA SERIE RS232 ENTRADA SERIE TTL DDIS NC CSOUT +5v 23 29 24 220 XTAL1/CLK 1M 17 A2 1 A3 2 A4 3 A B C A5 6 A6 4 A7 5 G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 AL 8255 AL 15 8254 AL 14 ADC0804 13 12 11 10 9 7 fxtal=1.8432 3.072 Mhz RCLK 1 15 9 74LS08 ó XIN 90H-97H 3 XOUT 74LS138 2 7414 SIN USO 1 2 GND BAUDOUT CS2 40-60pf XTAL2 20 Indicador de que el UART se ha seleccionado 14 10-30pf 1.5k SALIDA SERIE RS232 MANEJADORES 8250 A0 A1 A2 16 34 31 A7 A6 A5 A4 A3 A2 A1 A0 1 0 0 1 0 X X X 16 2 1 17 3 4 7414 REOJ EXTERNO SALIDA OPCIONAL DEL RELOJ USANDO UN OSCILADOR EXTERNO, QUE PODRIA SER EL OSCILADOR USADO PARA E LCPU AL UART DIRECCIONES DE SELECCIÓN DEL UART 90H AL 97H Carlos Canto Carlos E. Canto Quintal El UART MICROPROCESADORES Programa para transmitir datos por el puerto Serial con un UART sin usar interrupciones Inicio Inicio Definir Definir formato formato del del dato dato Selección Selección velocidad velocidad de de transmisión transmisión Leer Leer dato dato de de memoria memoria NUM_DAT EQU ALMACEN EQU PAL_CTRL EQU LCR EQU LATCH_DIVL EQU LATCH_DIVM EQU BUFF_TX EQU LSR EQU N_LSB EQU N_MSB EQU Transmitir Transmitir dato dato ¿Terminó ¿Terminó transmisión transmisión ?? No Si No ¿Es ¿Es último último dato dato ?? Si 10H 800H 87H 93H 90H 91H 90H 95H 14H 00H LD B, NUM_DAT LD HL,ALMACEN-1 LD A,PAL_CTRL OUT (LCR),A LD A, N_LSB OUT (LATCH_DIVL),A LD A,N_MSB OUT (LATCH_DIVM),A IN A,(LCR) AND 7FH OUT (LCR),A OTRO: INC L LD A,(HL) OUT (BUFF_TX),A DE_NUEVO: IN A,(LSR) AND 60H CP 60H JP NZ,DE_NUEVO DJNZ,OTRO END End End Carlos E. Canto Quintal El UART MICROPROCESADORES GEN DE BAUDAJE Carlos E. Canto Quintal