Omar Gurrola
24 Enero 2007
www.proprojects.wordpress.com
Puerto Serie El puerto serie o también conocido como RS-232 consiste en un conector tipo DB-25 de 25 pines, aunque es normal encontrar la versión de 9 pines DB-9. Ese protocolo normalmente se utiliza de forma asíncrona la cual permite la transmisión aislada de cada carácter y a cada bit le corresponde un tiempo tbit. En una transmisión asíncrona, un bit identifica el comienzo y 1 o 2 bits identifican su final, no es necesario ningún carácter de sincronismo. Los bits de datos son enviados al receptor después del bit de start. El bit de menos peso es transmitido primero. Un carácter de datos suele consistir en 5 o 8 bits. Dependiendo de la configuración de la transmisión, un bit de paridad es enviado después de cada bit de datos. Se utiliza para corregir errores en los caracteres de datos. Finalmente 1 o 2 bits de stop son enviados. Cuando alguna de las líneas están en reposo (no se transmiten datos) esta se mantiene en “1” uno lógico (“Marca”). El formato que se le da a cada carácter en la comunicación asíncrona es el siguiente:
Bit de arranque: nivel 0 durante tbit Bits de carácter (5,7 u 8) Primero se transmite el bit de menor peso Bit de paridad (opcional) Paridad par o impar (puede no usarse) Bits de parada: nivel 1 durante uno o dos tbits
Cada carácter es enviado dentro de un “FRAME”, generalmente el comienzo es un bit de inicio (siempre un 0), después sigue el dato (carácter), después puede haber un bit de control de paridad y por ultimo un bit final (siempre un 1) de longitud variable (1 o 2 bits). El circuito básico de transmisión asíncrona es el siguiente:
1
Omar Gurrola 24 Enero 2007 www.proprojects.wordpress.com 1. Transforma los datos en paralelo del procesador, en una secuencia serie. 2. Incorpora los bits de arranque, paridad y parada. 3. Parte de circuitos integrados específicos. El circuito básico de recepción asíncrona es el siguiente:
El detector de arranque se activa con el paso de 1 a 0 en la línea (frecuencia de reloj parecida o múltiplo de la del transmisor para muestrear en el centro, utilizando muestreo/ recuperación en la AND. En una comunicación asíncrona se tienen los siguientes tipos de errores:
El error de trama (framing): Ocurre cuando se produce la ausencia del bit de parada, se asocia a cada carácter recibido, posibles causas: error de sincronización, error de temporización, condición de ruptura (BREAK) de la transferencia o fallo en la transmisión.
Error de desbordamiento (overflow): Cuando se reciben nuevos caracteres cuando aún no se han leído los anteriores.
Error de paridad (parity): El bit de paridad y la paridad calculada en recepción no coinciden.
Según el estándar RS-232 los voltajes digitales son: “0” Cero: De 5 a 15 volts para las salidas y de 3 a 15 volts para las entradas. “1” Uno: De -5 a -15 volts para las salidas y de -3 a -15 volts para las entradas. 2
Omar Gurrola
24 Enero 2007
www.proprojects.wordpress.com
La distancia máxima a la que se puede transmitir datos es de 16 metros. La Conexión Modem Nulo Este método de conexión (DCC o Direct Cable Conection), es el más sencillo y barato de todos, está pensado principalmente para la transferencia ocasional de ficheros entre dos PCs así como algunos instrumentos que se conectan por puerto serie. Un módem nulo es cable que tiene en sus extremos dos conectores hembra para puerto serial y que intercambia algunas conexiones. La conexión MODEM null sirve para tener una comunicación mediante los conectores DB9 o DB25
3
Omar Gurrola
24 Enero 2007
www.proprojects.wordpress.com
La descripción de los pines en un conector DB-9 es la siguiente: DB25 # DB9 # Signal In/Out Description
Descripción
8
1
DCD
In
Data Carrier Detect
Detector de Acarreo de datos
3
2
RxD
In
Receive Data
Receptor de Datos
2
3
TxD
Out
Transmit Data
Transmisor de datos
20
4
DTR
Out
Data Terminal Ready Terminal de datos listo
7
5
GND
-
Ground
Tierra
6
6
DSR
In
Data Set Ready
Datos de entrada listo
4
7
RTS
Out
Request To Send
Petición para envío
5
8
CTS
In
Clear To Send
Libre para envío
22
9
RI
In
Ring Indicator
Indicador de Anillo
¿Qué es la UART? Significa Universal Asynchronous Receiver-Transmitter. Es un circuito que se utiliza para simplificar el proceso de enviar los bits uno a uno y recibirlos, teniendo en cuenta todos los tiempos necesarios para lograr una correcta comunicación y facilitándole a la CPU de esta pesada tarea. En una PC el puerto COM1 (Serial RS-232) se encuentra mapeado en la dirección: 3F8 – 3FF y utiliza los siguientes registros: MODO NOMBRE
NOMBRE
SIGNIFICADO
R
RBR
Receiver Buffer Register
Registro de buffer de recepción
R/W
DLL
Divisor Latch LSB
Divisor de velocidad, parte baja)
W
THR
Transmitter Holding Register
Registro de retención de transmisión
R/W
IER
Interrupt Enable Register
Registro de habilitación de interrupciones
R/W
DLM
Divisor latch MSB
Divisor de velocidad, parte alta
R
IIR
Interrupt Identification Register
Registro de identificación de interrupciones
W
FCR
FIFO Control Register
Registro de control FIFO 4
Omar Gurrola R/W LCR
24 Enero 2007 Line Control Register
www.proprojects.wordpress.com Registro de control de línea
R/W
MCR
Modem Control Register
Registro de control del modem
R/W
LSR
Line Status Register
Registro de estado de la línea
R/W
MSR
Modem Status Register
Registro de estado del modem
R/W
SCR
Scratch Register
Registro residual
Cada registro se encuentra mapeado en las siguientes direcciones. DLAB = 0 Puerto I/O Lectura Base RBR Base + 1 IER Base + 2 IIR Base + 3 LCR Base + 4 MCR Base + 5 LSR Base + 6 MSR Base + 7 SCR
Escritura THR IER FCR
DLAB = 1 Lectura DLL DLM IIR
- no usado
LSR MSR
Escritura
FCR
- no usado
El registro de control de línea “LCR” se utiliza para fijar los parámetros de la comunicación, por ejemplo si se desea cambiar el número de bits de datos o la paridad. Bit 0,1
valor Bit 1
2
0 0 1 1 0
Bit 0
Descripción Longitud de la palabra dato
0 1 0 1
5 bits 6 bits 7 bits 8 bits 1 bit de parada 1.5 bits de parada (palabra de 5 bits)
1 3,4,5 Bit 5
x 0 0 1
2 bits de parada (palabra de 6,7 o 8 bits) Bit 4 Bit 3
x 0 1 0
0 1 1 1
Sin paridad Paridad impar Paridad par Alta paridad 5
Omar Gurrola 6 7
1 0 1 0 1
1
24 Enero 2007 www.proprojects.wordpress.com 1 Baja paridad Freno de señal desactivado Freno de señal activado DLAB: RBR, THR y IER disponibles DLAB: DLL y DLM disponibles
Para configurar la velocidad de transmisión se utiliza el registro DLL y DLM, los cuales almacenando un valor divisor de la frecuencia del reloj conectado al 8250. Para realizar este proceso realizar lo siguiente: 1. Poner DLAB = 1 2. Almacenar en 0x3F8+0 el octeto menos significativo 3. Almacenar en 0x3F8+1 el octeto más significativo 4. Poner DLAB = 0 para seguir con la operación normal Divisor = (FREC. del reloj de referencia) / (16 * Vel. Deseada) Ej.
Se desea configurar a 400 bps Divisor = 288 = 120h = 01 20h 0x3F8 + 0 = 20h 0x3F9 + 1 = 01h
FREC = 1.8432Mhz (de la UART)
Para determinar si hay datos recibidos se debe revisar el bit DR[0] del registro LSR y el dato se puede leer del registro RBR.
6