SPI: Interfaz de Serial Periferico para el microcontrolador QE - MC9S08QE128

De Wikitronica
Revisión del 23:05 16 nov 2012 de Luis E Santana P (Discusión | contribuciones) (Estructuras de los Registros de la SPI)

Saltar a: navegación, buscar

Archivo:EsquemaMC9S08QE128conSPI.jpg
Esquema del MC9S08QE128 con la SPI resaltada

Introducción

La Interfaz de Serial Periférico es un Bus estándar de comunicaciones, cuya función principal es la transferencia de datos entre circuitos integrados en equipos electrónicos. LA MCU DEMOQE128 cuenta con un bus SPI para realizar operaciones entre módulos periféricos, lo cual le permite al usuario controlar casi cualquier dispositivo electrónico digital que acepte un flujo de bits regulado por un reloj.


Elementos Fundamentales que componen la SPI

RELOJ SERIAL DE LA SPI (SPSCK): Cuando la SPI es habilitada como un esclavo, este pin es la entrada del clock serial. Cuando la SPI es habilitada como maestro, este pin es la salida del clock serial.

SALIDA DE DATO MAESTRO, ENTRADA DE DATO ESCLAVO (MOSI): Cuando la SPI es habilitada como maestro y el pin de control Zero de la misma(SPC0) es 0 (en modo no bidireccional), este pin es la salida de dato serial. Cuando la SPI es habilitada como esclavo y SPC0 = 0, este pin es la entrada de dato serial. Si SPC0 = 1 para seleccionar el modo bidireccional de cable simple, y el modo maestro está seleccionado, este pin se convierte en el pin de entrada – salida de dato bidireccional (MOMI), además, el bit de habilitación de salida de modo bidireccional determina si el pin se comporta como una entrada (BIDIROE = 0) o como una salida (BIDIROE = 1). Si SPC0 = 1 y el modo esclavo esta seleccionado, este pin no es usado por la SPI y vuelve a ser un pin de puerto de entrada – salida uso general.

ENTRADA DE DATO MAESTRO, SALIDA DE DATO ESCLAVO (MISO): Cuando la SPI es habilitada como maestro y el pin de control Zero de la misma(SPC0) es 0 (en modo no bidireccional), este pin es la entrada de dato serial. Cuando la SPI es habilitada como esclavo y SPC0 = 0, este pin es la salida de dato serial. Si SPC0 = 1 para seleccionar el modo bidireccional de cable simple, y el modo esclavo está seleccionado, este pin se convierte en el pin de entrada – salida de dato bidireccional (SISO), además, el bit de habilitación de salida de modo bidireccional determina si el pin se comporta como una entrada (BIDIROE = 0) o como una salida (BIDIROE = 1). Si SPC0 = 1 y el modo maestro esta seleccionado, este pin no es usado por la SPI y vuelve a ser un pin de puerto de entrada – salida de uso general.

SLAVE SELECT ((SS)): Cuando la SPI esta habilitada como esclavo, este pin es la selección de entrada “low-true” del esclavo. Cuando la SPI esta habilitada como maestro y el habilitador del modo de fallo esta apagado (MODFEN = 0), este pin no es utilizado por la SPI y vuelve a ser un pin de puerto entrada – salida de uso general. Cuando la SPI esta habilitada como maestro y el MODFEN = 1, el bit habilitador de selección de salida del esclavo determina si ese pin se comporta como la entrada del modo de fallo (SSOE = 0) o como la salida de Slave Select (SSOE = 1).

TASA DE BAUDIOS DEL SPI: En la imagen inferior puede apreciarse que, la fuente del reloj para la Tasa de Baudios del SPI es el bus Clock. Los tres bits de calibración (SPPR2:SPPR1:SPPR0) seleccionan un divisor de calibración de 1, 2, 3, 4, 5, 6, 7 u 8. Los tres bits de selección de tasa (SPR2:SPR1:SPR0) dividen la salida de la etapa de calibración por 2, 4, 8, 16, 32, 64, 128 ó 256 para conseguir el Clock de tasa de bits interno de la SPI en modo maestro.

Tasa de Baudios de la SPI

Descripción de Señal Externa: La SPI opcionalmente comparte cuatro pines de puerto. La función de estos pines depende de los ajustes de los bits de control de la SPI. Cuando la SPI es inhabilitada (SPE = 0) estos cuatro pines se convierten en puertos de entrada – salida de uso general y no son controlados por la SPI.


El Módulo SPI

Diagrama del Módulo de la SPI

