PDF de programación - Capítulo 6/13 - Módulo Serial Asincrónico de Comunicación - SCI - Serial Comunication Interface - Curso sobre Microcontroladores

Imágen de pdf Capítulo 6/13 - Módulo Serial Asincrónico de Comunicación - SCI - Serial Comunication Interface - Curso sobre Microcontroladores

Capítulo 6/13 - Módulo Serial Asincrónico de Comunicación - SCI - Serial Comunication Interface - Curso sobre Microcontroladoresgráfica de visualizaciones

Publicado el 31 de Mayo del 2018
892 visualizaciones desde el 31 de Mayo del 2018
240,0 KB
7 paginas
Creado hace 12a (07/01/2012)
Curso sobre Microcontroladores
Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella – EduDevices – www.edudevices.com.ar
e-mail: [email protected]

Capítulo 6.-

Módulo Serial Asincrónico de Comunicación
- SCI - Serial Comunication Interface.

El módulo SCI o UART (Universal Asynchronous Receiver Transmitter) de la familia
HC9S08 es muy similar al que posee la familia HC908 con algunas diferencias que
mejoran su flexibilidad y configuración con respecto a esta familia.

El módulo SCI de la familia HC9S08 provee comunicaciones asincrónicas de alta
velocidad con otros periféricos externos o MCUs. La SCI utiliza el formato full –
dúplex , No Retorno a cero (NRZ) e incluye un generador de Baud Rate interno.
El generador de Baud Rate no requiere de TIMER alguno del MCU, lo que le da una
total independencia del resto de los módulos, al igual que en la familia HC908.

Muchas de las características del SCI ayudan al diseñador a realizar comunicaciones de
redes más eficientes y con gran flexibilidad de uso.

La transmisión y la recepción pueden ser habilitadas en forma independiente una
de otra, comparten el mismo Buad Rate y utilizan un sistema de “Doble Buffer”
que le permite enviar y recibir información sin la intervención del CPU durante
todo el proceso, y solo cuando la operación es completada.

El módulo SCI puede manejarse por interrupciones y flags independientes para
cada situación de la comunicación, lo que le otorga al módulo una gran capacidad
para realizar comunicaciones complejas en redes multinodos con un manejo eficiente de
la comunicación.

Podemos resumir las características generales del módulo de la siguiente forma:

• Formato de comunicación NRZ – Full – Dúplex.
• Baud Rate programable por medio de un divisor de 13 Bits de longitud.
• Sistema de “Doble – Buffer” en Recepción y Transmisión.


Manejo por Interrupciones o por encuesta (polling) de flags en las siguiente
situaciones:

- Transmit Data Register Empty y Transmission Complete.
- Receive Data Register Full.
-

Indicación de errores como: Receive Overrun, Parity error, Framing error,
y noise error.

- Detección de Idle Receiver.
- Largo de carácter programable de 8 y 9 Bits.
- Generación y Chequeo de paridad por hardware.
- Wake Up del Receptor por línea IDLE o por “Address – Mark”.
- Envío opcional de carácter “Break” de 13 Bits.
- Polaridad programable del transmisor.

A continuación, se analizarán los distintos registros con que cuenta el módulo y algunos
detalles de funcionamiento de este.

SCI Data Register (SCID).

Al igual que en la familia HC908, el registro de Datos del módulo SCI posee un
sistema de “Doble – Buffer” que permite leer y escribir en una misma posición física
de memoria del registro, 2 registros distintos. Cuando se lee el SCID, en realidad se está
leyendo el buffer de recepción de datos, mientras cuando se escribe en el SCID, en
realidad se está escribiendo en el buffer de transmisión de datos del módulo.
Tanto la lectura como la escritura provocan la limpieza automática de los flags de
estado del módulo relacionado con estas operaciones.

Sistema de Doble – Buffer.

Para transmitir un dato hacia el exterior, el CPU escribe el dato en el registro SCID.
Tal como se vio en la familia HC908, el transmisor del SCI incluye un shift register
(registro de desplazamiento) de 11 bits para almacenar la información durante la
transmisión. Esto permite al CPU escribir un carácter de dato mientras el módulo SCI
está transmitiendo el carácter de dato previo. Para transmitir un dato, el CPU solamente
necesita chequear si el registro de datos del módulo (SCI Data Register) está vacío antes
de escribir en el.

La figura anterior, nos muestra un ejemplo típico de transmisión de datos. Asumiendo
que el registro de datos SCID está vacío y que el CPU quiere transmitir un dato.

Entonces, primero, el CPU escribe el carácter en el registro de datos del SCI (SCID).

Segundo, cuando el shift register está listo para aceptar el nuevo dato, el hardware del
SCI mueve en forma automática el dato desde el registro de datos al shift register.

Tercero, una vez que el dato fue movido al shift register, el módulo SCI pone un “1” en
el flag “Transmit Data Register Empty” (TDRE), indicando al CPU que otro carácter
puede ser enviado. Se puede utilizar este flag para “monitorear” el estado del mismo o
bien habilitar la interrupción correspondiente a este flag para generar un pedido de
interrupción cuando se presente el evento.

Cuarto, los datos son enviados al exterior a la velocidad configurada por el generador de
Baud Rate por medio del pin TxD.

Quinto y último, una vez que el último bit es enviado al exterior, el módulo SCI pone a
“1” el flag de transmisión completa (TC) y en forma opcional (si se la habilita) genera
un pedido de interrupción al CPU.

