Está en la página 1de 27

10.

Comunicaciones

10.1. Comunicación RS232 Mediante UART

El microcontrolador host atmega se comunica con el dispositivo Bluetooth WT-


11 mediante comunicación serie, utilizando para ello la USART implementada en el
microcontrolador. Con esta comunicación se consigue que el host envíe todos los
comandos de configuración y de control al WT – 11 y a su vez éste responda.

10.1.1. Introducción. Comunicación RS232

En primer lugar se realiza una breve introducción del estándar de comunicación


serie RS232 que se utilizará para realizar la comunicación entre el host – WT11. La
comunicación mediante UART es diferente a la comunicación mediante RS232, las
diferencias se describirán más adelante.

• LA NORMA
La denominada RS-232 es una interfaz que designa una norma para el
intercambio serie de datos binarios entre un DTE (o Equipo terminal de datos) y un
DCE (o Equipo de terminación del circuito de datos), aunque existen otras situaciones
en las que también se utiliza la interfaz RS-232.

En esta aplicación el equipo terminal de datos DTE será el procesador host


atmega, mientras que el equipo terminación del circuito de datos es el dispositivo WT -
11.

La interfaz RS-232 está diseñada para distancias cortas, de unos 15 metros o


menos, y para unas velocidades de comunicación bajas, de no más de 20 KBytes. A
pesar de ello, muchas veces se utiliza a mayores velocidades con un resultado aceptable.
La interfaz puede trabajar en comunicación asíncrona o síncrona y tipos de canal
simplex, half duplex o full duplex. En un canal simplex los datos siempre viajarán en
una dirección, por ejemplo desde DCE a DTE. En un canal half duplex, los datos
pueden viajar en una u otra dirección, pero sólo durante un determinado periodo de
tiempo; luego la línea debe ser conmutada antes que los datos puedan viajar en la otra
dirección. En un canal full duplex, los datos pueden viajar en ambos sentidos
simultáneamente. Las líneas de handshaking de la RS-232 se usan para resolver los
problemas asociados con este modo de operación, tal como en qué dirección los datos
deben viajar en un instante determinado.

Si un dispositivo de los que están conectados a una interfaz RS-232 procesa los
datos a una velocidad menor de la que los recibe deben de conectarse las líneas
handshaking que permiten realizar un control de flujo tal que al dispositivo más lento le
de tiempo de procesar la información. Las líneas de "hand shaking" que permiten hacer
este control de flujo son las líneas RTS y CTS. Los diseñadores del estándar no
concibieron estas líneas para que funcionen de este modo, pero dada su utilidad en cada
interfaz posterior se incluye este modo de uso.

• SEÑALES
A continuación se describen las señales más utilizadas para realizar las
comunicaciones RS232.

SG (Signal ground) o GND: Esta línea de tierra.

DTR (Data Terminal Ready): Esta señal prepara al modem para conectarse a una línea
de comunicación y mantener la conexión establecida. Una vez que modem esta
conectado a la línea este pin debe estar encendido para mantenerse la conexión, si DTR
es apagado, provoca una desconexión de la línea, interrumpiendo el enlace de datos en
progreso. DTR también puede mantenerse encendido para efectuar la transmisión de
datos por el pin TXD. Básicamente DTR es el pin de control maestro del modem.

DSR (Data Set Ready): Es la línea que indica que el modem está preparado.
Usualmente el DSR esta todo el tiempo encendido porque este valor es un indicador de
que el MODEM esta encendido y listo.

RTS (Request To Send): Es la línea que dice al modem que el PC quiere enviar datos.
El estándar RS-232 dice que RTS condiciona al modem para la transmisión, en realidad
esta es solo una función que sirve de interruptor a un modem half duplex para transmitir
o recibir. Mientras un modem half duplex esta recibiendo, el DTE guarda el RTS
apagado (cero), Cuando le toca al DTE el turno de transmitir, este informa al modem
que desea transmitir poniendo el RTS a (uno). El DTE no puede comenzar
inmediatamente con el envío de datos al modem porque este, no puede cambiar
inmediatamente el modo de transmisión a recepción. Después de poner a uno RTS el
DTE monitorea el pin CTS el cual es apagado por el modem que esta en modo de
recepción, cuando el modem esta listo para transmitir, este enciende el CTS en función
al DTE que esta listo para el envío de datos. Este RTS-CTS (hand shaking), también es
permitido en sentido contrario, es decir cuando el transmisor vuelve a recibir. Como en
una comunicación full duplex hay dos canales no se necesita el RTS-CTS, de esta forma
un modem full duplex pone permanentemente el pin CTS conectado al pin DCD (Data
Carrier Detect).

CTS (Clear To Send): Es la línea que indica que el modem está preparado para recibir
datos desde el PC.

DCD (Data Carrier Detect): Es la línea que indica que el modem tiene de verdad
conexión remota. Este pin es también llamado “Receiver Time Signal Detect”, es
encendido cuando el modem recibe una señal remota y se mantiene encendido durante
el enlace. En conexiones de modem half duplex el DCD es encendido solamente por el
MODEM que esta en recepción.

TXD (Transmit Data): Es la línea de transmisión de datos serie al modem. El TXD no


puede transmitir datos a menos que los siguientes circuitos hayan sido encendidos:
DTR
DSR
RTS (listo para enviar).
CTS (listo para recibir).

RXD (Receive Data): Es la línea de recepción de datos serie desde el modem.

RI (Ring Indicator): Es la línea que indica que el modem ha detectado la señal de


“llamada” (se pone en uno).

Además para que dos dispositivos puedan hacer efectivo el intercambio de


