Diseño con microcontroladores PIC18F y AVR en lenguajes MikroC y MikroBasic Docente: Ing.
Roger Guachalla Narváez
[email protected]PRACTICA 10: Interface Serial SPI
1. Objetivos
Comprender el protocolo de comunicación de Inteface de Perifericos Serial (SPI)
Establecer la comunicación SPI entre un microcontrolador ATMEGA32 Maestro y 2 Esclavos
PIC18F4550
2. Fundamento Teórico
SPI: Serial Peripheral Interface
a) INTRODUCCION
SPI es un estándar establecido por Motorola que utiliza un bus de 4 líneas, sobre el cual se transmiten paquetes
de información de 8 bits. Cada una de estas líneas lleva la información entre los diferentes dispositivos
conectados al bus. Cada dispositivo conectado al bus puede actuar como transmisor y receptor al mismo tiempo,
por lo que este tipo de comunicación serial es full duplex. Dos de estas líneas trasfieren los datos (una en cada
dirección) y la tercer línea es la del reloj. Algunos dispositivos solo pueden ser transmisores y otros solo
receptores, generalmente un dispositivo que tramite datos también puede recibir.
Los dispositivos conectados al bus son definidos como maestros y esclavos. Un maestro es aquel que inicia la
transferencia de información sobre el bus y genera las señales de reloj y control. Un esclavo es un dispositivo
controlado por el maestro.
Cada esclavo es controlado sobre el bus a través de una línea selectora llamada Slave Select (SS), por lo tanto el
esclavo es activado solo cuando esta línea es seleccionada. Generalmente una línea de selección es dedicada
para cada esclavo.
En un tiempo determinado, solo podrá existir un maestro sobre el bus. Cualquier dispositivo esclavo que no esté
seleccionado, debe deshabilitarse (ponerlo en alta impedancia) a través de la línea selectora. El bus SPI emplea
un simple registro de desplazamiento para transmitir la información.
b) ESPECIFICACIONES DEL BUS
Todas las líneas del bus transmiten la información sobre una sola dirección.
La señal sobre la línea de reloj (SCLK o SCK) es generada por el maestro y sincroniza la transferencia de
datos.
La línea MOSI (Master Out Slave In) o SDO (Serial Data Output ) transporta los datos del maestro hacia el
esclavo.
La línea MISO (Master In Slave Out) o SDI (Serial Data Input) transporta los datos del esclavo hacia el
maestro.
Cada esclavo es seleccionado por un nivel lógico bajo (‘0’) a través de la línea (CS (Chip Select) o SS (Slave
Select)
Los datos sobre este bus pueden ser transmitidos a una razón de casi cero bits /segundo hasta 1 Mbits/ segundo.
Los datos son transferidos en bloques de 8 bits, en donde el bit más significativo (MSB) se transmite primero.
c) MODOS DE RELOJ
Todos las transferencia de los datos, son sincronizados por la línea de reloj de este bus. Un BIT es transferido por
cada ciclo de reloj.
Las interfaces SPI tienen 2 bits de configuración, llamados CPOL (Clock Polarity) (Polaridad de Reloj) y CPHA
(Clock Phase) (Fase de Reloj).
CPOL determina si el estado Idle (inactivo) de la línea de reloj está en bajo (CPOL=0) o si se encuentra en
un estado alto (CPOL=1).
CPHA determina en que flanco de reloj los datos son desplazados hacia dentro o hacia fuera. (Si CPHA=0
los datos sobre la línea MOSI son detectados cada flanco de bajada y los datos sobre la línea MISO son
detectados cada flanco de subida).
Cada BIT tiene 2 estados, lo cual permite 4 diferentes combinaciones, las cuales son incompatibles una con la
otra. Por lo que si dos dispositivos SPI desean comunicarse entre sí, estos deben tener el mismo la misma
Polaridad de Reloj (CPOL) y la misma Fase de Reloj (CPHA).
Existen cuatro modos de reloj definidos por el protocolo SPI, estos modos son:
• Modo A
• Modo B
• Modo C
• Modo D
Estos determinan el valor de la polaridad del reloj (CPOL = Clock Polarity) y el bit de fase del reloj (CPHA = Clock
Phase). La mayoría de los dispositivos SPI pueden soportar al menos 2 modos de los 4 antes mencionados.
3. Descripción del programa ejemplo
Interface SPI entre un Maestro ATMEGA32 y dos Esclavos PIC18F4550 y PIC16F877A
a) Se inicializan dos variables Dato0=1 y Dato1=255
b) El Maestro selecciona al Esclavo 0, se espera la pulsación del botón para Enviar el Dato0 al Esclavo 0.
c) Se incrementa Dato0 y se muestra en un puerto de salida
d) El Maestro selecciona al Esclavo 1, se espera la pulsación del botón para Enviar el Dato1 al Esclavo 1.
e) Se decrementa Dato1 y se muestra en un puerto de salida
f) Se regresa al paso b)
4. Diagrama Esquemático para el Master ATMEGA32
5. Diagrama Esquemático para el Slave0 PIC18F4550
6. Diagrama Esquemático para el Slave1 PIC16F877A
7. Código Fuente en MikroBasic Pro for AVR para el Master ATMEGA32
8. Código Fuente en MikroBasic Pro for PIC para el Slave0 PIC18F4550
9. Código Fuente en MikroBasic Pro for PIC para el Slave1 PIC16F877A
10. Procedimiento Experimental en Laboratorio
Primera Firma:
a. Codificar y Simular el circuito en Proteus
b. Armar y Comprobar el funcionamiento del circuito en protoboard
Segunda Firma:
a. Intercambiar el Master con el PIC18F4550 y el Slave0 con el ATMEGA32
b. Convertir los códigos fuente a MikroC for PIC y MikroC for AVR
c. Codificar y Simular el circuito en Proteus
d. Armar y Comprobar el funcionamiento del circuito en protoboard
11. Informe impreso de laboratorio
Cada trabajo de investigación debe incluir:
Resumen escrito a mano (de un mínimo de 4 páginas)
Fuentes de Información (direcciones web, bibliografía)
Copias impresas de la información adquirida a través de las fuentes
A. Trabajo de Investigación: Controlador Ethernet SPI ENC28J60
Diagrama en bloques
Teoría de funcionamiento
Características técnicas
Conexión al microcontrolador
Aplicaciones
B. Para el programa realizado durante la obtención de la ‘Segunda Firma’ del ‘Procedimiento experimental en
laboratorio’, incluir la siguiente información:
i. Firma de Validación del inciso asignado (En la carátula)
ii. Código Fuente MikroBasic o MikroC
iii. Esquemático en ISIS-Proteus
C. Conclusiones