Ccs Protocolo Spi

29
GAMA ALTA DE MICROCONTROLADORES COMPILADOR C CCS SISTEMAS EMBEBIDOS DIGITALES III: 1

description

Electrónica programación pic 16f877A

Transcript of Ccs Protocolo Spi

Page 1: Ccs Protocolo Spi

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS SISTEMAS EMBEBIDOS

DIGITALES III: 1

Page 2: Ccs Protocolo Spi

PROTOCOLO SPI

Page 3: Ccs Protocolo Spi

PROTOCOLO SPI

Principio de funcionamiento

SPI se conoce como Serial Peripheral Interface.

El modo de comunicación serial SPI, permite el envió y recepción simultanea de 8 bit, en donde el bits mas significativo (MSB) se transmite primero. Esta comunicación se realiza entre diferentes microcontroladores.

Existen cuatro modos de configuración que dependen de la polaridad y fase del reloj (CKP y CKE).

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.

Page 4: Ccs Protocolo Spi

Modos del Reloj

Todos la transferencia de los datos, son sincronizados por la línea de reloj de este bus. Un BIT es transferido por cada ciclo de reloj. La mayoría de las interfaces SPI tienen 2 bits de configuración, llamados:

CPOL (Clock Polarity = Polaridad de Reloj)CPOL determina si el estado detenido de la línea de reloj esta en bajo (CPOL=0) o si se encuentra en un estado alto (CPOL=1).

CPHA (Clock Phase = Reloj de Fase). 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(maestro salida – esclavo entrada) son detectados cada flanco de bajada y los datos sobre la línea MISO(maestro entrada – esclavo salida) son detectados cada flanco de subida.

Cada BIT tiene 2 estados, lo cual permite 4 diferentes combinaciones, las cuales son incompatibles una de la otra. Por lo que si dos dispositivos SPI desean comunicarse entre si, estos deben tener el mismo la misma Polaridad de Reloj (CPOL) y la misma Fase de Reloj (CPHA).

Page 5: Ccs Protocolo Spi

Modos del Reloj

bit 6 CKE: SPI Clock Edge Select (Figure 9-2, Figure 9-3 and Figure 9-4)SPI mode:

For CKP = 01 = Data transmitted on rising edge of SCK0 = Data transmitted on falling edge of SCK

For CKP = 11 = Data transmitted on falling edge of SCK0 = Data transmitted on rising edge of SCK

SSPSTAT

bit 4 CKP: Clock Polarity Select bitIn SPI mode:1 = Idle state for clock is a high level0 = Idle state for clock is a low level

SSPCON

bajada flanco

subida flanco

bajada flanco

subida flanco

detenido

Page 6: Ccs Protocolo Spi

PROTOCOLO SPI - SSPSTAT(BANCO 1)

Bit de muestra

Escribe MOSILee MISO

Se debe misma Polaridad de Reloj (CPOL) y la misma Fase de Reloj (CPHA).

Page 7: Ccs Protocolo Spi

PROTOCOLO SPI - SSPSTAT(BANCO 1)

Bit de muestra

bajada flanco

subida flanco

Page 8: Ccs Protocolo Spi

Modos del Reloj

Page 9: Ccs Protocolo Spi

Modos del Reloj

En el esclavo

Page 10: Ccs Protocolo Spi

PROTOCOLO SPI

Principio de funcionamiento

Para la comunicación se requieren tres pines del microcontrolador:

SDO (Serial Data Out) - RC5

SDI (Serial Data In) - RC4

SCK (Serial Clock) - RC3

