Está en la página 1de 9

MÓDULO DE PUERTO SERIE SINCRÓNICO (MSSP)

El módulo de puerto serie síncrono maestro (MSSP) es una interfaz en serie, útil para
comunicarse con otros dispositivos periféricos o microcontroladores. Estos dispositivos
periféricos pueden ser EEPROMs en serie, registros de cambios, controladores de pantalla,
convertidores A / D, etc. El módulo MSSP puede operar en uno de dos modos:

 Interfaz Periférica Serial (SPI)


 Circuito inter-integrado (I2C)

- Modo maestro completo

- Modo esclavo (con llamada de dirección general) La interfaz I2C admite los siguientes
modos en hardware:

 Modo maestro
 Modo multi-master
 Modo esclavo

INTERFAZ: Dispositivo capaz de transformar las señales generadas por un aparato en


señales comprensibles por otro.
Registros de control
El módulo MSSP tiene tres registros de control asociados. Estos incluyen un registro de
estado (SSPSTAT) y dos registros de control (SSPCON1 y SSPCON2). El uso de estos
registros y sus bits de configuración individuales difieren significativamente dependiendo
de si el módulo MSSP se opera en modo SPI o I2C.

Modo SPI
El modo SPI permite que 8 bits de datos se transmitan y reciban de forma sincrónica.
Los cuatro modos de la SPI son compatibles. Para lograr la comunicación, típicamente
se usan tres pines:
• Salida de datos en serie (SDO) - RC7 / RX / DT / SDO
• Entrada de datos en serie (SDI) - RB0 / AN12 / INT0 / FLT0 / SDI / SDA
• Reloj serie (SCK) - RB1 / AN10 / INT1 / SCK / SCL Además, se puede usar un cuarto
pin cuando se encuentra en modo de funcionamiento esclavo:
• Selección de esclavo (SS): RA5 / AN4 / SS / HLVDIN / C2OUT La figura 19-1 muestra
el diagrama de bloques del módulo MSSP cuando se opera en modo SPI.
REGISTROS
El módulo MSSP tiene cuatro registros para la operación en modo SPI. Estos
son:
• Registro de control MSSP 1 (SSPCON1)
• Registro de estado de MSSP (SSPSTAT)
• Registro de búfer de recepción / transmisión en serie (SSPBUF)
• MSSP Shift Register (SSPSR): no accesible directamente
SSPCON1 y SSPSTAT son los registros de control y estado en la operación en
modo SPI. El registro SSPCON1 es legible y escribible. Los seis bits inferiores
del SSPSTAT son de solo lectura. Los dos bits superiores de la SSPSTAT son
de lectura / escritura.
SSPSR es el registro de desplazamiento que se utiliza para desplazar datos
hacia adentro o hacia afuera. SSPBUF es el registro de búfer en el que se
escriben o leen los bytes de datos.
En las operaciones de recepción, SSPSR y SSPBUF juntos crean un receptor
con doble búfer. Cuando SSPSR recibe un byte completo, se transfiere a
SSPBUF y se establece la interrupción de SSPIF.
Durante la transmisión, el SSPBUF no se duplica. Una escritura a SSPBUF
escribirá tanto a SSPBUF como a SSPSR.
SSPSTAT: MSSP STATUS REGISTER (SPI MODE)

SMP CKE D/A P S R/W UA BF

bit 7 SMP: Sample bit


SPI Master mode:
1 = Input data sampled at end of data output time
0 = Input data sampled at middle of data output time
SPI Slave mode:
SMP must be cleared when SPI is used in Slave mode.
bit 6 CKE: SPI Clock Select bit(1)
1 = Transmit occurs on transition from active to Idle clock state
0 = Transmit occurs on transition from Idle to active clock state
bit 5 D/A: Data/Address bit
Used in I2C mode only.
bit 4 P: Stop bit
Used in I2C mode only. This bit is cleared when the MSSP module is disabled, SSPEN is cleared.
bit 3 S: Start bit
Used in I2C mode only.
bit 2 R/W: Read/Write Information bit
Used in I2C mode only.
bit 1 UA: Update Address bit
Used in I2C mode only.
bit 0 BF: Buffer Full Status bit (Receive mode only)
1 = Receive complete, SSPBUF is full
0 = Receive not complete, SSPBUF is empty
Note 1: Polarity of clock state is set by the CKP bit (SSPCON1<4>).

SSPCON1: MSSP CONTROL REGISTER 1 (SPI MODE)


WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

bit 7 WCOL: Write Collision Detect bit (Transmit mode only)