El elemento central de la SPI es el registro de desplazamiento SPI. Los datos se escriben en el transmisor de doble búfer (escrito en SPIxD) y se transfieren al registro de desplazamiento SPI al inicio de una transferencia de datos. Después de desplazar en un byte el dato, este es transferido dentro del receptor de doble búfer donde puede ser leído (leído desde SPIxD).

Cuando el SPI es configurado como maestro, el reloj de salida es dirigido por el pin SPSCK, el shifter output es dirigido por MOSI, y el shifter input desde el pin MISO. Cuando el SPI es configurado como esclavo, el pin SPSCK es dirigido por la entrada de reloj del SPI, el shifter output es dirigido por MISO y el shifter input desde el pin MOSI. En sistemas SPI externos, simplemente se conectan todos los pines SPSCK con los otros, todos los pines MISO juntos y todos los pines MOSI juntos. Los dispositivos periféricos a menudo utilizan nombres ligeramente diferentes para estos pines. En la figura se muestra el diagrama de bloques del módulo SPI.






Características de la Interfaz de Serial Periférico

Entre las características del módulo SPI se incluye:

• Modo de operación maestro/esclavo.

• Opciones bidireccionales de un solo cable o cable doble.

• Rango de bits de transmisión programable.

• Doble búfer para transmisión y recepción.

• Opciones de fase y polaridad del reloj serial.

• Selección de salida esclavo.

• Cambio seleccionable entre bit más significativo primero y bit menos significativo primero.

Esquema de conexión de un Sistema SPI en arreglo Maestro - Esclavo

Pueden conectarse varias unidades de microcontrol para crear sistemas de transferencia de datos. Por ejemplo, en el esquema se muestran los módulo SPI de dos unidades de microcontrol conectados en un arreglo maestro – esclavo. El dispositivo maestro inicializa todas las transferencias de dato SPI. Durante una transferencia, el maestro pasa el dato de salida, en el pin MOSI, al esclavo, mientras que, simultáneamente, recibe el dato de entrada (en el pin MISO) del esclavo. La transferencia cambia eficazmente los datos en los registros de desplazamiento SPI de los dos sistemas. La señal SPSCK es un reloj de salida desde el maestro y una entrada al esclavo. El dispositivo esclavo debe ser seleccionado por un bajo nivel en la entrada “slave select” (pin SS). En este sistema, el dispositivo maestro ha configurado su pin SS como una salida “slave select” opcional.

Los usos más comunes de sistemas SPI incluyen conexiones simples de los registros de desplazamiento para sumar puertos de entradas o salidas, o conectar pequeños dispositivos periféricos como conversores A/D o D/A serial. A pesar de que en la figura dos se muestra un sistema donde el dato es intercambiado entre dos unidades de microcontrol, muchos sistemas prácticos solo requieren conexiones simples donde el dato es transferido unidireccionalmente desde la unidad de microcontrol maestra al esclavo, o desde el esclavo a la unidad de microcontrol maestra.


Estructuras de los Registros de la SPI

La SPI tiene cinco registros de 8 – bits para selección de opciones SPI, control de velocidad de transmisión, reporte de estado SPI y para transmitir/recibir datos. A continuación se presenta una descripción de los registros y bits de control sólo por sus nombres.


Registro de Control 1 de la SPI (SPIxC1)

Este registro de lectura/escritura incluye la habilitación de control de la SPI y opciones de configuración.

Estructura del Registro SPIxC1


Bits Descripción
7

SPIE

SPI Habilitador de Interrupciones (Para SPRF y MODF): Este es el habilitador de interrupciones para recibir SPI memoria llena (SPRF) y eventos de modo de fallo (MODF).

0 Interrupciones desde SPRF y MODF inhabilitadas (utilizar sondeo)

1 Cuando SPRF o MODF es 1, solicitar una interrupción de Hardware.

6

SPE

SPI Habilitador de Sistema: La desactivación del SPI detiene cualquier transferencia que esté en curso, borra los buffers de datos e inicializa maquinas de estado internas. SPRF se borra y SPTEF se establece para indicar si el buffer de transmisión de datos está vacío.

0 SPI Sistema inactivo.

1 SPI Sistema habilitado.

5

SPTIE

SPI Habilitador de Transmisión de Interrupciones: Este es el bit habilitador de interrupción para el buffer de transmisión SPI vacío (SPTEF).

0 Interrupción desde SPTEF inhibido (use sondeo).

1 Cuando SPTEF es 1, solicita interrupción de hardware.

4

MSTR

Selección de modo Maestro/Esclavo:

0 Módulo SPI configurado como un dispositivo SPI Esclavo.

1 Módulo SPI configurado como un dispositivo SPI Maestro.

3

CPOL

Polaridad del Reloj: Este bit coloca efectivamente un inversor en serie con la señal de reloj desde un SPI maestro o hacia un SPI esclavo.