Adicionalmente para la operación en modo de Esclavo, se usa la terminal, Slave Select (SS') - RA5.

Cuando un microcontrolador se configura como esclavo se conecta la línea SS a negativo.

Page 11: Ccs Protocolo Spi

PROTOCOLO SPI

Registros Utilizados en el protocolo

Los registros que se utilizan para configurar y establecer la comunicación SPI son:

•SSPCON1 - Control Register

•SSPSTAT - Status Register

•SSPBUF - Buffer Register

•SSPSR - Shift Register (no implementado fisicamente, pero se puede direccionar)•

Page 12: Ccs Protocolo Spi

PROTOCOLO SPI - SSPSTAT(BANCO 1)

Muestra el Status de la transmisión , el bit BF indica cuando la transmisión del dato esta completa si este es igual a 1, en caso contrario aun esta pendiente; El bit 7 permite establecer si el micro es maestro o es esclavo; los bit que no están indicados en la figura no se usan en modo SPI.

Bit de muestra

Page 13: Ccs Protocolo Spi

SSPCON1(BANCO 0)

SSPCON1. Es el registro de control para la comunicación SPI, indica si hay una colisión de información, ademas informa si existe overflow el cual indica que se pierde. Cuenta con un bit de habilitación SSPI, el bit 4 establece la polaridad del reloj, y otras configuraciones en los bits 0 a 3, entre ellas como Master o Slave, y velocidad de transmisión.

Page 14: Ccs Protocolo Spi

PROTOCOLO SPI

•Inicio de comunicación.

Para iniciar la comunicación SPI, deben ser configuradas varias opciones, tales como:

•micro maestro: Master Mode - SCK es salida

•Micro esclavo: 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 información al subir o bajar SCK

•Clock Rate - Solo se configura en el microcontrolador Master Mode

•Slave Select Mode - Solo para Slave Mode

Page 15: Ccs Protocolo Spi

PROTOCOLO SPI

Inicio de operación.

La información 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 colisión de información (limpiar por software)

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

Page 16: Ccs Protocolo Spi

REGISTROS ASOCIADOS A LA OPEACION SPI

Page 17: Ccs Protocolo Spi

CONEXIÓN TIPICA EN SPI

Para configurar los microcontroladores es necesario recordar que estos se encuentran en el registro SSPCON1, bit del 0 al 3. Tal como se observa en la siguiente figura:

Page 18: Ccs Protocolo Spi

CONEXIÓN TIPICA EN SPI - SSPCON1

bit 3-0 SSPM3:SSPM0: Synchronous Serial Port Mode Select bits0000 = SPI Master mode, clock = FOSC/40001 = SPI Master mode, clock = FOSC/160010 = SPI Master mode, clock = FOSC/640011 = SPI Master mode, clock = TMR2 output/2

0100 = SPI Slave mode, clock = SCK pin. SS pin control enabled.0101 = SPI Slave mode, clock = SCK pin. SS pin control disabled. SS can be used as I/O pin.

0110 = I2C Slave mode, 7-bit address0111 = I2C Slave mode, 10-bit address1000 = I2C Master mode, clock = FOSC / (4 * (SSPADD+1))1011 = I2C Firmware Controlled Master mode (slave idle)1110 = I2C Firmware Controlled Master mode, 7-bit address with START and STOP bit interrupts enabled1111 = I2C Firmware Controlled Master mode, 10-bit address with START and STOP bit interrupts enabled

1001, 1010, 1100, 1101 = Reserved

Page 19: Ccs Protocolo Spi

GAMA ALTA DE MICROCONTROLADORES

PIC18F4550

SPI

DIGITALES III: 19

Page 20: Ccs Protocolo Spi

SPI EN CCS

CCS simplifica el proceso de configuración de los diferentes registros cuando se trabaja con ensamblador, para ello cuenta con una opción en el asistente en la cual se puede configurar este protocolo.

Esta opción le permite configurar fácilmente si el micro es maestro o esclavo, además de la selección del reloj, el modo de funcionamiento SPI y las opciones de configuración cuando se trabaja como esclavo

Page 21: Ccs Protocolo Spi

SPI EN CCS - WIZARD

La gráfica siguiente ilustra la pantalla desplegada por CCS:

DIGITALES III: 21

Page 22: Ccs Protocolo Spi

SPI EN CCS

En CCS cuando se elige la opción de esclavo se habilitan las casillas de verificación para determinar si la línea RA5 se establece como selector de esclavo, se deshabilita la configuración de reloj y el modo SPI.

Page 23: Ccs Protocolo Spi

SPI EN CCS

SPI MAESTROEn una aplicación maestro se deben seleccionar el modo y el divisor de frecuencia, para ello cree un nuevo proyecto con el asistente y establezca estos valores.Una vez presiona el botón OK CCs despliega un código de configuracion similar al siguiente:

Page 24: Ccs Protocolo Spi

SPI EN CCS

Una vez se establece el modo de trabajo es necesario utilizar las funciones de lectura y escritura.

spi_read( )spi_write( )spi_data_is_in( )

Page 25: Ccs Protocolo Spi

SPI EN CCS

SPI_READ( )Sintaxis: value = spi_read (data)Permite leer un dato por el pin correspondiente, siempre y cuando este listo, en caso contrario se mantiene en espera.Este comando se acompaña de spi_data_is_in( ).Ejemplo:Valor=spi_read();

SPI_WRITE( )Sintaxis: spi_write (data)

Permite enviar un dato por el pin correspondiente. El valor a enviar es un entero de 8 bits.Ejemplo:spi_write(dato);

Page 26: Ccs Protocolo Spi

SPI EN CCS

SPI_DATA_IS_IN( )Sintaxis: resultado = spi_data_is_in()

Retorna true si existe un valor que ingreso por la linea de entrada.Ejemplo:

/* ( !spi_data_is_in() && input(PIN_B2) );*/       if( spi_data_is_in() )       data = spi_read();

Page 27: Ccs Protocolo Spi

SPI

APLICACIONESENVIAR DATOS DE UN MAESTRO A UN ESCLAVO

Page 28: Ccs Protocolo Spi

SPI

Page 29: Ccs Protocolo Spi