You are on page 1of 10

LABORATORIO DE MICROPROCESADORES II

PRCTICA N4
1. Objetivo: Desarrollar una aplicacin que permita comunicar dos
microcontroladores PIC18F4550 entre s mediante el protocolo serial SPI.
2. Marco terico: El puerto maestro serial sncrono (MSSP) del microcontrolador
PIC18 permite la comunicacin de este con otros dispositivos perifricos y
microcontroladores. Estos dispositivos pueden ser memorias EEPROM
seriales, registros de desplazamiento, conversores ADC o DAC, sensores
digitales de temperatura, relojes de tiempo real, etc. El MSSP requiere que
tanto el transmisor como el receptor compartan una seal de reloj comn. La
seal de reloj comn determina cuando enviar y cuando recibir los bits de
datos. Debido a esta caracterstica la seal de reloj debe permanecer
constante antes que se inicie la transferencia de de datos.
El protocolo SPI fue propuesto por Motorola para convertirse como un mtodo
estndar de interface para simplificar la comunicacin entre los
microcontroladores Motorola y sus perifricos. Debido a su facilidad de uso y
flexibilidad se ha convertido en un protocolo estndar en la industria de
microcontroladores. En un sistema que utiliza el protocolo SPI un dispositivo es
denominado maestro y otros dispositivos se denominan esclavos. El maestro
es responsable de generar la seal de reloj para sincronizar la transferencia.
Los dispositivos perifricos solo pueden ser esclavos, mientras un
microcontrolador puede ser maestro como esclavo.
Tanto el protocolo SPI como el I2C comparten los mismos pines dentro del
microcontrolador PIC18, no pudiendo estar activos ambos al mismo tiempo.
Los siguientes pines son utilizados por el modulo MSSP:
Serial data out (salida de datos serial) (SDO) - RC5/SDO.
Serial data in (entrada de datos serial) (SDI) - RC4/SDI.
Serial clock (reloj serial) (SCK) RC3/SCK/LVDIN.
En el modo de operacin esclavo se utiliza un pin adicional:
Slave select (seleccin de esclavo) (SS) RF7/SS
2.1 Modo SPI: El modo de comunicacin SPI permite transmitir y recibir
simultneamente en forma sncrona ocho bits de datos. En el modo esclavo
los cuatro pines del mdulo MSSP son utilizados. En el modo maestro no se
utiliza el pin SS. El mdulo MSSP tiene cuatro registros para operar con SPI,
estos son:
1. Registro de control MSSP 1 (SSPCON1)
2. Registro de estado MSSP (SSPSTAT)
3. Buffer serial de transmisin y recepcin (SSPBUF)
4. Registro de desplazamiento del MSSP (SSPSR)
Los registros SSPON1 y SSPSTAT son los registros de control y estado en el
modo de operacin SPI. El registro SSPCON1 es un registro que permite la
lectura y escritura. En el registro SSPSTAT los seis bits menos significativos
son solo de lectura, siendo los dos bits superiores de lectura y escritura.
El registro de desplazamiento SSPSR es utilizado para desplazar los datos a
la entrada o salida. El SSPBUF es el registro desde donde se leen y se
escriben los datos. En operaciones de recepcin el registro SSPSR y el
SSPBUF crean juntos un receptor doble. Cuando el registro SSPSR recibe un
byte completo, este es transferido al registro SSPBUF y el bit de bandera
SSPIF es puesto en 1. Durante la transmisin el registro SSPBUF no es
duplicado por el registro SSPSR. En una operacin de escritura del SSPBUF
se escribirn tanto el registro SSPBUF como el SSPSR.
Los bits del registro SSPSTAT se muestra a continuacin:













Los bits del registro SSPCON1 se muestra a continuacin:












Solo los bits 6 y 7 del registro SSPSTAT son utilizados en el modo de
comunicacin SPI. El bit 7 permite al usuario selecciona el tiempo de muestreo
de la entrada de datos. El bit 6 junto al bit CKP del registro SSPCON1 permite
al usuario seleccionar el flanco de disparo del reloj para el desplazamiento de
datos.
2.2 Operacin SPI: Un diagrama simplificado de la conexin entre un
dispositivo maestro y otro esclavo con el protocolo SPI se muestra a
continuacin:






Cuando se realiza la conexin el pin SDI puede ser conectado al pin SDO del
otro dispositivo SPI, mientras el terminal SDO del primero se conecta al pin
SDI del otro dispositivo.
La seal SCK es manejada por el dispositivo maestro del protocolo SPI. La
seal SCK controla el desplazamiento de los datos en una transferencia SPI.
Para enviar datos de un maestro SPI a un esclavo SPI, el dispositivo maestro
escribe un byte en el registro SSPBUF. Este byte ser escrito en el registro
SSPSR. Cuando un byte es escrito dentro del registro SSPBUF, se dispararan
ocho pulsos de reloj y se enviarn por el pin SCK el cual desplazar los
contenidos del registro SPSR del maestro al registro SSPSR del esclavo. Al
trmino de la operacin de desplazamiento de datos se activan la bandera
SSPIF del registro PIR1 y la bandera BF del registro SSPSTAT.
Para leer los datos el dispositivo maestro realizar la misma operacin,
escribir un byte en el registro SSPBUF para disparar ocho pulsos de reloj
para ser mandados a travs del pin SCK.
2.3 Configuracin del MSSP en el modo SPI: Para realizar la transferencia
de datos en forma correcta, los siguientes parmetros deben ser configurados:
Tasa de desplazamiento de datos:
En el modo maestro la tasa o razn de reloj del SPI (bit rate) es programable
por parte del usuario, pudiendo seleccionarse las siguientes opciones:
F
osc
/4
F
osc
/16
F
osc
/64
Timer2 output2
La razn de desplazamiento de datos es configurada programando los 4 bits
menos significativos del registro SSPCON1. Trabajando con un cristal de 40
MHz se logra 10 Mbps.
Flanco de reloj para el desplazamiento de datos:
El usuario puede elegir el flanco de reloj ascendente o descendente para
realizar la transferencia de daros. Esto se logra mediante el bit CKP de registro
SSPCON1.
















2.4 Conexin del microcontrolador en el modo SPI: El mdulo MSSP del
microcontrolador PIC18 es a menudo configurado para trabajar con
dispositivos perifricos como conversores A/D, conversores D/A, memorias
EEPROM, manejadores de pantallas LCD y otros. La figura de la pgina 3
muestra como conectar un maestro y un esclavo en el modo SPI.
Cuando se requiere la conexin de un nmero mayor de dispositivos se tiene
la siguiente conexin:






Para la conexin mostrada en la figura anterior el PIN SDO del
microcontrolador PIC18 es conectado a todos los pines MOSI (Master Out
Slave In) de los dispositivos esclavos. En tanto que el pin SDI es conectado a
todos los pines MISO (Master In Slave Out) de los esclavos. El pin SCK del
microcontrolador PIC18 es conectado a los pines SCK de todos los esclavos.
El microcontrolador PIC18 deber contar con un pin de salida de algn puerto
para seleccionar al dispositivo esclavo con el que quiere comunicarse, pin para
SS o CS (chip select). Con el uso de este pin el microcontrolador podr enviar
o recibir datos de un dispositivo esclavo sin afectar a otro esclavo. Este
mtodo requiere un pin del microcontrolador por cada dispositivo esclavo.
Cuando se requiere que el microcontrolador enve datos a todos los perifricos
conectados con el interface SPI el mtodo de conexin puede ser como el que
se muestra a continuacin:







El SPI es adecuado por su simplicidad cuando deseamos conectar un maestro
y un esclavo, sin embargo cuando se desean manejar ms dispositivos
esclavos es preferible el protocolo I
2
C.
2.5 Uso del mdulo MSSP con el protocolo SPI: Las funciones de un
compilador respecto al mdulo SPI se dividen en rutinas de inicializacin (que
afectarn a SSPCON1 y SSPSTAT) y rutinas de transferencia de datos
(bsicamente poner/sacar datos de SSPBUF). En el compilador de MikroC Pro
encontramos las siguientes funciones bsicas:
INICIALIZACION: SPI_Init_advance,
TRANSFERENCIA: SPI_read, SPI_write.

La primera inicializa y configuran el puerto SSP en modo SPI. Los parmetros
que se pasan a SPI_Init_advance describen la polaridad del reloj, muestreo de
los datos, flanco de subida o bajada del reloj para la transmisin de datos y
eleccin de si se utilizar un pin para seleccin del esclavo (SS o CS).

2.5.1 Configuracin de los modos maestro esclavo con el compilador
Mikroe
Modo maestro
CDIGO FRECUENCIA DE RELOJ LIBRERA
0000 Fosc/4
_SPI_MASTER_OSC_DIV4
0001 Fosc/16
_SPI_MASTER_OSC_DIV16
0010 Fosc/64
_SPI_MASTER_OSC_DIV64
0011 TMR2/2
_SPI_MASTER_TMR2

Modo esclavo
CDIGO MODO LIBRERA
0100 Utiliza SS (Chip Select) _SPI_SLAVE_SS_ENABLE
0101
No utiliza SS (Chip
Select)
_SPI_SLAVE_SS_DIS

2.5.2 Configuracin de los intervalos de muestreo de datos
Muestreo de los datos de entrada a la mitad del
intervalo
_SPI_LOW_2_HIGH
Muestreo de los datos de entrada al final del intervalo ,_SPI_LOW_2_HIGH

2.5.3 Configuracin del estado de seal de reloj en espera
Reloj en espera en alto
_SPI_CLK_IDLE_HIGH
Reloj en espera en bajo
_SPI_DATA_SAMPLE_END
2.5.4 Configuracin del flanco de transmisin
Datos transmitidos en
flanco de subida
_SPI_LOW_2_HIGH
Datos transmitidos en
flanco de bajada
_SPI_ HIGH _2_LOW



3. Trabajo de laboratorio:

3.1 Se tiene un circuito implementado por tres(3) microcontroladores, para la
comunicacin SINCRONA SPI Serial, de los cuales el primer micro es
denominado como MAESTRO, y este es el dispositivo PIC18F4550, y los otros
dos son denominados como ESCLAVOS con los dispositivos PIC 16F877A. El
funcionamiento consiste en la comunicacin entre 1 MAESTRO - 2
ESCLAVOS, en donde el maestro enva los datos correspondientes a cada
esclavo, por medio de una seleccin de dispositivo (SS), cada esclavo
decepciona el dato y lo muestra por el puerto B, el maestro tiene la posibilidad
de seleccionar y mandar el dato a cada dispositivo: Circuito establecido:


















PROGRAMA DEL MICROCONTROLADOR MAESTRO








PROGRAMA DEL MICROCONTROLADOR ESCLAVO











3.2 Realizar un programa sobre el circuito implementado en el ejemplo,
aadiendo un pulsador, un conmutador y 8 interruptores, donde el
funcionamiento ser el siguiente:
Los 8 interruptores se conectarn en el puerto D del PIC 18F4550, el pulsador
ira en el puerto C. pin B4 y el conmutador se mantendr en la misma posicin.
El MAESTRO (PIC 18f4550), enviara un dato proveniente de los 8
interruptores del puerto D cada vez que se introduzca un pulso por el pulsador,
el dato ira al esclavo correspondiente, esto de acuerdo con el conmutador
presente en el mismo circuito, cabe decir que si est en 1 el dato ira al
esclavo 1 y si esta en 0 el dato ira al esclavo 2.
De la misma manera que en el circuito del ejemplo los datos se mostraran en
LEDs de cada esclavo correspondiente.

You might also like