información, se requiere que cada uno de ellos utilice las mismas características de
transmisión, entre estas características están la velocidad de transmisión, que pueden ser
de: 110bps, 300bps, 600bps, 900bps, 1200bps, 2400bps, 4800bps, 9600bps, 19200bps.
Estas velocidades han sido ampliadas en la versión RS-232-E.

El circuito RTS activa y desactiva el circuito de transmisión del modem.


Cuando un terminal detecta que le están llamando a él activa su señal RTS y queda a la
espera de recibir la señal CTS (listo para enviar) desde el modem antes de enviar su
respuesta. Cuando el terminal ha terminado la transmisión, desactiva la señal RTS, lo
que hace que el modem desactive su transmisor dejando la línea libre.
Con las seis señales de la tabla se puede establecer una comunicación punto a punto
entre los dos DTE (por ejemplo dos módems conectados por un cable).

10.1.2. Diferencias entre RS232 y UART

Básicamente son dos las diferencias entre la comunicación estándar RS232 y la


comunicación serie mediante UART, estas son las siguientes:

• Los niveles de tensión para representar los estados lógicos del bit son diferentes,
en la comunicación serie RS232 los niveles de tensión son -12 V (1 lógico) y
+12 V (0 lógico), en cambio utilizando la UART se utilizan los niveles de
tensión + Vdd (1 lógico) y 0 V (0 lógico), en este caso Vdd utilizado es 3,3V.

• Como se puede deducir del la descripción anterior los niveles lógicos están
invertidos, esto quiere decir, que lo que se entiende como un 1 lógico en RS232
(estado de la línea abajo), se entiende en la UART como un 0, lo mismo ocurre
con el estado lógico 0 del RS232. Es por ello que si se quiere conectar el WT –
11 al puerto serie de un PC se necesita de un drivers adaptador de los niveles de
tensión y estados lógicos, esto se desarrollará más adelante.

10.1.3. Esquema de la Comunicación

La siguiente figura muestra un esquema de las señales que se usarán para la


comunicación entre el microprocesador Host y el WT-11.

En la comunicación serie mediante UART, el atmega168p funcionará como


maestro por lo cual el WT -11 trabajará como esclavo. Las líneas RTS y CTS están
cruzadas entre el maestro y el esclavo como viene indicado en la norma. De la misma
forma ocurre con las líneas TX y RX de ambos módulos.

COMUNICACIÓN A CUATRO LÍNEAS

TXat RXwt
MASTER SLAVE
RXat TXwt

RTSat CTSwt
Atmega168p WT-11
CTSat RTSwt

La comunicación se realiza utilizando sólo cuatro líneas del estándar RS232,


debido a la implementación de las UART tanto en el atmega como en el WT -11. En el
caso del atmega sólo están implementadas en el microprocesador las líneas de RX y TX,
las líneas de control de flujo se implementa utilizando dos puertos de propósito general
del micro.

Existe una descripción mas detallada a nivel de conexión entre ambos


dispositivos en el capitulo de planos.

10.1.4. USART ATMEGA168P

CARACTERÍSTICAS GENERALES
Se pasa a describir los aspectos más generales de la USART que se encuentra
implementada en el microprocesador atmega168p.

El Transmisor/Receptor Universal Síncrono y Asíncrono (USART) es un


dispositivo altamente flexible para comunicación serie. Las principales características
son:

• Operación Full Duplex (Registros independientes de recepción y transmisión


serie).
• Operación Asíncrona y Sincrona.
• Operación Sincrona Maestro-Esclavo.
• Generador de alta resolución de Baud rate.
• Soporte de tramas con 5, 6, 7, 8 o 9 bits de datos y 1 o 2 bits de stop.
• Generación de paridad Par o Impar y Chequeo soportado por hardware.
• Detección de datos OverRun.
• Detección de tramas de error.
• Filtrado de ruido incluid, detección de bit de inicio falso y filtro pasa-bajo ideal.
• Tres interrupciones separadas: Finalización de Tx, Registro de datos vacío Tx,
Recepción Completa Rx.
• Modo de comunicación Multiprocesador.
• Modo de comunicación de doble velocidad Asíncrona.

A continuación de muestra el diagrama a bloques del transmisor USART.


Registros accesibles de I/O del CPU y pines de I/O se muestran en negritas.

Los recuadros punteados en el diagrama de bloques muestran las tres partes


principales del USART (listadas de arriba hacia abajo): Generador de reloj, transmisor y
receptor. Los registros de control son compartidos por todas las unidades. La generación
de reloj lógico consiste en la sincronización de la entrada de reloj externa usada el modo
de operación esclavo síncrono y el generador de baute rate. El pin XCK (reloj de
transferencia) solamente se usa para el modo de transferencia sincrona. El transmisor
consiste de un solo buffer de escritura, un registro de desplazamiento serie, el generador
de paridad y el control lógico para manejar los diferentes formatos de tramas serie. El
buffer de escritura permite una continua transferencia de datos sin ningún retardo entre
tramas. El receptor es la parte más compleja del módulo USART consiste en un reloj y
unidad de recuperación de datos. La unidad de recuperación es usada para la recepción
de datos asíncronos. En resumen para la unidad de recuperación, el receptor incluye un
chequeador de paridad, control lógico, un registro de desplazamiento y un buffer de
recepción de dos niveles (UDR). El receptor soporta el mismo formato de trama como
el transmisor, y puede detectar un error de trama, y errores de paridad y de overrun de
datos.

INICIALIZACIÓN
La USART tiene que ser inicializada antes que cualquier comunicación tome
lugar. El proceso de inicialización consiste normalmente en ajustar el baud rate, el
formato de trama y habilitar el transmisor o el receptor dependiendo del uso. Para una
operación de interrupción que conduzca el USART, las banderas de interrupción
globales deberán ser limpiadas (y las interrupciones globales deshabilitadas) cuando se
realiza la inicialización.