1 = The SSPBUF register is written while it is still transmitting the previous word
(must be cleared in software)
0 = No collision
bit 6 SSPOV: Receive Overflow Indicator bit(1)
SPI Slave mode:
1 = A new byte is received while the SSPBUF register is still holding the previous data. In case of
overflow,
the data in SSPSR is lost. Overflow can only occur in Slave mode. The user must read the
SSPBUF, even if only transmitting data, to avoid setting overflow (must be cleared in software).
0 = No overflow
bit 5 SSPEN: Master Synchronous Serial Port Enable bit
1 = Enables serial port and configures SCK, SDO, SDI and SS as serial port pins(2)
0 = Disables serial port and configures these pins as I/O port pins (2)
bit 4 CKP: Clock Polarity Select bit
1 = Idle state for clock is a high level
0 = Idle state for clock is a low level
bit 3-0 SSPM3:SSPM0: Master Synchronous Serial Port Mode Select bits
0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin (3)
0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled (3)
0011 = SPI Master mode, clock = TMR2 output/2(3)
0010 = SPI Master mode, clock = FOSC/64(3)
0001 = SPI Master mode, clock = FOSC/16(3)
0000 = SPI Master mode, clock = FOSC/4(3)
Note 1: In Master mode, the overflow bit is not set since each new reception (and transmission) is initiated
by
writing to the SSPBUF register.
2: When enabled, these pins must be properly configured as input or output.
3: Bit combinations not specifically listed here are either reserved or implemented in I 2C™ mode only.
OPERACIÓN
Al inicializar el SPI, se deben especificar varias opciones. Esto se hace
programando los bits de control apropiados (SSPCON1 <5: 0> y SSPSTAT <7:
6>). Estos bits de control permiten que se especifique lo siguiente:
• Modo maestro (SCK es la salida del reloj)
• Modo esclavo (SCK es la entrada del reloj)
• Polaridad del reloj (estado inactivo de SCK)
• Fase de muestra de entrada de datos (medio o final del tiempo de salida de
datos)
• Clock Edge (datos de salida en el flanco ascendente / descendente de SCK)
• Velocidad de reloj (solo modo maestro)
• Modo de selección de esclavos (solo modo esclavo)
El módulo MSSP consta de un registro de cambio de transmisión / recepción
(SSPSR) y un registro de almacenamiento intermedio (SSPBUF). El SSPSR
cambia los datos dentro y fuera del dispositivo, primero MSb. El SSPBUF guarda
los datos que se escribieron en el SSPSR hasta que los datos recibidos estén
listos. Una vez que se han recibido los ocho bits de datos, ese byte se mueve al
registro SSPBUF. Luego, se establecen el bit de detección de búfer completo,
BF (SSPSTAT <0>) y el bit de indicador de interrupción, SSPIF. Este búfer doble
de los datos recibidos (SSPBUF) permite que el siguiente byte inicie la recepción
antes de leer los datos que se acaban de recibir. Cualquier escritura en el registro
SSPBUF durante la transmisión / recepción de datos se ignorará y se establecerá
el bit de detección de Colisión de Escritura, WCOL (SSPCON1 <7>). El software
del usuario debe borrar el bit WCOL para que se pueda determinar si las
siguientes escrituras en el registro SSPBUF se completaron correctamente.
Cuando el software de la aplicación espera recibir datos válidos, se debe leer el
SSPBUF antes de que el siguiente byte de datos a transferir se escriba en el
SSPBUF. El bit de búfer lleno, BF (SSPSTAT <0>), indica cuándo se ha cargado
SSPBUF con los datos recibidos (la transmisión está completa). Cuando se lee
el SSPBUF, se borra el bit BF. Estos datos pueden ser irrelevantes si el SPI es
solo un transmisor. En general, la interrupción MSSP se utiliza para determinar
cuándo se ha completado la transmisión / recepción. Si no se va a utilizar el
método de interrupción, se puede realizar una encuesta de software para
garantizar que no se produzca una colisión de escritura. El Ejemplo 19-1 muestra
la carga del SSPBUF (SSPSR) para la transmisión de datos. El SSPSR no se
puede leer ni escribir directamente y solo se puede acceder a él dirigiéndose al
registro SSPBUF. Además, el registro de estado de MSSP (SSPSTAT) indica las
diversas condiciones de estado.
HABILITANDO SPI I / O
Para habilitar el puerto serie, se debe configurar el bit de habilitación MSSP,
SSPEN (SSPCON1 <5>). Para restablecer o reconfigurar el modo SPI, borre el
bit SSPEN, reinicialice los registros SSPCON y luego configure el bit SSPEN.
Esto configura los pines SDI, SDO, SCK y SS como pines del puerto serie. Para
que los pines se comporten como la función del puerto en serie, algunos deben
tener sus bits de dirección de datos (en el registro TRIS) programados
adecuadamente de la siguiente manera:
SDI es controlado automáticamente por el módulo SPI
• SDO debe tener TRISC <7> bit borrado
• SCK (Modo maestro) debe tener TRISB <1> bit borrado
• SCK (Modo esclavo) debe tener establecido el bit TRISB <1>
• SS debe tener TRISA <5> bit set
Cualquier función de puerto serie que no se desee puede se anulado
programando los datos correspondientes La dirección (TRIS) se registra en el
valor opuesto.
CONEXION TIPICA
La figura muestra una conexión típica entre dos microcontroladores. El
controlador maestro (Procesador 1) inicia la transferencia de datos enviando la
señal SCK. Los datos se desplazan fuera de ambos registros de desplazamiento
en su borde de reloj programado y se enganchan en el borde opuesto del reloj.
Ambos procesadores deben programarse para la misma polaridad de reloj
(CKP), luego ambos controladores enviarán y recibirán datos al mismo tiempo.
Si los datos son significativos (o datos ficticios) dependen del software de la
aplicación. Esto conduce a tres escenarios para la transmisión de datos:
• Maestro envía datos - El esclavo envía datos ficticios
• Maestro envía datos - esclavo envía datos
• El maestro envía datos ficticios: el esclavo envía datos
Modo maestro
El maestro puede iniciar la transferencia de datos en cualquier momento porque
controla el SCK. El maestro determina cuándo el esclavo (Procesador 2, Figura
19-2) emitirá los datos mediante el protocolo del software.
n el modo Maestro, los datos se transmiten / reciben tan pronto como se escribe
el registro SSPBUF. Si el SPI solo va a recibir, la salida SDO podría estar
deshabilitada (programada como una entrada). El registro SSPSR continuará
cambiando en la señal presente en el pin SDI a la velocidad de reloj programada.
A medida que se recibe cada byte, se cargará en el registro SSPBUF como si se
tratara de un byte normal recibido (las interrupciones y los bits de estado se
configuran adecuadamente). Esto podría ser útil en las aplicaciones del receptor
como un modo de "Monitor de actividad de línea". La polaridad del reloj se
selecciona programando adecuadamente el bit CKP (SSPCON1 <4>). Esto,
entonces, daría formas de onda para la comunicación SPI como se muestra en
la Figura 19-3, la Figura 19-5 y la Figura 19-6, donde la MSB se transmite
primero. En el modo Maestro, la velocidad de reloj SPI (tasa de bits) es
programable por el usuario para ser uno de los siguientes:
 FOSC/4 (or TCY)
 FOSC/16 (or 4 • TCY)
 FOSC/64 (or 16 • TCY)
 Timer2 output/2