De igual forma, pero en sentido inverso, la sección de recepción efectúa los mismos
pasos que los efectuados durante la transmisión.

Sistema de Recuperación de Datos del SCI.

El receptor del módulo SCI incluye un sistema de recuperación de datos que muestrea y
verifica el dato recibido. Este sistema es idéntico al empleado en el SCI de los
HC908, por lo que se asumirá que el lector ya lo conoce en profundidad, y no es
necesario ampliar el tema, si ello no fuera así, se sugiere leer con detenimiento el Curso
sobre la familia HC908 y los manuales de datos de la familia HC9S08 contenido en el
CD ROM del kit “EDUKIT08” y sus kits complementarios.

SCI Baud Rate Generator.

El generador de Baud Rate implementado en el módulo SCI de la familia HC9S08,
es muy diferente al implementado en los HC908. En la figura superior, puede verse
los bloques constitutivos y las señales del generador de Baud Rate.

Dicho generador incluye un módulo divisor de 13 Bits que puede programarse
utilizando 2 registros especiales para ello. Como el lector podrá apreciar, ya no existe el
módulo de “pre – scaler” empleado por los HC908, sino que todo el conjunto de pre –
scaler + bits del divisor, han sido reemplazados por un único divisor de 13 Bits que
otorga mayor flexibilidad a la hora de “ajustar” el Baud Rate buscado y hace más
sencillo el cálculo final del Baud Rate ante una frecuencia de Bus dada.

La fuente de reloj (clock) para el generador de Baud Rate es el Bus Clock (FBUS).
Es otra de las diferencias, ya que en el HC908 se puede optar entre el FBUS o el
CGMXCLK (4 x FBUS), pudiéndose lograr velocidades de comunicación 4 veces
mayores con solo cambiar la fuente de referencia.

Para calcular el Baud Rate en el módulo SCI del HC9S08, se debe dividir la
frecuencia del reloj de referencia (FBUS) por el valor configurado en el registro
divisor de 13 Bits y a su vez, por 16, como se muestra en la figura superior.

Si el lector efectúa algunos cálculos, podrá comprobar que el módulo SCI de los
HC9S08 no solo puede alcanzar velocidades de comunicación iguales o superiores
al de la familia HC908, sino que también posee mayor flexibilidad para establecer
velocidades especiales o bien estándar desde frecuencia de Bus algo particulares.

La tolerancia en los desajustes de las velocidades de comunicación para este módulo es
de +/- 4,5% para el formato de datos de 8 Bits y de +/- 4% para el formato de 9 Bits.

Esta tolerancia es más que aceptable para lograr comunicaciones estables y confiables
con la gran mayoría de los periféricos del mundo real y permite que nuestro sistema se
“adapte” a las diferencias de velocidades que puedan presentarse.

Echemos un vistazo a los registros de Buad Rate SCIBDH y SCIBDL.

Este registro de 13 Bits (SBR12 a SBR0) que lo llamaremos genéricamente como
“BR” puede configurarse para lograr la división requerida. Cuando BR = 0, el
generador de Baud Rate es apagado para reducir el consumo de energía.
Los valores posibles para el mismo son entre 1 y 8191.

Para actualizar el valor contenido en los registros de Baud Rate, primero hay que
escribir, el nuevo valor, en la parte más alta de dicho registro (SCIBDH) y luego en
la parte más baja del mismo (SCIBDL). El nuevo valor no tendrá efecto hasta que se
escriba la parte más baja del registro (SCIBDL).

Si el lector observa el contenido de la parte baja del registro (SCIBDL) al salir el MCU
del estado de Reset, podrá notar que el mismo es distinto de “0”, el cual indica que el
generador de Baud Rate estaría habilitado. Sin embargo, luego del reset, el generador
de Baud Rate permanece deshabilitado hasta que por primera vez la sección de
recepción o transmisión sea habilitada.

Al igual que en el HC908, la sección de recepción o transmisión pueden ser
habilitadas en forma independiente por medio de los bits “RE” para recepción y
“TE” para la transmisión al ponerlos a “1” en el registro SCIC2.

Un ejemplo Práctico:

Supongamos tener un sistema con HC9S08 a una frecuencia de Bus de
FBUS = 4,9152Mhz y queremos obtener un Baud Rate de 19.200 BPS, por lo que
deberemos configurar el Baud Rate generator con los siguientes valores:



Por lo que el Baud Rate máximo a obtener con una FBUS = 4,9152Mhz y BR = 1
será de:

Baud Rate Máx = 307.200 Bps

Y el Baud Rate mínimo con BR = 8191 será de:

Baud Rate Min. = 37,5 Bps.

De este ejercicio intelectual, se deduce que la velocidad de comunicación máxima de
este módulo puede superar los 1 MBPS (1.000.000 BPS ¡!!), una velocidad muy
interesante para implementar redes de alta complejidad y tráfico.

Continuará.......

Nota de Redacción: El lector puede descargar este capítulo y capítulos anteriores del
curso desde la sección “Artículos” (Curso_HC9S08) en el sitio web de EduDevices
(www.edudevices.com.ar )
  • Links de descarga
http://lwp-l.com/pdf11472

Comentarios de: Capítulo 6/13 - Módulo Serial Asincrónico de Comunicación - SCI - Serial Comunication Interface - Curso sobre Microcontroladores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad