Laboratorio de Microprocesadores II Comunicación Serial SPI
PRÁCTICA N° 6
COMUNICACIÓN
SERIAL PERIPHERAL INTERFACING - SPI
I. Objetivo:
Conocer las configuraciones en la tarjeta desarrollo UNI-DS6.
Identificar el módulo SPI en la tarjeta de desarrollo
Implementar la comunicación serial SPI.
Desarrollar aplicaciones en MikroBasic o MikroC para ATMEGA o PIC con la
comunicación SPI.
II. Marco Teórico:
El protocolo SPI (Serial Peripheral Interfacing) es un protocolo de comunicación de los más
utilizados en la actualidad, siendo más simple que el USART.
Desde que SPI ha sido aceptado como estándar de facto y está disponible en casi todas las
arquitecturas de microcontroladores incluyendo: 8051, x86, ARM, PIC, AVR, MSP, etc.
Esto supone portabilidad en el uso del protocolo SPI, esto quiere decir que podemos
conectar dispositivos de diferentes arquitecturas en forma conjunta.
Las aplicaciones más comunes del SPI son:
1. Transmisión cableada de datos, siendo el direccionamiento de los esclavos más
simple que en el protocolo USART.
2. Transmisión inalámbrica a través de Zigbee, 2,4 GHz.
3. Programación de chips AVR.
4. Comunicación con múltiples periféricos (sensores, memorias, RTC, etc.)
El protocolo SPI fue propuesto por Motorola para convertirse como un método estándar de
interface para simplificar la comunicación entre los microcontroladores Motorola y sus
periféricos. Debido a su facilidad de uso y flexibilidad se ha convertido en un protocolo
estándar 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 señal de reloj para sincronizar la transferencia. Los
dispositivos periféricos solo pueden ser esclavos, mientras un microcontrolador puede ser
maestro como esclavo.
2.1 Ventajas del SPI: El modo de comunicación SPI permite transmitir y recibir
simultáneamente en forma síncrona ocho bits de datos. En el modo esclavo los cuatro
pines del módulo MSSP son utilizados. En el modo maestro no se utiliza el pin SS. Las
ventajas de utilizar el SPI son:
1. Interface sencilla, siendo más rápida su configuración y transmisión de datos.
2. Comunicación Full Duplex
3. Menor consumo de energía comparado con I2C.
4. Altas tasas de transferencia de datos.
2.2 Operación SPI: Un diagrama simplificado de la conexión entre un dispositivo maestro
y otro esclavo con el protocolo SPI se muestra a continuación:
Docente: Ing. Arturo Marín Thames 1
Auxiliar: Univ. Mauricio NC
Laboratorio de Microprocesadores II Comunicación Serial SPI
El dispositivo maestro es el encargado de iniciar la comunicación y controlarla. Una vez
que la conexión es iniciada el maestro y uno o más esclavos puede transmitir o recibir
datos. Como es un protocolo bidireccional el maestro puede enviar datos al esclavo y los
esclavos pueden también enviar información al maestro.
2.3 Descripción de pines del SPI: Para realizar la comunicación en forma adecuada, se
utilizan cuatro pines.
1. MISO: Es un acrónimo de Master In Slave Out. MISO es el pin de entrada para el
maestro y el pin de salida para el esclavo.
2. MOSI: Es un acrónimo de Master Out Slave In. MOSI es el pin de salida para el maestro
y el pin de entrada para el esclavo.
3. SCK: Identifica la línea de reloj para la comunicación SPI.
4. SS: Establece el control Slave Select que significa selección del esclavo.
2.4 El protocolo SPI implementado en el AVR:
El protocolo SPI es uno de los más simples de configurar en los microcontroladores AVR. El
SPI implementado en los AVR maneja 8 bits y está disponible en los puertos B de los
diferentes modelos.
ATMEGA 8 ATMEGA 32
Docente: Ing. Arturo Marín Thames 2
Auxiliar: Univ. Mauricio NC
Laboratorio de Microprocesadores II Comunicación Serial SPI
2.5 Registros del protocolo SPI implementado en el AVR: Los microcontroladores AVR
utilizan tres registros para hacer que funcione el protocolo SPI.
SPCR – SPI Control Register: Este registro es el maestro y contiene los bits que inicializan
y controlan el protocol SPI.
SPSR – SPI Status Register: Se conoce como el registro de estado. Se utiliza para leer el
estado de las líneas del bus.
SPDR – SPI Data Register: El registro de datos SPI es donde se transfieren los datos, es
un registro de lectura y escritura.
2.6 Conexión del microcontrolador en el modo SPI: El módulo MSSP del
microcontrolador es a menudo configurado para trabajar con dispositivos periféricos como
conversores A/D, conversores D/A, memorias EEPROM, manejadores de pantallas LCD y
otros. La figura muestra como conectar un maestro y un esclavo en el modo SPI.
Cuando se requiere la conexión de un número mayor de dispositivos se tiene la siguiente
conexión:
III. Marco Practico:
En esta práctica se aplicara el microcontrolador ATMEGA 128 de la Tarjeta de Desarrollo
UNI-DS6. Con el siguiente código de ejemplo en microC for AVR. Programa Ejemplo.
# include <built_in.h>
sbit Chip_Select_Direction at DDB0_bit;
sbit Chip_Select at PORTB0_bit;
unsigned int measurement, lastValue;
void Init() {
DDRC = 0xFF;
lastValue = 1;
measurement = 0;
SPI1_Init_Advanced(_SPI_MASTER,
_SPI_FCY_DIV64,
_SPI_CLK_LO_LEADING);
Chip_Select_Direction= 1;
Chip_Select= 1;
}
Docente: Ing. Arturo Marín Thames 3
Auxiliar: Univ. Mauricio NC
Laboratorio de Microprocesadores II Comunicación Serial SPI
unsigned int getADC(unsigned short channel) {
unsigned int tmp;
Chip_Select =0;
SPI1_Write(0x06);
channel = channel << 6;
tmp = SPI1_Read(channel) & 0x0F;
tmp = tmp << 8;
tmp |= SPI1_Read(0);
Chip_Select =1;
return tmp;
}
void processValue(unsigned int pv) {
if (lastValue != pv) {
lastValue = pv;
pv = (pv >> 9) + 1;
pv = (1 << pv) - 1;
PORTC = Lo(pv);
}
}
void main() {
Init();
while (1) {
measurement = getADC(0);
processValue(measurement);
Delay_ms(100);
}
}
IV. Aplicación (Trabajo de laboratorio):
MATERIALES:
1. Sensor de Temperatura LM35.
2. Potenciómetro de 10 KOhm, en sus extremos cables con soldadura.
3. Fotoresistencia LDR
4. Resistencias de diferentes valores.
5. Multímetro.
6. Alicates y protoboard.
Docente: Ing. Arturo Marín Thames 4
Auxiliar: Univ. Mauricio NC
Laboratorio de Microprocesadores II Comunicación Serial SPI
Firma 1: Codificar el programa de ejemplo de la guía y comprobar su funcionamiento en
la tarjeta UNI-DS6, observar el esquema, Adicionalmente se deberá conectar un
Potenciómetro de 10 KOhm. El cual deberá enviar una señal por el conversor A/D, para
ser visualizado por un puerto del Microcontrolador de manera digital.
Firma 2: Una vez concluida la primera firma el docente o auxiliar asignara uno de los
siguientes incisos:
a) Al código ejemplo, añadir una pantalla LCD y utilizar un sensor de Temperatura LM35
u otro sensor analógico de temperatura. La tarea a realizar será leer el valor de la
temperatura por en conversor A/D y mostrarlo en el LCD, si la temperatura sube por
encima de 27⁰ Celsius, se encenderá un ventilador.
b) Al código ejemplo, añadir un LCD 16x2 y un Fotoresistencia (LDR), donde la tarea que
realizara será mostrar por el LCD, los estados de luz y su respectivo efecto en una
lámpara:
SENSOR LDR LAMPARA
Sin luz ON
Luz tenue OFF
Con luz OFF
V. INFORME (Adjuntar la hoja de firmas):
1. Descripción: Desarrollar una explicación del trabajo realizado en laboratorio,
demostrando la consolidación de conocimientos adquiridos, indicando las diferencias y
similitudes de la teoría con la práctica. (Transcrito)_20%
2. Resultados: Representar en tablas y diagramas de flujo, los programas desarrollados,
demostrando resultados obtenidos en la aplicación. (Manuscrito)_30%
3. Implementación: Presentación de esquemas, capturas de pantalla donde muestre los
circuitos implementados en laboratorio, además de código fuente que se utilizó en la
práctica debidamente comentado. (Transcrito)_30%
4. Conclusiones: Escribir en un párrafo lo aprendido o verificado en laboratorio, incluyendo
sugerencias y recomendaciones sobre algo que no sé contemple en la presente guía.
(Manuscrito)_10%
5. Bibliografía: Referenciar y anotar las fuentes de información consultadas como libros,
apuntes, páginas web. Con el siguiente estándar: (Transcrito)_10%
Nombre del autor, Nombre del documento, año de la publicación, dirección de la página
web [Fecha de consulta].
Docente: Ing. Arturo Marín Thames 5
Auxiliar: Univ. Mauricio NC