Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comunicacin
serie asncrona
E.U.I.
Vitoria-Gasteiz
Programar el puerto serie del micrcocontrolador para que se comunique con un PC.
Introduccin
Conceptos generales
E.U.I.
0
Vitoria-Gasteiz
tiempo
E.U.I. V-G
1 1 1 1 0 0
0 0
1 1 0 0
tiempo
Sncrona: Junto con el cable que transporta los bits de informacin hay una segunda
lnea llamada de reloj (clock) con cuyos flancos activos (en la figura el positivo) se
sincroniza la lectura de la lnea de datos por parte del receptor.
0
Datos
Reloj
E.U.I.
Vitoria-Gasteiz
LSB
Bit
START
MSB
tbit
Bits
INFORMACIN
Bit
Bit
PARIDAD STOP
E.U.I. V-G
que indica el nmero de cambios posibles en la lnea de datos se denomina baudio. Si slo
existen dos estados posibles en la seal transmitida (seal no modulada) la unidad bps (bits per
second) y los baudios son iguales.
Atendiendo a la capacidad de poder enviar o recibir informacin a la vez se pueden
clasificar los sistemas de comunicaciones de la siguiente manera:
-
esta capacidad con dos lneas para datos, una para transmitir (TX) y otra para recibir
(RX).
TX
TX
RX
RX
Half duplex: Estaremos ante un tipo de esta comunicacin cuando slo podamos
enviar o recibir datos, pero no las dos a la vez.
TX (RX)
RX(TX)
TX
E.U.I.
RX
Vitoria-Gasteiz
Otras de las clasificaciones que se pueden establecer entre las diferentes formas de
transmisin serie se hace atendiendo a si la seal se referencia con respecto a masa o no.
-
Lneas equilibradas (balanced): Cada seal consta de dos hilos y el valor lgico es
la diferencia de tensin entre esos cables. Tambin se denomina diferencial
En el nivel fsico una transmisin serie puede constar de los siguientes elementos:
-
E.U.I. V-G
que se encargue de descomponer y sacar por la lnea TX cada uno de los bits que
forman parte de la unidad de trabajo del microcontrolador. El caso ms sencillo de
serializador es un registro de desplazamiento de carga paralelo salida serie. Estos
elementos, dependiendo del protocolo serie que se con el que se est trabajando,
generan adems diferentes seales de sincronizacin como pueden ser los bits de
start o de stop, o cabeceras de la trama, o bits de redundancia (CRCs) para la
deteccin y correccin de errores durante la transmisin. Tambin debe ser capaz de
'n' bits
en paralelo
a enviar
Serializador
Transceiver
Transceiver
Serializador
'n' bits
en paralelo
recibidos
E.U.I.
Vitoria-Gasteiz
le denomina protocolo. Algunos hacen ms hincapi en unos aspectos que en otros, pero todos
definen cierta forma de actuar para poder intercambiar datos entre dos puntos. En los siguientes
apartados se van a exponer algunas de las caractersticas ms importante de los protocolos serie
asncronos ms usados en el trabajo con microcontroladores.
RS-232
El Recomended Standard 232 de la EIA es el protocolo ms comn de comunicacin
serie que existe. Su nombre completo es TIA/EIA-232-F, donde la letra F representa la
revisin. Todos los PCs incorporan varios puertos serie de este tipo, por lo que se va a tratar
este protocolo con mayor detalle.
E.U.I. V-G
Es un protocolo serie, asncrono, full duplex y que especifica adems de las lneas de
transmisin, recepcin y masa toda una serie de seales de control entre dos tipos generales de
dispositivos: El DTE (Data Terminal Equipment, normalmente el PC) y el DCE (Data
Communication Equipment, normalmente un modem). Define tanto la forma de los conectores
como un nmero adicional de lneas de control del flujo de informacin. Dichas seales se
describen en la siguiente tabla:
Nombre
1.- FG
2.- TXD
3.- RXD
DCE
DCE
O
I
I
O
4.- RTS
5.- CTS
6.- DSR
7.- GND
8.- CD
9.1011.12.- SCD
13.- SCTS
I
I
O
O
14.- STXD
15.- TST
O
I
O
O
Funcin
Frame Ground. Tierra partes metlicas.
Transmitted Data. Lnea por la que salen los bits del DTE al DCE
Received Data. Lnea por la que llegan los bits al DTE desde el
DCE.
Request To Send. El DTE pregunta al DCE si est preparado para
recibir datos
Clear To Send. El DCE indica si est preparado o no para recibir
datos.
Data Set Ready. El DCE indica al DTE que est conectado y
listo.
Ground. Masa
Carrier Detect. Detectora de portadora. El DCE indica al DTE
que existe lnea en el exterior con caracterstica de portadora.
Circuito de test
Circuito de test
No se usa
Secundary Carrier Detect. Detectora de portadora secundaria
Secundary Clear to Send. Segunda lnea para la indicacin por
parte del DCE al DTE de que se encuentra preparado para enviar
o recibir datos.
Secundary Transmitted Data. Lnea secundaria de transmisn
Tranmission Signal Timing. Reloj para el DTE con el que este
informa al DCE la cadencia de transmisin de datos en el caso de
que se use transmisin sncrona.
Secondary Received Data. Segunda lnea de recepcin de datos.
Receiver signal timing. Clock para la recepcin de datos de forma
sncrona.
Sin asignar.
Secondary Request To Send. Indicacin secundaria para la
peticin de envo de datos del DTE al DCE.
Data Terminal Ready. El DTE le indica al DCE que est listo.
Signal Quality Detector. Indica la posibilidad de que exista un
error en los datos recibidos porque la calidad de la lnea cae por
debajo de un nivel aceptable.
Ring Indicator. Indica la llegada de una llamada telefnica al
DCE.
Data Signal Rate Selector. De esta forma se designar la
velocidad de transmisin del DTE al DCE
E.U.I.
I
I
Vitoria-Gasteiz
O
I
16.- SRXD
17.- RXT
18.19.- SRTS
20.- DTR
21.- SQD
22.- RI
23.- DSRS
E.U.I. V-G
24.- ST
25.-
Para la mayora de las aplicaciones no es necesario usar todos ellos. De hecho, todas las
seales sncronas no se usan en el 99.9% de los casos y no se hablar ms de ellas. Es necesario
hacer notar que la lnea de transmisin de datos (TXD) es la salida de bits para el DTE y la
entrada para el DCE. Anlogamente, la lnea de recepcin RXD es la entrada de bits del DTE y
la salida del DCE. Por lo tanto se habla de transmisin y recepcin desde el punto de vista del
DTE (normalmente un PC). Un escenario tpico de una comunicacin serie sera el siguiente:
-
En el caso en que el mdem quiera enviar datos que ha recibido por la lnea
E.U.I.
telefnica al PC, no hace falta ningn handshaking previo. Simplemente, los enva
al PC, siempre y cuando la lnea DTR del mismo este activada. Por eso se dice que
Vitoria-Gasteiz
la RS232 es un protocolo orientado al emisor.
Adems de todas las seales descritas, el protocolo define tambin la forma y configuracin de
los conectores. Estos pueden ser de dos tipos, DB9 (9 pines) o DB25 (pines). El del DTE es
macho y el del DCE hembra. La distribucin de pines del DB25 es idntica a como se ha
descrito en la tabla superior. Sin embargo, la distribucin del DB9 vara respecto a esta.
E.U.I. V-G
E.U.I.
Hay que notar que un DB25 el pin 2 corresponde a TXD, mientras que un DB9 el pin 2
corresponde con RXD.
Vitoria-Gasteiz
E.U.I. V-G
TXD
TXD
RTS
RTS
CTS
CTS
DTR
DTR
TXD
DSR
DSR
RX
RX
CD
RXD
CD
RI
RI
GND
GND
DTE
DCE
Fig. 11 Conexin DTE-DCE con handshaking
E.U.I.
DB25 hembra
Vitoria-Gasteiz
Al mdem
DB25 macho
Hembra
Macho
Shield Ground
Transmit Data
OUT
Al Ordenador
Dir
Receive Data
IN
Request to Send
OUT
Clear to Send
IN
IN
System Ground
Carrier Detect
IN
20
20
OUT
Ring Indicator
22
22
IN
Macho
Shield Ground
Transmit Data
OUT
Receive Data
IN
Al Ordenador
DB9 hembra
E.U.I. V-G
Dir
Al mdem
DB25 macho
Request to Send
OUT
Clear to Send
IN
IN
System Ground
Carrier Detect
IN
20
OUT
Ring Indicator
22
IN
los cables dejando nicamente la conexin de masa, as como la unin entre las lneas de
transmisin (2 con 2 en el caso DB25 a DB25, y 3 con 2 en el caso de un DB9 a DB25) y
recepcin (3 con 3 en el caso DB25 a DB25, y 2 a 3 en el caso de un DB9 a DB25).
Sin embargo cuando se disea un sistema con un microcontrolador este suele hacer las
funciones de DTE. Por lo tanto, si queremos conectarlo a un PC no podremos seguir el tipo de
conexin descrito, sino que tendremos que realizar un cable null modem.
Este tipo de cables es el que se debe usar cuando se quiere conectar dos ordenadores
entre s a travs del puerto serie. El cable null modem puede requerir o no que se produzca un
handshake entre los dos DTEs. Se describe en la siguiente tabla la forma de conectar los dos
DTEs.
E.U.I.
DB9 hembra
Vitoria-Gasteiz
Al Ordenador 2
DB9 hembra
DTE 1
TXD
DTE 2
3
RXD
RXD
TXD
DTR
6+1
DSR + CD
GND
GND
DSR + CD
6+1
DTR
RTS
CTS
CTS
RTS
Si uno de los ordenadores tiene un DB9 y el otro un DB25, la conexin del cable null
modem se hara segn la siguiente tabla.
Conectores del cable de unin
Al Ordenador 1
DB9 hembra
DB9
TXD
DB25
3
RXD
RXD
TXD
DTR
6+8
DSR + CD
Al Ordenador 2
E.U.I. V-G
GND
GND
DSR + CD
6+1
20
DTR
RTS
CTS
CTS
RTS
Sin embargo, si el equipo remoto no es capaz de dar ese handshake (muchos micros no
pueden realizar esa tarea, al menos de forma automtica) es necesario engaar a los terminales
Al Ordenador 1
DTE 1
DB9 hembra
DTE 2
TXD
RXD
RXD
TXD
GND
GND
Al Ordenador 2
conector 6,1 y 4
conector 6,1 y 4
DB9 hembra
conector 7 con 8
conector 7 con 8
DB9 - HEMBRA
DTE2
1
E.U.I.
2
Rx
Rx
Tx
Tx
2
7
Vitoria-Gasteiz
Fig. 12 Conexin null modem entre dos DTEs con handshake local
El control de flujo se puede realizar por hardware, tal y como se ha descrito
anteriormente. Sin embargo, muchos micrcocontroladores no implementan de CTS y RTS.
Existe una forma alternativa para controlar el flujo por software denominada XON-XOFF. En
este esquema de control se intercalan en la comunicacin caracteres que mandan parar (XOFF,
13H) o reanudar (XON, 11H) la transmisin. Si el envo no es de caracteres ASCII sino binario,
tanto el transmisor como el receptor debern tomar medidas para poder mandar estos bytes,
precedindolos normalmente de un byte de control que indica que el siguiente byte es especial.
E.U.I. V-G
10
En el nivel elctrico la norma define que los unos lgicos sern dados por valores de
tensin entre 3V y 15V. Los ceros lgicos vendrn dados por tensiones comprendidas entre
los 3V y los 15V. Adems de eso define una series de caractersticas de impedancias de entrada
y salida, capacidades y corrientes que deben ser cumplidas para que podamos decir que nuestro
circuito est dentro de la norma. Para conseguir estos efectos se pueden emplear drivers
especiales que consiguen tensiones de 10V a partir de tensiones de alimentacin de +5V con
ayuda de condensadores. El circuito tpico que se usa como driver es el MAX232 que cumple
las caractersticas elctricas requeridas por la norma y reinterpreta los valores lgico habituales
de ceros y unos para adaptarlos a la norma RS-232.
+5V VCC
C3
C5
C1+ 1
15 GND
C1- 3
14 T1OUT
MAXIM
C2+ 4
C2- 5
V- 6
16
16 VCC
V+ 2
MAX220
MAX232
MAX232-A
T2OUT 7
C1
C2
13 R1IN
12 R1OUT
VCC
Doblador de V+
3
C1+5V a +10V
4
Inversor
+ C2+
V5
C2- de +10V a -10V
1 C1+
TTL/CMOS
INPUTS
+5V
400K
10 T2IN
T2OUT 7
12 R1OUT
C4
10
10
.1
+10V
-10V
+ C4
T1OUT 14
11 T1IN
9 R2OUT
CAPACIDAD (uF)
DISPOSITIVO
C1
C2
C3
MAX232
4.7
4.7
10
MAX232
10
10
10
MAX232A
.1
.1
.1
+5V
400K
11 T1IN
10 T2IN
R2IN 8
C5
4.7
10
.1
TTL/CMOS
OUTPUTS
RS-232
OUTPUTS
R1IN 13
5K
9 R2OUT
RS-232
INPUTS
R2IN 8
5K
GND
15
E.U.I.
niveles lgicos y cada uno de ellos tiene diferentes cualidades adicionales, como shutdown,
deteccin de lnea abierta, media carga, etc. El Fan-out de una linea RS-232 es de uno, por lo
Vitoria-Gasteiz
que no se pueden conectar varios equipos escuchando del mismo cable, a no ser que se usen
drivers especiales.
En cuanto al formato de la informacin que se transmite, la norma no establece un
formato fijo, aunque normalmente se enva primero el LSB de un byte. Adems, cada byte
transmitido debe ser sincornizado con un byte de start. Para finalizar la transmisin se emiten
unos bits de stop que puede tener longitud variable. Opcionalmente se puede aadir un bit para
la paridad de la informacin enviada y comprobacin de posibles errores en la transmisin.
E.U.I. V-G
11
MSB
1
0
Informacin (5 a 8 bits)
Bit de start
Secuencia lgica
+15
+3
0
-3
-15
Niveles elctricos
E.U.I.
Vitoria-Gasteiz
8 bits
U(S)ART
Fig. 15 UART
No todos los elementos tienen capacidad para realizar comunicaciones sncronas, por lo
que podremos ver uno u otro trmino (UART o USART) para describir los perifricos que
contiene un microcontrolador. Como perifrico externo se pueden tambin usar UARTs como la
INS8250 y NS16450 con un byte de buffer, o la 16550 con 16 bytes de buffer.
E.U.I. V-G
12
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
13
puede usar esta norma. En aplicaciones ms complejas donde se necesite un mayor nmero de
elementos comunicndose entre s a ms largas distancias y a una mayor velocidad se puede
usar una de las normas siguientes
RS-422
Su nombre completo es TIA/EIA-422-B. Es un standard puramente elctrico que
especifica una comunicacin unidireccional (a veces denominada simplex) entre un transmisor
(driver) y numerosos receptores (receiver), sobre una lnea equilibrada (balanced) y terminada
en una resistencia en el ltimo receptor. A este tipo de comunicacin se le denomina Multidrop. La figura muestra un ejemplo tpico de este tipo de comunicacin.
A
100
E.U.I.
Los terminales diferenciales de los drivers y de los receivers se denominan con las letras
Vitoria-Gasteiz
E.U.I. V-G
14
200mV de diferencia de tensin entre VA y VB. Diferencias de tensin menores entre ambos
terminales suponen que la lnea est en un estado desconocido y deben ser evitadas. Si VA es
mayor que VB en ms de 200mV se entiende un nivel alto. Si VA es menor que VB en mas de
200mV entonces se entiende un nivel bajo.
1,E+08
Velocidad (bits/s)
1,E+07
1,E+06
E.U.I.
1,E+05
Vitoria-Gasteiz
1,E+04
1
10
100
1000
10000
E.U.I. V-G
15
distancias son muy cortas (dentro de un mismo equipo) y sin mucha carga es posible usar cables
normales sin resistencia de terminacin y que el conjunto funcione satisfactoriamente.
La siguientes figuras corresponden a unas capturas de osciloscopio suministradas por
Maxim, en la que se puede ver el efecto de la resistencia de terminacin. La primera figura
ensea la diferencia en la seal obtenida sin resistencia de terminacin y con resistencia de
100W.
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
16
Daisy Chain
Ring (Anillo)
Star (Estrella)
RS-485
Su denominacin completa es TIA/EIA-485-A. La norma RS-422 tiene una clara
limitacin. No se puede realizar una comunicacin bidereccional entre los dispositivos de la red.
La norma RS-485 cuya ltima revisin data de octubre de 1998 trata de solventar ese problema
contemplando la posibilidad de que pueda haber mltiples emisores y receptores dentro de la
red, en una configuracin que se denomina Multi-point o Party Line, transmitiendo en modo
E.U.I.
half duplex. Con un segundo conjunto de cables, se puede lograr una comunicacin full-duplex
entre un maestro y varios esclavos.
Vitoria-Gasteiz
A
120
T/R
120
T/R
T/R
T/R
E.U.I. V-G
17
Regin indeterminada
de +/- 0.2 V
11.8V
+12V
11.8V
SPACE, ON
MARK, OFF
-7V
+12V
VB
-6.8V
-6.8V
-7V
E.U.I.
Vitoria-Gasteiz
de 55mA.
E.U.I. V-G
18
TRI-STATE
T
T/R
R
ENABLE
En una red RS-485 pueden estar todos los drivers en tri-estado, en cuyo caso, las
entradas de los receiver estn al aire, flotantes. Para evitar este problema se pueden usar dos
resitencias, colocando una de las lneas a alimentacin y la otra a masa (idle-state bias resistors),
de tal forma que se asegure que los receptores ven un estado de idle cuando todos los drivers
estn en tri-estado. Dependiendo de las caractersticas del diseo, a menudo se usan resistencias
de 1.1kW y 2.2.W como pull-ups.
E.U.I.
Vitoria-Gasteiz
Fig. 25 Failsafe biasing
Un cable muy usado en el diseo de redes RS-485 es de CAT-5 (mximo 17pF/ft) que
tiene una impedancia caracterstica de 100W. Aunque no son los 120 recomendados, da un
resultado aceptable la mayora de las veces.
Adems de todo lo descrito existen numerosas situaciones en las que se puede producir
un error en la red, y esta deber estar diseada para prevenirlos y minimizar sus efectos. No es
objeto de este cuaderno el analizarlos todos, pero puede consultarse la extensa bibliografa para
seguir profundizando en el diseo de sistemas basados en RS-485.
E.U.I. V-G
19
En cuanto a los circuitos que sirven para implementar este interface se pueden citar los
siguientes:
MAX490, por ser la que se encuentra en la placa de prcticas, que permite una
comunicacin full duplex con otra del mismo tipo. No est dotada de entrada para la activacin
del tri-estado ni para la habilitacin del driver de lectura, por lo que se deber usar en
aplicaciones point-to-point
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
20
La serie de Maxim MAX3080 al MAX3089 son una serie de transceivers para RS-485
que contienen un driver y un receptor con circuitera integrada contra fallos de cortos o circuitos
abiertos en la red (fail-safe). Todos ellos representan 1/8UL por lo que se pueden llegar a tener
256 dispositivos en una red.
National tiene una serie que va del DS3695 al DS3697 o el DS1487 para el trabajo en
redes RS-485
Texas Instruments tiene el SN75175 y el SN75174 que son cudruples receptores y
drivers respectivamente. An as cabe destacar las notas de aplicacin que tiene sobre el tema.
La siguiente tabla resume las caractersticas de los tres protocolos expuestos
RS-232
RS-422
RS-485
Single-ended
Diferencial
Diferencial
N de Tx y Rx permitidos
1Tx. 1Rx
1 Tx, 10 Rx
32 Tx 32 Rx
50ft - 15m
Caracterstica
Modo de operacin
E.U.I.
Vitoria-Gasteiz
Mxima velocidad de transmisin
19.2 kbps
10Mbps
10Mbps
3V
2V
1.5V
15V
5V
5V
30mA
150mA
250mA
3k a 7k
100
54
3V
200mV
200mV
3k a 7k
4k
12k
15V
7V
-7V to +12V
< -3V
>200mV
>200mV
> 3V
<-200mV
<-200mV
E.U.I. V-G
21
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
22
Desarrollo de la prctica
La prctica va a consistir en la configuracin de la USART del microcontrolador de tal forma
que cuando reciba un carcter por el puerto serie, lo devuelva incrementado en una unidad. As,
si se recibe una A, el microcontrolador debe enviar una B. El puerto serie va a funcionar a
9600 baudios, 8 bits de datos, 1 bit de stop y sin bit de paridad.
Para ayudar a la configuracin del puerto serie puede ser necesario contestar alguna de las
siguientes preguntas relativas al puerto serie.
Se necesita algn otro recurso del microcontrolador para que funcione el puerto
serie?
Aunque no es estrictamente necesario, se va a definir una funcin que nos sirva en adelante para
el envi de una byte por el puerto serie. Hay que tener en cuenta que si la interrupcin del
puerto serie est permitida y se acaba de transmitir un byte, se saltar al vector de interrupcin
asociado al puerto serie. Y eso puede no ser deseable. Su prototipo ser:
E.U.I.
;**********************************************************************************************
;*
EnviarByteSerie:
;*
Descripcion: rutina que enva por el puerto serie un byte. Se enmascara
;*
la interrupcin hasta que se acaba de enviar.
;*
Parametros de entrada:
;*
ACC: contendr el byte a enviar.
;*
Valores devueltos:
;*
Registros modificados:
;**********************************************************************************************
EnviarByteSerie:
Vitoria-Gasteiz
RET
En la segunda parte de la prctica se va a disear una funcin que enve una cadena acabada en
el valor cero por el puerto serie. Para ello se define la cadena dentro de memoria de programa de
la siguiente manera
E.U.I. V-G
23
RET
Bibliografa
General
-
E.U.I.
Semiconductor
RS-232Vitoria-Gasteiz
-
Networking
Micrcocontrollers
with
Serial
Ports
http://www.eetimes.com/ContentEETimes/Documents/ESC%20Proceedings/1993/
ESC_1993_Vol1_Page25_Butler_Networking%20Microcontrollers%20with%20Se
E.U.I. V-G
24
RS-485
-
Transceivers and Repeaters Meeting the EIA RS-485 Interface Standard. Nota de
aplicacin 409 de National. Aborda la RS-485 a partir de la RS-422
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
25
The practical limits of RS-485. Nota de aplicacin 979 de National donde hace un
repaso somero de los lmites de nodos, topologas, etc. en la implementacin de
redes RS-485
Revisiones
10.06.03
-
Se corrige error en la conexin del cable null modem entre DB25 y DB9.
31.03.04
-
31.08.11
-
E.U.I.
Vitoria-Gasteiz
E.U.I. V-G
26