PDF de programación - Capítulo 7/17 - Módulo Serial Sincrónico de Comunicaciones - SPI - Curso sobre Microcontroladores

Imágen de pdf Capítulo 7/17 - Módulo Serial Sincrónico de Comunicaciones - SPI - Curso sobre Microcontroladores

Capítulo 7/17 - Módulo Serial Sincrónico de Comunicaciones - SPI - Curso sobre Microcontroladoresgráfica de visualizaciones

Publicado el 31 de Mayo del 2018
541 visualizaciones desde el 31 de Mayo del 2018
226,9 KB
7 paginas
Creado hace 11a (20/05/2012)
Curso sobre Microcontroladores
Familia HC9S08 de Freescale

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

Capítulo 7.-

Módulo Serial Sincrónico de Comunicaciones – SPI.

Serial Peripheral Interface.

Continuación ...

Continuamos con el capítulo dedicado a conocer el módulo de SPI de la familia
HC9S08 que como ya se ha visto en el artículo anterior, es muy parecido en
funcionalidad al de la familia HC908 con la diferencia que en el de la familia HC9S08
se incorporan nuevos modos de funcionamiento a “un solo hilo” que permiten mayor
flexibilidad del módulo en distintas aplicaciones especiales.

SPI Status Register (SPIS).

El registro de Estados del módulo SPI (SPIS), solo posee 3 bits o flags que nos indican
los distintos estados de la comunicación SPI. Estos bits son de solo lectura, y escribir
estos bits no tiene efecto alguno.

SPRF:

El flag SPRF (Read Buffer Full Flag) es el encargado de indicar cuando el buffer de
datos está lleno. Si SPRF = 1, indica que la transferencia de la información ha sido
completada y el dato recibido puede leerse desde el registro de datos del módulo
(SPID). La lectura del registro de datos SPID, limpia en forma automática el flag SPRF.

SPTEF:

El flag SPTEF (Transmit Buffer Empty Flag) es forzado a “1” cuando el dato a
transmitir se transfiere al shift register y comienza la transmisión de la información al
exterior. Este flag se limpia cuando se lee el registro de estados del SPI (SPIS) con
dicho flag en “1” seguido de la escritura de un dato a transmitir en el registro de datos
SPID. El intento de escritura del registro de datos SPID es ignorado si el registro de
estados del SPI no tiene el flag SPTEF = 1.
Si se habilita la generación de interrupción para transmisión por medio del bit SPTIE
(SPTIE = 1) en el registro de control 1 (SPIC1), un pedido de interrupción al CPU tiene
lugar cuando el flag SPTEF se pone en “1”.

MODF:

El flag MODF (Master Mode Fault Flag) es forzado a “1” cuando el módulo SPI se
configura en modo Master y la línea SS (negada) es forzada a nivel lógico “0”
indicando que algún otro dispositivo SPI ha sido configurado como Master. La línea SS
(negada) actuará solo como una indicación de “error de modo” (Mode fault error) si el
módulo SPI también ha sido configurado como Master (MSTR = 0, MODFEN = 0,
SSOE = 0), de otra manera el flag MODF nunca será forzado a “1”. Para limpiar el flag
MODF, se debe leer este cuando el mismo está en “1” y luego escribir en el SPIC1.

SPI Data Register (SPID).

El último registro relacionado con el módulo SPI es el SPID, el cual se encarga de la
retención de datos recibidos o a ser transmitidos.
En la lectura de este registro se obtiene el dato recibido desde el buffer de recepción del
módulo, mientras que cuando se escribe el mismo, se está escribiendo el dato a ser
transmitido por el buffer de transmisión del módulo.

En el modo Master, la escritura de este registro, inicia la transferencia en la
comunicación SPI. Se hace preciso recordar que antes de escribir datos en el buffer de
transmisión, el flag SPTEF debe estar en “1” indicando que hay un dato saliendo del
shift register de transmisión en “cola” de ser transmitido.

El dato recibido puede leerse desde el registro SPID en cualquier momento después de
que el flag SPRF es forzado a “1” y antes de que otra transferencia sea completada.
Si no puede leerse el registro SPID antes de que se complete una nueva transferencia se
producirá un error de sobre – escritura (receive overrun condition) y el dato de la nueva
transferencia se perderá.

No se deben usar instrucciones del tipo lectura – modificación – escritura en el registro
de datos del SPI, debido a que no es lo mismo este registro cuando se lo lee que cuando
se lo escribe.

Inicialización del Módulo SPI Master – Slave.

Paso

1) Selección de la Frecuencia de
reloj del SPI

Bits de Control

SPPR2:SPPR1:SPPR0 y
SPR2:SPR1:SPR0 in SPIBR

2) Configurar fase y polaridad del
reloj del SPI

CPOL y CPHA en SPIC1

Ejemplo

SPPR[2:0] = 0; SPR[2:0] = 5;
Bus freq = 20 MHz
Master baud rate = 20/(1*64) =
0.078125 MHz
Clock alto activo CPOL = 0
El primer flanco de SPSCK
ocurre en el comienzo del primer
ciclo CPHA = 1

3) Seleccionar modo Master /
Slave en el dispositivo

MSTR en SPIC1

Master SPI: MSTR = 1
Slave SPI: MSTR = 0

4) Habilitar Interrupciones si así
es elegido