Antes de la inicialización cuando se cambie el baud rate u el formato de trama,


hay que tener cuidado de que no se estén usando transmisiones de salida durante el
periodo que los registros se cambien. La bandera TXC puede usarse para comprobar si
el transmisor ha completado su transferencia, y la bandera de RCX puede usarse para
comprobar que no exista un dato sin leerse en el buffer receptor. Hay que tener en
cuenta que la bandera TXC debe de limpiarse antes de cada transmisión (antes que el
UDR se escriba) si se usa para este propósito.

TRANSMISION DE DATOS
El transmisor de LA USART es habilitado ajustando el bit Habilitación de
Transmisión (TXEN) en el registro UCSRB. Cuando el transmisor es habilitado, la
operación normal del puerto del pin TxD es “overridden” por LA USART dando la
función de transmisión de salida serie. El baud rate, modo de operación y el formato del
trama deben establecerse antes que inicie cualquier transmisión.

ENVIO DE TRAMAS DE 5 A 8 BITS


Una transmisión de datos es iniciada cargando al buffer del trasmisor con los
datos a ser transmitidos. La CPU puede cargar al buffer de transmisión con solo escribir
en la localidad de I/O de UDR. Los datos almacenados en el buffer de transmisión serán
movidos al registro de desplazamiento cuando este registro este listo para enviar un
nuevo trama. El registro de desplazamiento es cargado con un nuevo dato si se
encuentra en estado libre (ninguna transmisión de salida) o inmediatamente después del
último bit de stop de la trama anterior sea transmitido. Cuando el registro de
desplazamiento es cargado con un nuevo dato, transferirá una trama completa a una
razón dada por el registro del Baud, el bit U2X o por XCK dependiendo del modo de
operación.
En el siguiente cronograma se puede ver un ejemplo de trama

 St: Bit de Star siempre es activo en bajo.

 N: Número de datos de 0 a 8 bits.

 P: Bit de paridad.

 Sp: Bits de parada puede ser 1 o 2. Siempre son activos en altos.

INTERRUPCIONES DE TRANSMISIÓN
El transmisor USART tiene dos banderas que indican un estado: Registro de
Datos Vacío (UDRE) y Transmisión Completada (TXC). Ambas banderas pueden
usarse para generar interrupciones. La bandera del registro de datos vacía (UDRE)
indica si el buffer del transmisor esta listo para recibir nuevos datos. Este bit se pone a
uno cuando el buffer del transmisor esta vacío., y se limpia cuando el buffer del
transmisor contiene datos para ser transmitidos que aún no se han movido al registro de
corrimiento. Por compatibilidad para dispositivos futuros, siempre escriba a este bit un
cero cuando se escriba al registro UCSRA.
Cuando el bit de habilitación de interrupción del registro de datos vacío
(UDRIE) en el UCSRB se escriba a uno, la interrupción del registro de datos vacío del
USART será ejecutada tan pronto como UDRE pase a uno (siempre y cuando las
interrupciones globales estén habilitadas). UDRE se limpia escribiendo en UDR.
Cuando se usa una transmisión de datos manejada por interrupción, la rutina de
interrupción de registro vacío debe ya sea escribir un nuevo dato a UDR para limpiar
UDRE o deshabilitar la interrupción de datos de registro vacío, de lo contrario una
nueva interrupción puede ocurrir una vez que la rutina de interrupción termine.

El bit de la bandera de la transmisión completada (TXC) se coloca a uno cuando


la trama entera en el registro de desplazamiento de transmisión ha sido enviada y ningún
dato actualmente se encuentra en el buffer de transmisión. El bit de la bandera TXC
automáticamente se limpia cuando una interrupción de transmisión completa se ejecute,
o puede ser borrado escribiendo a uno en esa localidad del bit. La bandera TXC es útil
para interfaces de comunicación half-duplex (como el estándar RS485), donde una
transmisión debe entrar a modo de recepción y se libere el bus de comunicación
inmediatamente después de completar la transmisión.

Cuando el bit de habilitación de interrupción de transmisión completa en el


UCSRB se ponga a uno, la interrupción de transmisión completa del USART será
ejecutada cuando la bandera TXC llegue a ponerse a uno (siempre y cuando las
interrupciones globales estén habilitadas). Cuando la interrupción de transmisión
completa se use, la rutina del manejo de interrupción no tiene que limpiar la bandera
TXC, esto se realiza automáticamente cuando la interrupción se ejecute.

DESHABILITAR EL TRANSMISOR
La deshabilitación del transmisor (ajustando el TXEN a cero) no llevara a cabo
hasta que transmisiones de salida o pendientes se hayan completado, por ejemplo,
cuando el registro de desplazamiento de transmisión y el registro del buffer de
transmisión no contengan datos para ser trasmitidos. Cuando se deshabilite, el
transmisor no enviara más datos por el pin TxD.

RECEPCIÓN DE DATOS
El receptor del USAR se habilita escribiendo en el bit de habilitación de
recepción (RXEN) en el registro UCSRB a uno. Cuando el receptor se habilita, la
operación normal del pin de RxD es “overridden” por el USART y se comporta como
receptor serie de entrada. El Baud Rate, el modo de operación y el formato del frame
deben de ajustarse antes que cualquier recepción serial se lleve a cabo.

RECEPCIÓN DE TRAMAS DE 5 A 8 BITS


El receptor inicia la recepción de datos cuando detecta un bit de inicio valido.
Cada bit que siga al bit de inicio será muestreado a un baud rate o al reloj XCK, y se
correrá dentro del registro de desplazamiento del receptor hasta que el primer bit de stop
de una trama se reciba. Un segundo bit de stop será ignorado por el receptor. Cuando el
primer bit de stop sea recibido, por ejemplo, un trama serie completa este presente en el
registro de desplazamiento del receptor, el contenido de registro desplazamiento será
movido dentro del buffer del receptor. El buffer del receptor puede entonces leerse por
lectura de la localidad del registro de I/O UDR.

INTERRUPCIONES DE RECEPCIÓN
El receptor de la USART tiene una bandera que indica el estado del receptor. La
bandera de recepción completa (RXC) indica si existen datos presentes sin leerse en el
buffer de recepción. Esta bandera esta en uno cuando existen datos sin haberse leído en
el buffer de recepción y esta a cero cuando el buffer de recepción esta vacío (por
ejemplo, no contiene ningún dato sin leerse). Si el receptor esta deshabilitado (RXEN =
0), el buffer receptor será “flushed” y consecuentemente el bit RXC llega a se cero.

Cuando el bit de habilitación de interrupción de recepción completa (RXCIE)


en el UCSRB es puesto a uno, la interrupción de recepción completa de la USART será
ejecutada tan pronto como la bandera RXC se ponga a uno (siempre y cuando las
interrupciones globales estén habilitadas). Cuando se usa la recepción de datos dirigida
por interrupción, la rutina de recepción completa debe leer el dato recibido de UDR para
limpiar la bandera de RXC, de lo contrario una nueva interrupción puede ocurrir una
vez que la rutina de interrupción termina.
BANDERAS DE ERROR
El receptor USART tiene tres banderas de error: Error de trama (FE), Dato
Sobre escrito (DOR) y Error de Paridad (PE). Todas pueden accederse leyendo el
UCSRA. Algo similar para las banderas de Error es que ellas están localizadas juntas en
el buffer de recepción con la trama para las cuales ellas indican el estado del error.

Debido a que las banderas de error son almacenadas, el UCSRA deberá de leerse
antes que el buffer de recepción (UDR), ya que leyendo la localidad de I/O del UDR
cambia la localidad de lectura del buffer. Otra similitud para las banderas de error es
que ellas no pueden ser alteradas por software poniendo una escritura en la localidad de
la bandera. Sin embargo, todas las banderas deben ponerse a cero cuando el UCSRA es
escrito para incrementar la compatibilidad de futuras implementaciones del USART.
Ninguna de las banderas de Error puede generar interrupciones.

La bandera de error de trama (FE) indica el estado del primer bit de stop de la
próxima trama legible almacenada en el buffer de recepción. La bandera de error de
trama es cero cuando el bit de stop fue correctamente leído (como uno), y la bandera de
error de trama será uno cuando el bit de stop haya sido incorrecto (cero). Esta bandera
puede ser usada para detectar condiciones de fuera de sincronización, detectando
condiciones de ruptura y manejo de protocolo. La bandera de error de trama no será
afectada por los ajustes del bit USBS en el UCSRC ya que el receptor ignora todo,
excepto para los primeros bits de stop. Por compatibilidad con futuros dispositivos,
siempre ponga a cero este bit cuando se escriba a UCSRA.

La bandera de Datos Sobre escritos (DOR) indica la perdida de datos debido a la


condición de buffer de recepción lleno. Una sobre escritura de datos ocurre cuando el
buffer del receptor esta lleno (dos caracteres), y esta un nuevo carácter esperando en el
registro de desplazamiento del receptor, y un nuevo bit de inicio es detectado. Si la
bandera DOR es puesta a uno entonces hubo una o más perdidas de tramas series entre
la última trama leída del UDR y la próxima trama leída de UDR. Para compatibilidad
con futuros dispositivos, siempre se debe escribir este bit a cero cuando se escriba en
UCSRA. La bandera DOR se limpia cuando la trama recibida fue exitosamente movida
del registro de desplazamiento al buffer de recepción. La bandera de Error de Paridad
(PE) indica que la próxima trama en el buffer de recepción tuvo un error de paridad
cuando se recibió. Si la comprobación de paridad no esta habilitado el bit PE siempre
leerá cero. Para compatibilidad con futuros dispositivos, siempre escriba a este bit a
cero cuando escriba en UCSRA.

DESHABILITAR EL RECEPTOR
En contraste con el transmisor, la deshabilitación del receptor será inmediata.
Los datos de las recepciones que están en proceso serán perdidos. Cuando se deshabilita
el receptor (por ejemplo, RXEN se coloca a cero) la operación de recepción no se
ejecutara más en el pin del puerto de RxD. El buffer receptor FIFO será “flushed”
cuando el receptor se deshabilita. El resto de los datos en el buffer serán perdidos.
REGISTROS DE LA USART
Se presenta un breve resumen de los registros utilizados y de sus características
de funcionamiento.

Registro de Datos de E/S del USART – UDR

El buffer de registro de datos de transmisión del USART y el buffer de registro


de datos de recepción del USART comparten la misma dirección de E/S referida como
Registro de Datos del USART o UDR. El buffer de registro de transmisión de datos
(TXB) será el destino para los datos escritos en la localidad del registro UDR. Leyendo
la localidad del registro UDR retornara el contenido del buffer de registro de datos de
recepción (RXB).

Para los caracteres de 5-, 6- o 7- bits los bits altos no usados serán ignorados por
el transmisor y se ajustaran a cero por el receptor. El buffer de transmisión solamente se
puede escribir cuando la bandera UDRE en el registro UCSRA esta en alto. Los datos
escritos a UDR cuando la bandera UDRE no esta en alto, serán ignorados por el
transmisor del USART. Cuando el dato se escribe al buffer de transmisión, y el
transmisor es habilitado, el transmisor cargará los datos dentro del registro de
desplazamiento del transmisor cuando el registro de desplazamiento este vacío.
Entonces los datos serán transmitidos por el pin TxD.

El buffer de recepción consiste de una FIFO (Fila de Primero en Entrar, Primero


en Salir) de dos niveles. La FIFO cambiará su estado cuando el buffer de recepción se
acceda.

