Diferencia entre revisiones de «SPI: Interfaz de Serial Periferico para el microcontrolador QE - MC9S08QE128»

De Wikitronica
Saltar a: navegación, buscar
(Estructuras de los Registros de la SPI)
(Registro de Datos de la SPI (SPIxD))
Línea 283: Línea 283:
  
 
El dato no puede ser escrito desde el buffer de transmisión de dato antes de que la bandera de buffer de transmisión SPI vacío (SPTEF) esté encendida, indicando que hay espacio en el buffer de transmisión para solicitar un nuevo byte de transmisión. El dato puede ser leído desde SPIxD en cualquier momento después de que SPRF es encendido y antes de que otra transferencia haya finalizado. Una falla de lectura de dato fuera del buffer de dato recibido antes de que una nueva transferencia finalice causa una recepción de condición de sobrecorrida y el dato desde la nueva transferencia se pierde.
 
El dato no puede ser escrito desde el buffer de transmisión de dato antes de que la bandera de buffer de transmisión SPI vacío (SPTEF) esté encendida, indicando que hay espacio en el buffer de transmisión para solicitar un nuevo byte de transmisión. El dato puede ser leído desde SPIxD en cualquier momento después de que SPRF es encendido y antes de que otra transferencia haya finalizado. Una falla de lectura de dato fuera del buffer de dato recibido antes de que una nueva transferencia finalice causa una recepción de condición de sobrecorrida y el dato desde la nueva transferencia se pierde.
 
  
 
[[Archivo:EstructuraSPIxD.jpg|400px|thumb|centro|Estructura del Registro SPIxD]]
 
[[Archivo:EstructuraSPIxD.jpg|400px|thumb|centro|Estructura del Registro SPIxD]]
 
 
 
 
  
  

Revisión del 23:37 16 nov 2012


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.


Divisor de Tasa Pre-escalar de la SPI
Divisor de Tasa de Baudios de la SPI









Registro de Estados de la SPI (SPIxS)

Este registro tiene tres bits de estado de solo lectura. Los bits 6, 3, 2, 1 y 0 no están implementados y siempre leen Zero. La escritura no tiene ningún significado o efecto.


Estructura del Registro de Estados


Bits Descripción
7

SPRF

SPI Bandera de Buffer de lectura lleno: SPRF es puesto en la complementación de una transferencia para indicar que el dato recibido puede ser leído desde el registro de datos de la SPI (SPIxD). SPRF es limpiado por una lectura SPRF mientras este es colocado, entonces lee el registro de datos de la SPI.

0 No hay dato habilitado en el buffer de dato recibido.

1 Hay dato habilitado en el buffer de dato recibido.

5

SPTEF

SPI Bandera de Buffer de Transmisión vacío: Este bit es encendido cuando hay un espacio en el bus de transmisión de datos. Es limpiado por la lectura SPIxS con SPTEF encendido, seguido por la escritura de un valor de dato en el buffer de trasmisión en SPIxD. SPIxS debe ser leído con SPTEF = 1 antes de la escritura de dato de SPIxD o dicha escritura SPIxD será ignorada. SPTEF genera una solicitud de interrupción de CPU SPTEF si el bit SPTIE en SPIxC1 también esta encendido. SPTEF es automáticamente encendido cuando un byte de dato transfiere desde el buffer de transmisión hasta el registro de corrimiento. Para un idle SPI (sin dato en el buffer de transmisión o el registro de corrimiento y sin ninguna transferencia en proceso), el dato escrito de SPIxD es transferido del corredor inmediatamente, así, SPTEF es encendido entre dos ciclos de bus permitiendo a un segundo valor de dato de 8-bits ser solicitado dentro del buffer de transmisión. Después de completar la transferencia del valor en el registro de corrimiento, el valor solicitado desde el buffer de transmisión será movido automáticamente al corredor y SPTEF será encendido para indicar que hay un espacio para nuevos datos en el buffer de transmisión. Si no hay un nuevo dato esperando en el buffer de transmisión, SPTEF simplemente permanece encendido y no hay movimientos de datos desde el buffer hacia el corredor.

0 Buffer de Transmisión SPI no vacío.

1 Buffer de Transmisión SPI vacío.

4

MODF

Bandera de Fallo en Modo Maestro: MODF es encendido si la SPI es configurada como un maestro y la entrada Slave Select va bajo, indicando que algún otro dispositivo SPI es también como un maestro. El pin (SS) se comporta como una entrada de error en modo de fallo solo cuando MSTR = 1, MODFEN = 1 y SSOE = 0; Por otra parte, MODF nunca será encendido. MODF es limpiado leyendo MODF mientras este es 1, entonces escribe del registro SPI de control 1 (SPIxC1).

0 No hay error en modo de fallo.

1 Error en modo de fallo detectado.


Registro de Datos de la SPI (SPIxD)

Las lecturas de este registro retornan el dato leído desde el buffer de dato recibido. Escrituras de este registro escriben el dato en el buffer de transmisión de dato. Cuando la SPI es configurada como un maestro, escribir datos del buffer de transmisión de datos inicia una transferencia SPI.

El dato no puede ser escrito desde el buffer de transmisión de dato antes de que la bandera de buffer de transmisión SPI vacío (SPTEF) esté encendida, indicando que hay espacio en el buffer de transmisión para solicitar un nuevo byte de transmisión. El dato puede ser leído desde SPIxD en cualquier momento después de que SPRF es encendido y antes de que otra transferencia haya finalizado. Una falla de lectura de dato fuera del buffer de dato recibido antes de que una nueva transferencia finalice causa una recepción de condición de sobrecorrida y el dato desde la nueva transferencia se pierde.

Estructura del Registro SPIxD



Referencias Consultadas