Esto permite una velocidad de datos máxima (a 48 MHz) de 2.00 Mbps.

MODO ESCLAVO

En el modo Esclavo, los datos se transmiten y reciben a medida que aparecen


los pulsos de reloj externos en SCK. Cuando se enclava el último bit, se
establece el bit de indicador de interrupción SSPIF. Mientras se encuentra en
modo Esclavo, el reloj externo es suministrado por la fuente de reloj externa en
el pin SCK. Este reloj externo debe cumplir con los tiempos máximos máximos
y mínimos especificados en las especificaciones eléctricas. Mientras está en
modo de suspensión, el esclavo puede transmitir / recibir datos. Cuando se
recibe un byte, el dispositivo puede configurarse para activarse desde el modo
de espera.

SLAVE SELECT SINCRONIZACIÓN


El pin SS permite un modo esclavo síncrono. El SPI debe estar en
modo esclavo con el control de pin SS habilitado (SSPCON1 <3: 0>
= 04h). Cuando el pin SS es bajo, la transmisión y la recepción están
habilitadas y el pin SDO está activado. Cuando el pin SS pasa a nivel
alto, el pin SDO ya no se activa, incluso si está en medio de un byte
transmitido y se convierte en una salida flotante. Las resistencias de
pull-up / pull-down externas pueden ser deseables dependiendo de
la aplicación. Cuando el módulo SPI se restablece, el contador de bits
se fuerza a "0". Esto se puede hacer forzando el pin SS a un nivel
alto o borrando el bit SSPEN. Para emular la comunicación de dos
hilos, el pin SDO se puede conectar al pin SDI. Cuando el SPI
necesita funcionar como un receptor, el pin SDO se puede configurar
como una entrada. Esto deshabilita las transmisiones desde el SDO.
El SDI siempre puede dejarse como una entrada (función SDI) ya que
no puede crear un conflicto de bus.

También podría gustarte