Registro A de Estado y Control del USART

• Bit 7 – RXC: Recepción Completa del USART

• Bit 6 – TXC: Transmisión Completa del USART

• Bit 5 – UDRE: Registro de Datos Vacío del USART

• Bit 4 – FE: Error de Frame

• Bit 3 – DOR: Datos Sobre escritos

• Bit 2 – PE: Error de Paridad

• Bit 1 – U2X: Doble Velocidad de Transmisión del USART

• Bit 0 – MPCM: Modo de Comunicación Multi-procesador

Registro B de Estado y Control del USART

• Bit 7 – RXCIE: Habilitación de Interrupción de RX Completa


• Bit 6 – TXCIE: Habilitación de Interrupción de TX Completa

• Bit 5 – UDRIE: Habilitación de Interrupción de Registro de Datos Vacío del


USART

• Bit 4 – RXEN: Habilitación del Receptor

• Bit 3 – TXEN Habilitación del Transmisor

• Bit 2 – UCSZ2: Tamaño del Carácter

• Bit 1 – RXB8: 8vo Bit de Datos de Recepción

• Bit 0 – TXB8: 9no Bit de Datos de Transmisión

Registro C de Estado y Control del USART

El registro UCSRC comparte la misma localidad de E/S del Registro UBRRH.

• Bit 7 – URSEL: Registro de Selección

• Bit 6 – UMSEL: Selección del Modo del USART

• Bits 5:4 – UPM1:0. Modo de Paridad

• Bit 3 – USBS: Selección del Bit de Stop

• Bits 2:1. Tamaño del Carácter

• Bit 0 – UCPOL: Polaridad de Reloj

Registro del Baud Rate del USART – UBRRL y UBRRH

El registro comparte la misma localidad de E/S como el registro UCSRC.

• Bit 15 – URSEL: Selección de Registro

• Bit 14:12 – Bits Reservados

• Bits 11:0 – UBRR11:0. Registro del Baud Rate del USART

10.1.5. UART Sistema Bluetooth WT-11

El dispositivo Bluetooth lleva incorporado una interfase UART para poder


realizar una comunicación con otros dispositivos. A continuación se explica las
características básicas de dicha UART:
• Los niveles de tensión utilizados son de 0 a Vdd que son los mismos que utiliza
el microprocesador ATmega 168P, por lo cual no se necesita ningún tipo de
drivers para realizar adaptación alguna.

• Están implementadas las cuatro señales básicas de comunicación serie con


control flujo, estas son UART_TX, UART_RX, UART_RTS y UART_CTS.
Pero para la comunicación que se desea realizar sólo serán usadas las de
transmisión y recepción no obstante, las señales de control de flujo se han
conectado a dos pines del microprocesador por si en algún momento se quiere
realizar una comunicación con control de flujo.

Las señales DTR, DSR y DCD son implementadas mediante puertos de entrada
y salida de propósito general del WT-11.

10.1.6. Configuración Baud Rate

Este apartado es el más importante dentro de la configuración de la


comunicación entre el microprocesador host y el sistema Bluetooth, ya que ambas
UART deben ser configuradas para que comuniquen con el mismo Baud Rate para que
los comandos sean entendibles en ambos sentidos.

CONFIGURACIÓN DEL BAUD RATE DEL ATmega168P

En la configuración del ATmega intervienen los siguientes factores:

• Frecuencia a la que trabaja el micro y si hay algún divisor de frecuencia


activado. Se trabaja con una frecuencia de 8MHz proporcionada por el oscilador
interno RC. La configuración de esta fuente de reloj y de esta frecuencia la
realiza el programador.
• Si está activado el bit U2X del registro USCRnA el cual dobla la velocidad a la
que transmite la UART. No ha hecho falta activar dicho flag ya que con 8 MHZ
se trabaja a una velocidad adecuada y doblando dicha velocidad no se consigue
mejorar la transmisión como se explicará a continuación.

Una vez conocidas las condiciones de reloj en las que se realizará la transmisión
hay que configurar el registro de baud rate del microprocesador, que es un registro
doble, UBRRnH y UBRRnL.

El valor que se debe insertar en dicho registro se puede calcular mediante las
siguientes expresiones:

Donde Fosc es la frecuencia seleccionada y UBRRn el valor que se ha de cargar


en dicho registro de configuración.

De la anterior expresión se deduce,

Esta última expresión se ha implementado mediante código, el cual se carga


directamente de cargar los registros, para mayor información ver el capitulo dedicado al
código.

En la siguiente tabla, que ha sido sacada del datasheet del micro se muestra los
distintos Baud Rate que se pueden conseguir con la frecuencia selecciona de 8 MHz y el
error que se comete.

El error se puede calcular con la siguiente expresión:


CONFIGURACIÓN DEL BAUD RATE DEL WT-11
El firmware que trae el dispositivo fija el Bate Rate a 115200 baud, pero este se
puede cambiar tocando la configuración interna del firmware mediante la herramienta
que proporciona CSR (fabricante del microprocesador interno al chip Bluegiga) PSTool,
el cual viene dentro del paquete CSR Bluesuite.

En la siguiente tabla se muestra los valores de velocidad con los que se puede
configurar el dispositivo y sus correspondientes errores.
PROBLEMÁTICA DE CONFIGURACIÓN
El problema consiste en que el firmware (iWRAP) viene configurado por
defecto con un Bate Rate como ya se ha explicado anteriormente, si se intenta
configurar con este Baud Rate al microprocesador se comete un error muy grande, en
concreto como se puede observar de la tabla mostrada en el apartado de configuración
del microprocesador, un error de 8,5 % este error es inadmisible, por lo que hay que
intentar configurarlo con otra tasa de transmisión.

