lunes, 29 de octubre de 2007

Comunicacion SPI - PIC 16F877

El modo de comunicacion serial SPI, permite el envio y recepcion simultanea de 8 bit. Existen cuatro modos de configuracion que dependen de la polaridad y fase del reloj (CKP y CKE), los cuatro modos son soportados por el PIC 16F877.

Para la comunicacion se requieren basicamente de tres pines:

  • SDO (Serial Data Out) - RC5
  • SDI (Serial Data In) - RC4
  • SCK (Serial Clock) - RC3
Adicionalmente para la operacion en modo de Esclavo, se usa la terminal, Slave Select (SS') - RA5.

Registros.

Los registros a usar son:

  • SSPCON1 - Control Register
  • SSPSTAT - Status Register
  • SSPBUF - Buffer Register
  • SSPSR - Shift Register (no implementado fisicamente, pero se puede direccionar)
SSPSTAT. Muestra el Status de la transmision , el bit BF nos indica cuando la transmision del dato esta completa, los bit que no estan indicados en la figura no se usan en modo SPI.


SSPCON1. Este es el registro de controla para la comunicacion SPI, nos idica si hay una colision de informacion, Overflow, habilita el SSPI, polaridad del reloj, y otras configuraciones como Master o Slave, y velocidad de transmision.


Inicio de operacion.

Para inciar la operacion SPI, varias opciones deben ser seleccionadas, tales son:

  • Master Mode - SCK es salida
  • Slave Mode - SCK es entrada
  • Clock Polarity - Polaridad del Clock
  • Sample Phase Data Input - Al inicio o final del tiempo de salida
  • Clock Edge - Salida de info al subir o bajar SCK
  • Clock Rate - Solo para Master Mode
  • Slave Select Mode - Solo para Slave Mode
La informacion a transmitir es escrita en el registro SSPBUF, y pasa al SSPSR. El SSPSR transmite el byte mandando primero al bit MSb. Si mientras esta enviando se trata de escribir otro byte a SSPBUF, se pone en uno el bit WCOL indicando una colision de informacion (limpiar por software)

En la recepcion conforme el SSPSR recibe los 8 bits, los va pasando uno a uno al SSPBUF, cuando temina de enviar el byte, se pone en uno el bit BF (Buffer Full) y la bandera de interrupcion SSPIF.

Todos los registros asociados con la transmision SPI:


Conexion tipica SPI:

En la siguiente entrada veremos un programa de ejemplo para comunicar dos PIC 16F877 por medio de SPI.

.

2 comentarios:

Anónimo dijo...

Es muy practico para entender mejor la comuncacion SPI

Anónimo dijo...

Hola.
Muy buena información. Estoy intentando comunicar un PIC16F73 con el AD420 y espero que esto me sea de gran ayuda.
Gracias

Google