SPIE y SPTIE en SPIC1
MODFEN en SPIC2

5) Seleccionar modos opcionales
si es necesario.

LSBFE en SPIC1
BIDIROE y SPC0 en SPIC2

Interrupciones no habilitadas
SPIE = 0; SPTIE = 0
MODFEN = 0

Bit más significativo primero.
LSBFE = 0
Full-duplex mode
BIDIROE = 0

6) Habilitar los SPI Master
7) Habilitar los SPI Slaves

SPE en SPIC1
SPE en SPIC1

SPE = 1
SPE =1

Como se puede observar en la tabla superior, allí se sugieren efectuar una serie de pasos
para configurar adecuadamente un módulo SPI antes de poder utilizarlo para realizar
una comunicación serial sincrónica entre dos o más dispositivos.

Formas de ondas de las señales del módulo SPI.

A continuación se pueden observar las distintas formas de ondas de las señales del
módulo SPI cuando se trabaja con distintas configuraciones de fase del reloj SPSCK
(bit CPHA) y como ello afecta al formato de la información en la comunicación SPI.

Formato de Transmisión con CPHA = 0

Por software se pueden seleccionar cualquiera de las 4 combinaciones posibles de
“fase” y “polaridad” del reloj SPI (SPSCK) utilizando los bits CPOL y CPHA.
La selección de la polaridad “activa alta” o “activa baja” no tiene efectos significativos
en el formato de la transmisión. Se comenzará examinando la transmisión con
CPHA = 0.

En el diagrama de tiempos de la figura superior, se pueden observar los 8 bits de la
comunicación. El Bit 1 comienza cuando se selecciona el dispositivo Slave (línea SS
negada = 0) y el Bit 8 finaliza con el último flanco del reloj SPSCK.
Las líneas “MSB First” y “LSB First” muestran el orden de los bits de datos, según la
configuración en LSBFE.

En la figura, se muestran las dos variaciones en la polaridad de SPSCK, pero solo una
forma de onda es válida para una transferencia específica, dependiendo del valor del bit
CPOL.

La forma de onda “SAMPLE IN” se refiere a la señal de entrada en la línea MOSI del
dispositivo Slave o a la señal de entrada en la línea MISO del dispositivo Master.
La forma de onda “MOSI” se refiere a la línea de salida MOSI desde un dispositivo
Master y la forma de onda “MISO” se refiere a la línea de salida MISO desde un
dispositivo Slave.

La forma de onda “SS OUT” se refiere a la salida de la línea SS (negada) desde un
dispositivo Master cuando está configurado con los Bits MODFEN y SSOE = 1.

La salida SS (negada) del dispositivo Master va al estado “activo bajo” al comienzo del
primer bit de datos de la transferencia. Este se vuelve al estado alto a la mitad del ciclo
de reloj SPSCK luego del 8avo. Bit de la transferencia.

La forma de onda “SS IN” se refiere a la línea de entrada SS (negada) del dispositivo
Slave.
Cuando CPHA = 0, el dispositivo Slave envía hacia el Master por la línea MISO el
primer Bit de datos como MSB o LSB dependiendo del valor del bit LSBFE.

Cuando la línea SS (negada) es forzada a “0”, el primer flanco del reloj SPSCK causa
que tanto el dispositivo Master como el Slave tomen una muestra del valor del Bit en
sus respectivas líneas de entrada MISO y MOSI.
En el segundo flanco de SPSCK, el shift register del SPI “desplaza” una posición el
valor del bit muestreado. Este ciclo continúa hasta alcanzar los 8 bits de datos de la
transferencia.
Cuando CPHA = 0, la línea de entrada SS (negada) permanece en el nivel inactivo alto
entre transferencias.

Formato de Transmisión con CPHA = 1.

Para CPHA = 1, el formato de la comunicación es similar al explicado anteriormente
con las siguientes diferencias:

Cuando CPHA=1, la salida SS (negada) del dispositivo Master va a activo bajo en la
mitad del ciclo de reloj del SPSCK antes del comienzo de la transferencia y vuelve al
estado inactivo alto en el final del 8vo. Bit de la transferencia.
La forma de onda “SS IN” se refiere a la línea de entrada SS (negada) del dispositivo
Slave.
Cuando CPHA = 1, el dispositivo Slave comienza a controlar la línea de salida MISO
cuando la línea SS (negada) va a activo bajo, pero el dato no se define hasta el primer
flanco del reloj SPSCK. El primer flanco del reloj SPSCK desplaza el valor del primer
bit del shift register a la línea MOSI del dispositivo Master y a la MISO del Slave.

El próximo flanco del reloj SPSCK causa que, tanto el dispositivo Master, como el
Slave, tomen una muestra del valor del bit en las líneas de entrada MISO y MOSI
respectivamente.
En el tercer flanco de reloj SPSCK, el shift register desplaza una posición el bit que
había sido muestreado.
Esto también desplaza el segundo valor del bit de datos del shift register a las líneas
MOSI y MISO respectivamente de los dispositivos Master y Slave. Este ciclo continúa
hasta que los 8 bits hayan sido transferidos.
Cuando CPHA = 1, la línea de entrada SS (negada) no requiere ir al nivel inactivo alto
entre transferencias.

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/pdf11476

Comentarios de: Capítulo 7/17 - Módulo Serial Sincrónico de Comunicaciones - SPI - 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