Por otro lado si se configura a 9600 baud que es una tasa para la que el micro
tiene un error de 0%, se tiene en cambio un error de -0,82 % que puede llegar a ser un
poco elevado, además de ser un tasa de transmisión que puede llegar a ser baja
conforme se eleva el flujo de información que se deseé enviar.

SOLUCIÓN ADECUADA
Finalmente se ha decidido configurar ambos dispositivos con una tasa de 38400
baud, con la cual en el micro se obtiene un error de 0,2 % que es bastante bajo y en
cuanto al dispositivo Bluetooth se tiene un error de -0,18% que también es muy bajo.
Permitiendo además tener una velocidad de transmisión más elevada y adecuada para la
cantidad de transmisión que desea enviar.

Como se observa de la tabla de ejemplo de Baud Rate del Atmega, se ha


cargado con el valor 12.

La configuración del WT-11 se explica en el apartado dedicado a la herramienta


de configuración PSTool.

10.1.7. Configuración Interna WT-11: Herramienta PSTool


Con la herramienta PSTool que viene incluida en el paquete software BlueSuite
proporcionado por CSR, se puede configurar las principales características funcionales
del firmware que contienen los chip CSR.

Esta aplicación se ha utilizado para modificar el Baud Rate con el que funciona
por defecto iWRAP, para poder realizar la comunicación con el microprocesador Host a
38400 baud como ya se explicó anteriormente.

En el Datasheet del sistema Bluetooth WT -11 vienen los pasos seguidos para
poder cambiar la configuración del Baud Rate.

10.2. Comunicación SPI

A continuación se describe como se ha realizado la comunicación serie SPI, la


cual ha sido utilizada para comunicar el microprocesador Host con la memoria externa,
así como para programar el microprocesador se ha utilizado también esta interfase.

10.2.1. Introducción

El Bus SPI (del inglés Serial Peripheral Interface) es un estándar de


comunicaciones, usado principalmente para la transferencia de información entre
circuitos integrados en equipos electrónicos. El bus de interface de periféricos serie o
bus SPI es un estándar para controlar casi cualquier electrónica digital que acepte un
flujo de bits serie regulado por un reloj.

Incluye una línea de reloj, dato entrante, dato saliente y un pin de chip select,
que conecta o desconecta la operación del dispositivo con el que uno desea
comunicarse. De esta forma, este estándar permite multiplexar las líneas de reloj.

Muchos sistemas digitales tienen periféricos que necesitan existir pero no ser
rápidos. La ventajas de un bus serie es que minimiza el número de conductores, pines y
el tamaño del circuito integrado. Esto reduce el coste de fabricar montar y probar la
electrónica. Un bus de periféricos serie es la opción más flexible cuando muchos tipos
diferentes de periféricos serie están presentes. El hardware consiste en señales de reloj,
data in, data out y chip select para cada circuito integrado que tiene que ser controlado.
Casi cualquier dispositivo digital puede ser controlado con esta combinación de señales.
Los dispositivos se diferencian en un número predecible de formas. Unos leen el dato
cuando el reloj sube otros cuando el reloj baja. Algunos lo leen en el flanco de subida
del reloj y otros en el flanco de bajada. Escribir es casi siempre en la dirección opuesta
de la dirección de movimiento del reloj. Algunos dispositivos tienen dos relojes. Uno
para capturar o mostrar los datos y el otro para el dispositivo interno.

VENTAJAS

• Comunicación full-duplex.

• Mayor velocidad de transmisión que con I²C o SMBus.


• Protocolo flexible en que se puede tener un control absoluto sobre los bits
transmitidos:
o No está limitado a la transferencia de bloques de 8 bits.
o Elección del tamaño de la trama de bits, de su significado y propósito.

• Su implementación en hardware es extremadamente simple:


o Consume menos energía que I²C o que SMBus debido que posee menos
circuitos (incluyendo las resistencias pull-up) y estos son más simples.
o No es necesario arbitraje o mecanismo de respuesta ante fallos.
o Los dispositivos esclavos usan el reloj que envía el maestro, no necesitan
por tanto su propio reloj.
o No es obligatorio implementar un transceptor (emisor y receptor), un
dispositivo conectado puede configurarse para que solo envíe, sólo
reciba o ambas cosas a la vez.

• Usa muchos menos terminales en cada chip/conector que una interfaz paralelo
equivalente.

• Como mucho una única señal específica para cada esclavo (señal SS), las demás
señales pueden ser compartidas.

INCONVENIENTES

• Consume más terminales en cada chip que I²C, incluso en la variante de 3 hilos.

• El direccionamiento se hace mediante líneas específicas (señalización fuera de


banda) a diferencia de lo que ocurre en I²C que se selecciona cada chip mediante
una dirección de 7 bits que se envía por las mismas líneas del bus.

• No hay control de flujo por hardware.

• No hay señal de asentimiento. El maestro podría estar enviando información sin


que estuviese conectado ningún esclavo y no se daría cuenta de nada.

• No permite fácilmente tener varios maestros conectados al bus.

• Sólo funciona en las distancias cortas a diferencia de, por ejemplo, RS-232, RS-
485, o Bus CAN.

Como conclusión decir que este interfase se ha utilizado debido a que es un


estándar muy utilizado en la comunicación con memora flash externas, y el
microprocesador utilizado dispone de este interfase.

ESQUEMA
La siguiente figura muestra el esquema de comunicación utilizado, donde el
sistema maestro el microprocesador ATmega y el esclavo es la memoria 25P80. Las
líneas utilizadas son las de una comunicación clásica, a estas se les ha añadido la de
hold que es especial para este tipo de memoria y esta fuera del ámbito de una
comunicación SPI clásica.

10.2.2. SPI ATMEGA 168P

