Professional Documents
Culture Documents
Definición
Comunicación en la que los bits de datos
se transmiten en forma sucesiva.
El tiempo de duración de cada bit en la
línea de transmisión se denomina “Tiempo
del bit” y su recíproco es la frecuencia
de transmisión expresada en “bits por
segundo” (o bps)
2
Comunicación en Serie vs.
Comunicación en Paralelo
Es mas lenta
No sufre interferencia entre líneas de
datos
Mayor confiabilidad
Mas barata
Adecuada a larga distancia
3
Inconvenientes
Problemática de relojes: desfases
Sincronismos:
de bits
de caracter
De bloque
Soluciones:
Transmisión Síncrona
Línea de reloj
Codificación autorreloj (Manchester)
Transmisión Asíncrona
4
Comunicación Serie Asíncrona
5
Interface RS232
Interconexión DTE-DCE punto a punto
Velocidades hasta 20 kbits (según norma)
Transmisión síncrona o asíncrona
Modos Half Duplex y Full Duplex
Tres especificaciones
Eléctrica (norma V.28)
Mecánica (ISO 2110)
Funcional (norma V.24)
6
Especificación Eléctrica
Transmisión no
balanceada
Referencia a 0 volt
Limitación de
corriente a 0.5 A
Capacidad Máxima
2500 pF
Niveles
7
Especificación Mecánica
Conector ISO 2100 (D25)
Formato D
8
Conectores D25 y DB9
9
Especificación Funcional
Líneas de Datos
TxD y RxD
Líneas de Control de Flujo
Request Ro Send (RTS)
Clear To Tend (CTS)
Data Carrier Detect (CD o DCD)
Líneas de establecimiento de conexión
Data Terminal Ready (DTR)
Data Set Ready (DSR)
Ring Indicator (RI)
Líneas de referencia
GND
Masa de Conexión SHG
10
Control de Flujo sobre RS232
Protocolos software
XON XOFF
Protocolos Hardware
RTS-CTS
DTR-DSR
11
Usos no estándar: Modem Null
Cruce de líneas
12
Usos no estandar: Modem Null
Protocolo a tres hilos
13
Norma RS 449
14
Norma RS422
Especificaciones Eléctricas
Balanceada (no referida a 0 v)
Niveles de tensión +6v a -6v
Sensibilidad 200mv
Hasta 10 receptores
Longitud de cable 1200m
15
R2422: Distancia máxima
Inversamente proporcional a la velocidad
16
Conexiones RS422
Ventajas
Rechazo ruido y
crosstalk
Mayores Distancias
Mayores Velocidades
Inconvenientes
Necesita mas hilos
Mayor costo
Mayor complejidad
17
Utilización en ambientes
industriales
Comunicación punto a punto
Comunicación maestro / esclavo
18
Norma RS485
Norma eléctrica
Multipunto
Hasta 32 transmisores y 32 receptores
Posibilidad de alta impedancia
Par trenzado
120 ohm con terminadores
Resistencias pull-up y pull-down
Tensión de modo común (VCM)
Variación entre -7v y 12v
Diferencia 200mv
19
Norma RS485 (II)
Multipunto
Unidades de carga 12 ohm
Impedancia: triple que RS422
Limitación de intensidad a 250mA
Distancia máxima 1200m
Velocidad máxima 10 Mbps
20
Transmisor-Receptor RS485
21
Variante múltiple RS485
22
Utilización en ambientes
industriales
Comunicación punto a punto
Comunicación maestro / esclavo
Comunicación multimaestro
23
Comparación de normas
24
UART
UART (transmisor receptor asincrono universal)
Simplifica operaciones Entrada/Salida serie
Conversión paralelo/serie y viceversa
Sincronizaciones a nivel de bits y carácter
Control de errores
National Semiconductors NS8250
NS 16450 Mayores velocidades
NS 1655O Colas FIFO
25
Hardware básico
Diagrama de conexión
26
Convertidores de Niveles
TTL / RS232
27
Convertidores de Niveles (II)
TTL / RS485: Integrado
75SN176
28
Ejemplo
29
Ejemplos Comunicación RS232
30
31
Bioscom
Syntax
#include <bios.h>
int bioscom(int cmd, char abyte, int port);
Descripción
bioscom realiza varias comunicaciones RS-232 sobre un puerto E/S dado.
32
Bioscom (II)
abyte es una combinación de los siguientes bits (un valor es
seleccionado de cada uno de los grupos):
0x02 7 bits datos 0x00 110 bps
0x03 8 bits datos 0x20 150 bps
0x40 300 bps
0x00 1 bit stop 0x60 600 bps
0x04 2 bits stop 0x80 1200 bps
0x00 sin paridad 0xA0 2400 bps
0x08 paridad impar 0xC0 4800 bps
0x18 paridad par 0xE0 9600 bps
34
Bioscom (IV)
Con un valor de cmd de 2, el byte leído se encuentra en los bits mas bajos
del del valor retornado si no hay error. Si ocurre un error, al menos uno
de los bits mas altos se pone en 1. Si ninguno de los bits superiores se
pone en 1, el byte se recibió sin error.
Con un valor de cmd de 0 o 3, el valor retornado en los bits superiores se
cargan según lo definido, y los bits inferiores se definen como sigue:
Bit 7 Received line signal detect
Bit 6 Ring indicator
Bit 5 Data set ready
Bit 4 Clear to send
Bit 3 Change in receive line signal detector
Bit 2 Trailing edge ring detector
Bit 1 Change in data set ready
Bit 0 Change in clear to send
35
Bioscom (V)
Ejemplo: Comunicación entre dos PCs por medio de un cable modem null.
El ejemplo es específico para el COM1.
Se incluyen los valores para el COM2
#include <bios.h>
#include <conio.h>
#include <dos.h>
#define DTR 0x01 // Data Terminal Ready
#define RTS 0x02 // Ready To Send
#define COM1PORT 0x0000 // Pointer to Location of COM1 port
#define COM2PORT 0x0002 // Pointer to Location of COM2 port
#define COM1 0
#define COM2 1
#define DATA_READY 0x100
#define FALSE 0
#define TRUE !FALSE
#define SETTINGS ( 0xE0 | 0x00 | 0x02 | 0x00) // 9600,N,7,1 36
Bioscom (VI)
int main( void )
{
int in,
out,
status,
DONE = FALSE,
far *RS232_Addr;
/* Determine port location of COM1.
0x40:0x00 = COM1 I/O port address
0x40:0x02 = COM2 I/O port address
*/
RS232_Addr = MK_FP( 0x0040, COM1PORT );
if( !*RS232_Addr )
return -1;
bioscom( 0, SETTINGS, COM1 );
cprintf( "... BIOSCOM [ESC] to exit ...\n" );
37
Bioscom (VII)
while( !DONE )
{
/* Reset DTR and RTS to prepare for send/receive of
next character.
*/
outportb( *RS232_Addr + 4, DTR | RTS );
/* Get status of com port.
*/
status = bioscom( 3, 0, COM1 );
if( status & DATA_READY )
/* There's a character on the port. Get it and echo.
*/
if( (out = bioscom( 2, 0, COM1 ) & 0x7F) != 0 )
putch( out );
38
Bioscom (VIII)
if( kbhit() )
/* Key has been struck. Get it and send to port.
*/
if( (in = getch()) == '\x1B' )
/* User pressed ESCAPE. Don't send to port.
*/
DONE = TRUE;
else
/* Send character to com port.
*/
bioscom( 1, in, COM1 );
}
return 0;
39
Comunicación serie en el
microcontrolador 8051
MODOS DE COMUNICACIÓN
Se seleccionan con los bits 6=SM1 y bit 7=SM2 del registro
SCON
Modo 0
Transmisión o Recepción por línea RXD
Pulsos de sincronismo por línea TXD
8 bits de datos (primero el menos significativo)
Velocidad igual a 1/12 frecuencia del reloj
Modo 1
Transmisión por TXD
Recepción por RXD
10 bits de datos
1 bit de start (0)
8 bits de datos (menos significativo primero)
1 bit de stop (1)
La velocidad puede ajustarse en un amplio rango
40
Modos de comunicación (II)
Modo 2
Transmisión por TXD
Recepción por RXD
11 bits
1 bit start (0)
8 bits de datos (menos significativo primero)
1 bit programable (TB8 SCON en Tx, RB8 en Rx )
1 bit de stop (1)
Velocidad 1/32 o 1/64 de la frecuencia reloj
Modo 3
Transmisión por TXD
Recepción por RXD
11 bits
1 bit start (0)
8 bits de datos (menos significativo primero)
1 bit programable (TB8 SCON en Tx, RB8 en Rx )
1 bit de stop (1)
Velocidad se puede ajustar en un amplio rango
41
Inicio de la comunicación
Transmisión
Cualquier instrucción que use SBUF
(dirección 99H del SFR) como registro
destino
Recepción
Modo O: condición RI=0 y REN=1
Modos 1, 2 y 3: Recepción bit de start y
REN=1
42
Comunicación en el entorno
multiprocesador
Permitido en los Modos 2 y 3
Recepción: Puede programarse (activando SM2 en SCON) que la interrupción serie
se produzca solo si el 9° bit almacenado en RB8=1
Modo de Operación:
Esclavos: Activan SM2=1. Reciben interrupción recepción serie solo si 9° bit dato=1
Maestro envía primero dirección esclavo: Noveno bit=1. Este dato lo reciben todos los
esclavos
El esclavo direccionado coloca SM2=0 para recibir datos
Maestro: Envía datos con9° bit=0. Solo se produce interrupción de recepción serie en el
esclavo direccionado.
Al finalizar la comunicación el esclavo direccionado coloca nuevamente SM2=1
43
Registro de control del puerto
serie (SCON)
44
Registro de control del puerto
serie (SCON) (II)
45
Velocidad de Comunicación
Modo 0
Modo 2
46
Timer 1 como generador de
“baudios”
Definidos por el valor de carga del Timer y el valor de
SMOD
Programar Timer como “temporizador” en modo
autorrecarga (TMOD20H)
Velocidad comunicación serie:
47
Timer 1 como generador de
“baudios” (II)
48
Timer 2 como generador de
“baudios”
49
Comunicación en Modo 0
Longitud de palabra de dato: 8 bits. Primero el bit menos significativo
Formato palabra de datos
Velocidad de comunicación
Transmisión
Comienza: Escribiendo en SBUF
Termina: Activando flag TI
Recepción
Comienza: Cuando REN=1 y RI=0
Termina: Activando flag RI
50
Ejemplo: Transmisión en Modo 0
OBJETIVO
-Programar el puerto serie
en Modo 0
-Transmitir por el perto
serie el byte que se
itroduce por el puerto
paralelo
-Obtener la señal de
sincronismo y visualizarla
por el pin TXD
51
Ejemplo: Recepción en Modo 0
-Vectorización de la interrupción
52
(Continuación)
-Rutina de retardo
-Rutina de Interrupción
53
Comunicación en Modo 1
Longitud de palabra de dato: 10
bits. Primero el menos Velocidad de comunicación:
significativo
Modo de carga y sobrepasamiento
Formato palabra de dato:
Timer 1:
Transmisión
Comienza: Escribiendo el dato en
SBUF
Termina: Activando el flag TI
Recepción
Comienza: Cuando REN=1 y se detecta
un flanco descendente (bit start) en
RXD
Termina: Activando el flag TI
54
Cominicación en Modos 2 y 3
Velocidad de comunicación:
Longitud de palabra de datos: 11 bits
Para el modo 3
Esquema simplificado de la
comunicación
Transmisión:
Comienza: Escribiendo en SBUF
Termina: Activando el flag TI
Recepción:
Comienza: Cuando REN=1 y se detecta fla
descendente (bit start) en RXD
Termina: Activando el flag RI
55
Interrupciones en el 8051
56
Registro Prioridad de
Interrupciones
57
Prioridades y Vectores de
Interrupción
58