De la Tabla se observa que un "1" lógico, equivale a un voltaje negativo (-3v a -25 v), y un "0" lógico, equivale a un voltaje positivo (+3v a +25v). Un voltaje que está entre +3v y -3v se considera como indeterminado.
Cuando la línea se mantiene en "1" (Marca), está en estado de reposo. Cuando la línea está en "0" (Espacio) se toma como activa.
La velocidad a la que se envían datos en forma serial a través de una línea de comunicación, se denomina velocidad en baudios. La velocidad de baudios es expresada en unidades de bits por segundo. Una conexión RS-232 con velocidad de 1200 baudios tiene la capacidad de enviar 1200 bits de datos en 1 segundo.
Si se pueden enviar 1200 bits en un segundo, como máximo, el inverso de 1200 dará como resultado el tiempo de bit (período de un bit).
Si un receptor y un transmisor se conectan a 1200 baudios, el transmisor enviará bits de datos cada 833us, y el receptor tomará lectura de los bits de datos cada 833us.
Protocolo de Comunicación Serial asincrónico estándar
El protocolo define una serie de reglas a fin de estandarizar la técnica de comunicación. En
este caso se establece un bit de comienzo activo 0 y un bit de parada lógico activo 1. Tambien se
contempla velocidades de transmisión hechas estándar: 75, 110, 150, 300, 600, 1200, 2400, 4800,
9600 y 19200 bit/seg.
Diferentes parámetros deben ser especificados cuando configuramos un puerto serial, Los
más comunes son:
1. Bits por carácter, usualmente de 5 a 8 bits por carácter
2. Número de stop bits, normalmente 1 o 2
3. Bit de paridad, usado para detectar un error en un único bit, puede ser especificado como par o
impar o sin pararidad
4. Velocidad de transmisión
Control de Flujo
El control de flujo se hace necesario cuando la velocidad de transferencia del DTE es
varias veces mayor que la velocidad a la que el DCE procesa los datos. En este caso el buffer del
DCE se llenará y en consecuencia habrá pérdidas de datos.
El control de flujo puede hacerse por hardware y por software. El control de flujo por
software, a veces denominado Xon/Xoff usa dos caracteres ASCII. Xon, normalmente indicado por
el caracter ASCII 17 (DC1), y Xoff por el carácter ASCII 19 (DC3).
El DCE que normalmente tiene un buffer de memoria pequeño, envia el carácter Xoff,
cuando este se llena, indicandole al DTE que pare de enviar datos. Una vez que el DCE tiene
espacio para aljojar más datos, envia el carácter Xon para indicarle al DTE que envie información.
Este control de flujo tiene la ventaja de no necesitar líneas adicionales ya que los caracteres Xon y
Xoff son enviados a través de las líneas TD/RD. Como desventaja tiene la disminución de la
velocidad de transferencias debido al envio de los caracteres Xon y Xoff, que no forman parte del
mensaje.
El control de flujo por hardware, también conocido como RTS/CTS, usa dos líneas del
cable serial: RTS y CTS. Cuando el DTE desea enviar datos , este activa la línea RTS. Si el DCE
tiene espacio para los datos, lo indica activando la línea CTS y así el DTE inicia la transferencia de
información . Si el DCE se queda sin espacio para alojar más datos, entonces desactiva la línea
CTS, indicandole al DTE que no envíe más información.
El programa Hyperterminal de Windows tiene control de flujo por Hardware, por software
Xon/Xoff y None, este último cuando no se va a usar ningún control de flujo.
Construcción de un cable serie
El cable que vamos a confeccionar es de tres hilos para conectar de forma simple dos DTEs. Se utilizarán conectores
hembra DB-9 y cable. La nomenclatura y función de cada pin en el conector DB9 es la siguiente, de los cuales vamos
a utilizar el pin 2, 3 y 5:
Se utilizará el cable realizado en el apartado anterior para conectar dos PC’s por el puerto serie. A
continuación se probará un programa en C que controle los registros del puerto serie RS-232.
Este programa permite que cuando en un computador se apriete una tecla, el carácter
correspondiente aparezca en la pantalla del otro computador. Para ello el programa muestrea
contínuamente los registros apropiados del puerto y realiza una transmision full-duplex.
Se utilizará para la explicación de este programa la información sobre el hardware de
comunicaciones de datos de la UART 8250. Además, se utilizará un compilador básico de C para
crear el programa, compilarlo y ejecutarlo.
El programa inicial es el siguiente:
main( )
{ unsigned char x,y; /* Inicialización de variables */
x=inport(0x3FB);
x=x|0x080;
outport(0x3FB,x); /* DLAB=1 respetando el resto del contenido*/
outport(0x3F9,1); /* Pongo el Divisor Latch (D=288) para */
outport(0x3F8,32); /* 400 bps a frec=1,8432 MHz */
outport(0x3FB,2); /* DLAB=0 y 7 bits de longitud, 1 bit de stop */
do
{
if(kbhit()!=0) /* Si se aprieta una tecla */
{
y=getch(); /* leemos un carácter */
x=inport(0x3FD); /* Esperamos Buff.Transm.Vacío */
while(!(x&0x30)) x=inport(0x3FD); /* Bit 5 de 3FDh=1 */
outport(0x3F8,y); /* y mandamos caracter leido */
};
if((x=inport(0x3FD)) & 0x01) /* Si datos en buffer de recepcion */
{
x=inport(0x3F8); /* Leemos el dato */
putch(x); /* y lo ponemos en pantalla */
};
} while(1); /* el bucle se repite indefinidamente */
}