En este capitulo se describe el interfase SPI que contiene el microprocesador


ATmega126P.

CARACTERÍSTICAS GENERALES
Las principales características de la interfase SPI son:

• Comunicación Full_duplex a tres cables, con transferencia de datos síncrona.

• Configuración Maestro-Esclavo.

• Transferencia de datos primero LSB o MSB.

• Siete programables tasas de Bits.

• Flag de interrupción de fin de transmisión.

• Flag de protección de colisión de escritura.

• Conmutación del modo de funcionamiento Idle.

• Doble velocidad (CK/2) en modo maestro.

DIAGRAMA DE BLOQUES
En la siguiente figura se puede observar el diagrama de bloques que componen
la interfase.
El sistema consiste en dos registros de desplazamiento y generador de reloj
maestro. El SPI maestro comienza el ciclo de comunicación cuando se selecciona el
chip select (poniendo en bajo) del dispositivo esclavo con el que se desea realizar la
comunicación. Tanto el maestro como el esclavo preparan los datos para ser enviados en
sus respectivos registros de desplazamiento y el maestro genera los pulsos de reloj
requeridos para intercambio de información. La información siempre es desplazada
desde el maestro hacia el esclavo sobre la salida del maestro – entrada del esclavo
MOSI, y desde el esclavo hacia el maestro sobre la entrada del maestro – salida del
esclavo MISO. Después de cada envío de un paquete el maestro debe sincronizar el
esclavo colocando en alto la línea de chip select #SS.

Cuando el SPI es configurado como maestro no se tiene un control automático


sobre la línea #SS, ésta debe ser manejada por software para poder empezar. Cuando se
ha realizado dicho paso, escribiendo un byte sobre el registro de datos SPI se comienza
la generación del reloj SPI y el hardware desplaza los 8 hacia el esclavo. Una vez
desplazado todo el byte el generador de reloj para, actualizando el flag de final de
transmisión. Si la interrupción correspondiente está activada, ésta se llevará a cabo. El
maestro puede continuar enviando el siguiente byte escribiendo dentro de SPDR o
establecer la señal de final de paquete colocando en alto la señal #SS. El último byte
recibido será almacenado en Buffer para su posterior uso.

Cuando se configura como esclavo el interfase SPI permanece durmiendo con la


señal MISO en tri-estado mientras el pin #SS se encuentre en estado alto. En este estado
mediante software se puede actualizar el contenido del registro de datos SPI, SPDR,
pero los datos no serán desplazados hasta que no se reciba una señal correcta de reloj y
el pin #SS se coloque en bajo. Una vez que el byte ha sido completamente desplazado,
el flag de final de transmisión SPIF es activado. Si la interrupción correspondiente está
activada la rutina de servicio de interrupción se llevará a cabo. El esclavo podría recibir
un nuevo dato antes de leer el que había recibido anteriormente. El último dato recibido
se almacenará en el registro Buffer para su posterior uso.

En la siguiente figura se puede observar el funcionamiento de los registros de


desplazamiento tanto del maestro como del esclavo.

El sistema contiene un buffer en la dirección de transmisión y tiene dos en la


dirección de recepción. Esto significa que los bytes transmitidos no pueden ser escritos
en el registro de datos SPI antes que el ciclo entero de desplazamiento sea completado.
Sin embargo cuando se reciben los datos, los caracteres recibidos deben ser leídos del
registro de datos SPI antes que un nuevo carácter sea completamente desplazado. En
cualquier otro caso el byte será perdido.

FUNCIONALIDAD DEL PIN #SS


MODO ESCLAVO

Cuando la SPI se encuentra configurado como esclavo el pin #SS es siempre una
entrada. Cuando dicho pin se coloca en bajo, el SPI se activa y el pin MISO pude
hacerse salida si es configurado por el usuario. El resto de pines son entradas.

Cuando el pin es conducido a alto, todos los pines son entradas y el SPI es
pasivo, lo cual significa que no puede recibir datos. Cuando el #SS es llevado a alto el
SPI esclavo realiza un reset lógico y coloca parcialmente algún dato recibido en registro
desplazamiento.

MODO MAESTRO

Si se configura el SPI como maestro se puede configurar la dirección del pin


#SS como se quiera.
Si el pin es configurado como salida el funcionamiento de tal pin es como una
pin de salida general del micro el cual se conectará con el otro pin #SS del esclavo.

Si en cambio de configura como entrada hay que asegurarse de que ésta se


encuentra en estado alto, para asegurar una correcta operación de SPI. Si estando
configurado como entrada se coloca en bajo el SPI interpretará que otro maestro ha
seleccionado el SPI como esclavo y comenzará a enviar datos.

10.2.3. Modos de Funcionamiento

Existen cuatro combinaciones de fase y polaridad del reloj con respecto a la


información serie, esto modos de funcionamiento son determinados por los bits de
control CPHA y CPOL. Los formatos posibles son mostrados en la siguiente tabla:

Las siguientes figuras muestran el diagrama de tiempo de funcionamiento de la


transferencia de información en los cuatro modos de funcionamiento-

 Con CPHA = 0

 Con CPHA = 1
10.2.4. Modos SPI de la Memoria

La memoria puede manejarse mediante dos modos de funcionamiento con la


interfase SPI, dependiendo de cómo estén configurados los bits CPOL y CPHA. La
diferencia de funcionamiento entre los dos modos de funcionamiento se muestra en la
figura a continuación y se refiere al estado de polaridad del reloj cuando el bus maestro
se encuentra en estado de standby.

Como conclusión se puede ver que hay q configurar el modo de funcionamiento


de ambos dispositivos de la misma forma con el objetivo de que la comunicación se
realice de forma correcta.

10.3. Comunicación Sistema Bluetooth – Teléfono Móvil Nokia