0 Reloj SPI Alto-activo.

1 Reloj SPI Bajo-activo.

2

CPHA

Fase del Reloj: Este bit selecciona uno de dos formatos de reloj para diferentes tipos de dispositivos periféricos sincronizados.

0 Primer borde en SPSCK se produce en la mitad del primer ciclo de una transferencia de datos de 8 ciclos.

1 Primer borde en SPSCK se produce al inicio del primer ciclo de una transferencia de datos de 8 ciclos.

1

SSOE

Habilitador de salida de Slave Select: Este bit se utiliza en combinación con el bit habilitador de modo de fallo (MODFEN) en SPCR2 y el bit de control te maestro/esclavo (MSTR) para determinar la función del pin (SS) como se muestra en la tabla anexa.
0

LSBFE

Bit menos significativo primero:

0 Transferencia de datos serial SPI inicia con el bit mas significativo.

1 Transferencia de datos serial SPI inicia con el bit menos significativo.


TABLA 1: Función del Pin SS.

FunciondelPinSS.jpg




NOTA: Asegúrese de que la SPI no debe desactivarse (SPE = 0) al mismo tiempo como un cambio de bit para el bit CPHA.


Registro de Control 2 de la SPI (SPIxC2)

Este registro de lectura/escritura incluye la habilitación de control de la SPI y opciones de configuración.

Estructura del Registro SPIxC2


Bits Descripción
4

MODFEN

Habilitador de Función de Fallo en Modo Maestro: cuando el SPI es configurado para modo esclavo, este bit no tiene significado o efecto. (El pin (SS) es la entrada Slave Select) En modo maestro, este bit determina cómo es utilizado el pin (SS). (Tabla 2)

0 Función de modo de fallo deshabilitada, Pin (SS) maestro vuelve a ser un pin de puerto entrada/salida general no controlado por SPI.

1 Función de modo de fallo habilitada, Pin (SS) maestro se comporta como entrada de modo de fallo o salida de Slave Select.

3

BIDIROE

Habilitador de Salida en Modo Bidireccional: Cuando el modo bidireccional está habilitado por el pin de control de la SPI (SPC0 = 1), BIDIROE determina si el driver de dato de salida SPI esta habilitado para el pin de entrada/salida bidireccional simple. Dependiendo de si la SPI esta configurada como maestro o esclavo, este usa el pin MOSI (MOMI) o MISO (SISO), respectivamente, como el pin de entrada/salida de datos SPI simple. Cuando SPC0 = 0, BIDIROE no tiene significado o efecto.

0 Driver de Salida deshabilitado, así, el pin entrada/salida de datos SPI se comporta como una entrada.

1 Pin entrada/salida SPI habilitado como una salida.

1

SPISWAI

SPI Parada en Modo de Espera:

0 SPI Relojes continúan operando en modo de espera.

1 SPI Relojes se detienen cuando la MCU entra en modo de espera.

0

SPC0

SPI Pin de Control 0: el bit SPC0 elige el modo bidireccional de cable simple. Si MSTR = 0 (modo esclavo), la SPI usa el pin MISO (SISO) para la transferencia de datos SPI bidireccional. Si MSTR = 1 (modo maestro), La SPI usa el pin MOSI (MOMI) para la transferencia de datos SPI bidireccional. Cuando SPC0 = 1, BIDIROE es utilizado para habilitar o deshabilitar el driver de salida para el pin entrada/salida SPI bidireccional simple.

0 SPI usa pines separados para el dato de entrada y el dato de salida.

1 SPI configurado para operaciones bidireccionales de cable simple.


Registro de Tasa de Baudios de la SPI (SPIxBR)

Este registro se utiliza para colocar un pre-escalar y un divisor de tasa de bit para un SPI maestro. Este registro puede ser leído o escrito en cualquier momento.

Estructura del Registro SPIxBR


Bits Descripción
6:4

SPPR [2:0]

SPI Divisor de pre-escala de Tasa de Baudios: Este campo de tres bits selecciona uno de ocho divisores para el pre-escalar de Tasa de Baudios SPI. La entrada de este pre-escalar es el reloj de Tasa de bus (BUSCLK). La salida de este pre-escalar dirige la entrada del divisor de Tasa de Baudios SPI.
2:0

SPR [2:0]

SPI Divisor de Tasa de Baudios: Este campo de tres bits selecciona uno de ocho divisores para el divisor de velocidad de transferencia SPI. La entrada a este divisor viene del pre-escalar de Tasa de Baudios SPI. La salida de este divisor es el bit de Tasa de reloj SPI para modo maestro.



Referencias Consultadas