Manejo y programación en el modo SPI

Một phần của tài liệu Microcontroladores PIC diseno practico de aplicaciones segunda parte PIC16F87X PIC18FXXX 2 ed jose angulo (Trang 185 - 188)

Capítulo 8. MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA

8.3. Manejo y programación en el modo SPI

En la Figura 8.3 se muestra la estructura del módulo MSSP cuando funciona en modo SPI.

Figura 8.3. Estructura interna del módulo MSSP cuando trabaja en modo SPI.

RELOJ DE DESPLAZAMIENTO

MPX SS#

BIT DE DIRECCIÓN DE DATO SDI

MPX SELECCIÓN

DE FLANCO

SSPM3-0 SMP:CKE

PREDIVISOR 4, 16, 64

SCK TOSC

SSPBUF

DATO EN SSPSR A TX/RX

SALIDA TMR2 / 2 SELECCIÓN

DE RELOJ

SELECCIÓN DE FLANCO

BIT 0 SSPSR

PERMISO DE SS#

SDO

BUS INTERNO DE DATOS 8

ESCRITURA LECTURA

8 8

4 8 8

2

2 8

8

Al comenzar el funcionamiento en el modo SPI, es necesario establecer las condiciones de tra- bajo programando adecuadamente los bits <5-0> del registro SSPCON y los <7:6> del registro SSPSTAT, para determinar las siguientes especificaciones:

En la Figura 8.4 se presenta la distribución y nomenclatura de los bits del registro SSPSTAT, que ocupa la dirección 94h y es uno de los que seleccionan las características mencionadas.

Se describe la misión de tres de los bits del registro SSPSTAT que participan en la configuración del modo SPI. También estos bits participan en la configuración del modo I2C junto a los restantes, que se estudiarán al presentar dicho protocolo.

En la Figura 8.5 se presenta la distribución de los bits del registro SSPCON, que está ubicado en la dirección 14h y sirve para programar el módulo MSSP en los dos modos que puede trabajar.

SMP

El bit 7 del registro SSPSTAT determina el momento del muestreado del bit de entrada.

En modo maestro SPI, si SMP = 1 el dato de entrada se muestrea al final del impulso de reloj y si vale 0 en la mitad del mismo.

En modo esclavo el bit SMP no tiene cometido y debe valer 0.

CKE

Con este bit se selecciona el flanco de reloj activo.

Si el bit CKP = 0 en el registro SSPCON significa que el estado de inactividad en la seủal de re- loj es el bajo y entonces si CKE = 1 el dato se transmite en el flanco ascendente de SCK y si CKE

= 0 en el flanco descendente.

Si CKP = 1, lo que supone que es el estado alto el de inactividad en la seủal de reloj, cuando CKE = 1 el dato se transmite en el flanco descendente de SCK y si CKE = 0 en el ascendente.

BF

Indica cuando vale 1 que el registro SSPBUF está lleno.

1.a Si trabaja en modo maestro, SCK debe ser salida.

2.a Si trabaja en modo esclavo, la línea SCK del reloj debe ser entrada.

3.a Hay que determinar la polaridad de la seủal de reloj, es decir, su estado de inactividad.

4.a Se debe precisar el momento en el que se toma la muestra del dato de entrada, que puede ser en la mitad o al final del impulso.

5.a Flanco de reloj activo, que puede ser el ascendente o descendente de SCK.

6.a Rango de trabajo del reloj en el modo maestro.

7.a Selección del modo esclavo, en caso de trabajar de esta forma.

Figura 8.4. Estructura interna del registro SSPSTAT para la configuración del modo SPI e I2C.

SMP CKE D/A# P S R/W# UA BF

REGISTRO SSPSTAT

7 0

SSPM3-SSPM0

Con los 4 bits de menos peso del registro SSPCON se establece el modo de trabajo del módu- lo MSSP.

SSPM3-0 MODO DE TRABAJO

0000 Modo maestro SPI, con reloj a FOSC/ 4 0001 Modo maestro SPI, con reloj a FOSC/ 16 0010 Modo maestro SPI, con reloj a FOSC/ 64

0011 Modo maestro SPI, con reloj igual a la salida del TMR2 / 2

0100 Modo esclavo SPI, con reloj igual a la patita SCK y SS# a nivel bajo

0101 Modo esclavo SPI, con reloj igual a la patita SCK, SS# no activo y libre para usar- se como E/S

0110 Modo esclavo I2C, con dirección de 7 bits 0111 Modo esclavo I2C, con dirección de 10 bits

1000 Modo I2C maestro con reloj = FOSC / (4• (SSPAD + 1)) 1011 Modo I2C maestro controlado por firmware

1110 Modo I2C maestro controlado por: firmware, con bits inicio y stop, activada in- terrupción, dirección de 7 bits

1111 Modo I2C maestro controlado por firmware, con bits inicio y stop, activada inte- rrupción, dirección de 10 bits

CKP

Determina la polaridad o el estado de inactividad del reloj.

En el modo SPI si CKP = 1 dicho estado de inactividad es el alto y si CKP = 0 es el bajo.

SSPEN

Bit de activación del módulo MSSP.

Si SSPEN = 1 queda activada la puerta serie en modo SPI y las patitas SCK, SDO, SDI y SS# re- alizan la labor correspondiente. Si SSPEN = 0 no funciona el modo SPI y las patitas anteriores se utilizan para E/S digitales.

SSPOV

Al ponerse a 1 indica ôsobrepasamientoằ, lo que significa que la informaciún recibida en SSPSR y que ha pasado al SSPBUF, cuando llega otro byte al SSPSR aún no se ha leído y se macha- cará la información existente en el SSPBUF.

WCOL

Cuando este bit se pone a 1 indica que se ha producido una ôcolisiúnằ. El dato a transmitir que se ha almacenado en el SSPBUF se traspasa al SSPSR para irlo sacando en serie. Cuando el SSP- BUF carga en el SSPSR un byte sin haber dado tiempo a salir al anterior, se produce una colisión.

Figura 8.5. Estructura interna del registro SSPCON.

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

REGISTRO SSPCON

7 0

El registro SSPSR no es direccionable directamente y en los programas hay que acceder a él a través del SSPBUF, tal como se expone en el siguiente programa de transferencia de información.

Một phần của tài liệu Microcontroladores PIC diseno practico de aplicaciones segunda parte PIC16F87X PIC18FXXX 2 ed jose angulo (Trang 185 - 188)

Tải bản đầy đủ (PDF)

(394 trang)