6132NFC
Como ya es conocido para la comunicación con el Nokia 6132 NFC se utilizar el
estándar de comunicación Bluetooth. En el capitulo dedicado a la especificación
Bluetooth se vieron los distintos perfiles que se podían utilizar para realizar una
comunicación Bluetooth y a su vez que protocolo se utilizaban en dichos perfiles para
llevar a cabo la comunicación.

Dentro de todos esos perfiles se ha utilizado el perfil serie para realizar la


transmisión de información, es un perfil que como ya se ha comentado en capítulos
anteriores permite emular un puerto serie utilizando como medio de transmisión
Bluetooth. Esto quiere decir que la información llegará al receptor, es decir el teléfono
móvil, de forma continua. En concreto el teléfono recibirá una cadena de caracteres que
contendrá todo la información de interés para la aplicación que corre sobre el teléfono
móvil.

El siguiente diagrama de flujo sirve para entender como se realiza los pasos para
establecer la comunicación y enviar la información al teléfono móvil.
Esperando
Llamada

RING

Dirección No
Bluetooth Nokia 6131
BDADDR NFC

Canal
RFCOMM Abrir
1 Comunicación

Temperatura
Batería Enviar
Registros Datos
Contadores

Close Cerrar
Comunicación
Link 1

10.3.1. Establecimiento de la comunicación

El establecimiento de la comunicación se realiza un vez que se ha recibido una


llamada por parte del teléfono móvil, mediante software se comprueba que la llamada
corresponde al teléfono móvil Nokia 6131 NFC, esta comprobación se realiza mediante
comparación de la dirección Bluetooth del teléfono la cual de antemano es conocida por
el sistema Bluetooth, con la dirección Bluetooth de dispositivo que ha realizado la
llamada.

En el caso que la dirección Bluetooth que se recibe no coincide con la del


teléfono se cierra inmediatamente el canal de comunicación que se había abierto,
volviendo el sistema al estado inicial de reposo en el que espera una nueva solicitud de
comunicación.

10.3.2. Envío de Información

Una vez establecida la comunicación el sistema Bluetooth envía la trama de


caracteres por el canal de comunicación serie abierto, esto es un por un canal del
protocolo RFCOMM que se abre cuando se establece la comunicación.

En la siguiente figura se puede observar en que consiste la trama de información


que se envía al teléfono:

Temperatura Batería Registro de los Contadores


(4 Bytes) (6 Bytes) (n Bytes)

En primer lugar se envían 4 bytes que corresponden con la medida de


temperatura que mide el sensor que lleva incorporado el WT-11. Se utilizan cuatro bytes
que corresponden 2 bytes al valor numérico de la temperatura con dos cifras y otros dos
bytes para enviar los caracteres ºC. Un posible ejemplo para este campo sería 25ºC.

A continuación se mandan 6 bytes, estos corresponden con el % de batería del


sistema en el momento en el que se ha realizado la solicitud de comunicación. Los bytes
corresponden 5 bytes para las cifras del % de batería con dos decimales más los
caracteres de separación de las cifras enteras de los decimales y símbolo porcentual. Por
ejemplo un posible valor para este campo sería 75,20%.

Por último se envían los datos de los registros de las medidas de los contadores.
La siguiente figura constituye lo que sería un registro de una media.

• El carácter ‘-‘corresponde a la indicación del comienzo del registro.

• El siguiente byte en el ejemplo 1, corresponde al número de sensor. Se tienen


tres posibles sensores que corresponden a los tres concentradores de contadores,
que se muestran en la siguiente tabla.

SENSORES
GRUPO 1 SAN DESIDERIO
GRUPO 2 SAN LORENZO
GRUPO 3 SAN GIOBATTA

• El carácter ‘:’ sirve de separación para los campos de fecha e instante.

• La fecha se manda en formado “dd#mm#aaaa”, donde el carácter # sirve para


diferenciar los distintos subcampos que componen la fecha.

• En último lugar se envía el instante en formato “hh.mm”, en este caso se utiliza


el carácter ‘*’ para diferenciar los subcampos.

El número de trama como la anterior que se envíen dependerá del número de


medida de los contadores.

10.3.3. Cierre de la comunicación

El cierre de la comunicación lo realiza el sistema Bluetooth por medio del


comando CLOSE 0, el cual cierra el canal RFCOMM que previamente se había abierto
al recibir la llamada por parte del Nokia 6131 NFC.

10.4. Comunicación Sistema Bluetooth – Otras tarjetas


Bluetooth.

Como se explicara más adelante se han realizado pruebas de comunicación del


Sistema Bluetooth diseñado con otras tarjetas Bluetooth las cuales son un PC portátil
con Bluetooth incorporado u otra tarjeta de desarrollo del WT-11-

10.4.1. Establecimiento de la comunicación

El establecimiento de la comunicación se realiza exactamente igual que el caso


del móvil sólo que ahora se comprobará que la dirección Bluetooth de la solicitud
recibida corresponde con unas de las tarjetas Bluetooth antes mencionadas.

10.4.2. Envío de Información

En cuanto al envío de información es parecido sólo que los campos de la trama


que se envía aumentan, enviando todos los posibles datos de la comunicación
establecida que pueden resultar interesante al receptor.

En la siguiente figura se observa la composición de la trama:


Como se puede observar el volumen de información que se transmite en estos
casos es mayor. La información de los campos es la siguiente:

• BER, corresponde a la tasa de error de transmisión en %.

• TXPOWER, potencia de transmisión en dBm.

• RSSI, potencia de recepción en dBm.

• PING, relacionado con el tiempo de respuesta en ms.

• Lo otros campos son iguales que en el caso anterior.

10.4.3. Cierre de la comunicación

Se realiza de la misma forma que en el caso anterior.

También podría gustarte