You are on page 1of 7

PUERO MSSP-MODO I2C

El módulo MSSP en modo I2C implementa completamente todas las funciones maestra
y esclava (incluida la asistencia general de llamadas) y proporciona interrupciones en los
bits de Inicio y Parada en el hardware para determinar un bus libre (función
multiprofesional). El módulo MSSP implementa las especificaciones de modo estándar,
así como el direccionamiento de 7 bits y 10 bits.
Dos pines se utilizan para la transferencia de datos:
• Reloj serie (SCL) - RC3 / SCK / SCL
• Datos en serie (SDA) - RC4 / SDI / SDA
El usuario debe configurar estos pines como entradas o salidas a través de los bits TRISC
<4: 3>.

Registros de control:
El modulo MSSP tiene seis registros para el trabajo en el modo de I2C:
 SSPCON (MSSP Control Register): Todos sus bits son de lectura y escritura
 SSPCON2 (MSSP Control Register 2): Todos sus bits son de lectura y escritura
 SSPSTAT (MSSP Status Register): 6 LSB de lectura, 2 MSB de lectura/escritura.
 SSPBUF (Serial Receive/Transmit Buffer Register): Es el registro al cual son
escritos los datos o desde el cual se leen los datos.
 SSPSR (MSSP Shift Register): No es accesible directamente. Registro de
desplazamiento, desplaza los datos de entrada y de salida.
 SSPADD (MSSP Address Register): En modo I2C esclavo almacena la dirección
del dispositivo esclavo. En modo I2C maestro, los 7 bits menos significativos del
SSPADD actúan como el generador de velocidad para la carga de valores.
Figura 1.Diagrama de bloques de MSSP en modo I2C.
Funcionamiento
El reloj necesario para sincronizar el funcionamiento de ambos dispositivos, siempre es
generado por un dispositivo maestro (microcontrolador) y su frecuencia afecta la
velocidad de transmisión de datos, una vez sincronizados el maestro y el esclavo, el
maestro primero envía el bit de arranque por el pin SDA, luego la dirección de 7 bits del
dispositivo esclavo seleccionado y por último, el bit que requiera el dispositivo 0 para
escribir 1 para leer el dato enviado.
Los 8 bits se desplazan al registro SSPSR después de ocurrir una condición de arranque,
de esta forma todos los dispositivos esclavos que comparten la misma línea de
transmisión recibirán simultáneamente el primer byte, pero sólo el que contiene la
dirección coincidente recibirá el dato entero.
Después el maestro se pone en modo recepción y espera el reconocimiento del
dispositivo receptor, si el dispositivo esclavo envía un bit de reconocimiento 1, la
transmisión de datos continuará hasta que el dispositivo maestro envíe el bit de parada.
La velocidad de comunicación puede ser de hasta 100Kbps en el modo estándar o
normal, aunque puede llegar en el modo rápido hasta los 400Kbps y en el alta hasta más
de 3Mbps, esto dependerá de los dispositivos utilizados, para ello es recomendable
revisar sus hojas de datos.

Los siguientes registros son utilizados en el control de la transmision y recepcion de datos


por la interfaz I2C:

 REGISTRO SSPCON

 SSPM3:SSPM0= Programa el dispositivo como interfaz servidor o cliente.


 SSPEN= Asigna los terminales SDA y SCL al interfaz I2C o al puerto paralelo.
 WCOL=Informa si se ha producido una colision en el registro SSPBUF.
 SSPOV= Indica si se hadejado de leer un dato recibido y depositado en SSPBUF.
 CKP= Se utiliza para el contro del reloj del cliente.

 WCOL: escribir bit de detección de colisión


En modo de transmisión maestro:
1 = Se intentó una escritura en el registro SSPBUF mientras que las condiciones I2C no
eran válidas para una transmisión para iniciarse. (Debe ser borrado en el software.)
0 = Sin colisión
En modo de transmisión esclavo:
1 = El registro SSPBUF se escribe mientras aún está transmitiendo la palabra anterior.
(Debe ser borrado en software.)
0 = Sin colisión
En modo de recepción (modos maestro o esclavo):
Este es un bit de "no importa".
 SSPOV: bit de indicador de desbordamiento de recepción
En modo de recepción:
1 = Se recibe un byte mientras el registro SSPBUF todavía contiene el byte anterior.
(Debe ser
borrado en software.)
0 = Sin desbordamiento
En modo de transmisión:
Este es un bit de "no importa" en el modo de transmisión.
 SSPEN: bit de activación del puerto serie síncrono
1 = Habilita el puerto serie y configura los pines SDA y SCL como los pines del puerto
serie
0 = Desactiva el puerto serie y configura estos pines como pines del puerto de E / S
 CKP: bit de control de liberación SCK
En modo esclavo:
1 = reloj de liberación
0 = Mantiene el reloj bajo (estiramiento del reloj). (Se utiliza para garantizar el tiempo de
configuración de datos.)
En modo maestro:
No utilizado en este modo.
 SSPM3: SSPM0: bits de selección del modo de puerto serie síncrono
1111 = Modo esclavo I2C, dirección de 10 bits con las interrupciones de los bits Iniciar
y Detener habilitados
1110 = Modo esclavo I2C, dirección de 7 bits con interrupciones de bit de inicio y parada
habilitadas
1011 = Modo maestro controlado por firmware I2C (esclavo inactivo)
𝑂𝑆𝐶𝑓
1000 = Modo maestro I2C, reloj = 𝑓𝑆𝐶𝐿 = 4𝑥(𝑆𝑆𝑃𝐴𝐷𝐷+1)
0111 = Modo esclavo I2C, dirección de 10 bits
0110 = Modo esclavo I2C, dirección de 7 bits
Nota: las combinaciones de bits que no se enumeran específicamente aquí están
reservadas o implementadas en solo modo SPI.

 REGISTRO SSPSTAT
 S y P= Indican la detección de las condiciones de inicio y parada,
respectivamente.
 R/𝑊̅ = Bit que acompaña a ala dirección e indica si el cliente es receptor o
transmisor.
 UA= Se utiliza solo con direcciones de 10 bits, indica que se debe actualizar la
direccion del cliente en SSPADD.
 BF= Infica si SSPBUFF esta lleno o vacío.
 D/𝐴̅=Indica si el ultimo byte transmitido o recibido fue un dato o una direccion.
 SMP= Establece el control de la velocidad de transmisión de las señales en el
bus en el modo de alta velocidad (400KHz).

 SMP: bit de control de velocidad de giro


En modo maestro o esclavo:
1 = Control de velocidad de giro desactivado para el modo de velocidad estándar (100
kHz y 1 MHz)
0 = Control de velocidad de giro habilitado para el modo de alta velocidad (400 kHz)
 CKE: SMBus bit de selección
En modo maestro o esclavo:
1 = Habilitar entradas específicas de SMBus
0 = Desactivar entradas específicas de SMBus
 D / A: Data / Address bit
En modo maestro:
Reservado.
En modo esclavo:
1 = Indica que el último byte recibido o transmitido fue datos
0 = Indica que el último byte recibido o transmitido fue la dirección
 P: Stop bit
1 = Indica que se ha detectado un bit de parada en último lugar
0 = último bit de parada no fue detectado
Nota: Este bit se borra al restablecer y cuando se borra SSPEN.
 S: bit de inicio
1 = Indica que se ha detectado un bit de Inicio en último lugar
0 = Bit de inicio no fue detectado el último
Nota: Este bit se borra al restablecer y cuando se borra SSPEN.
 R / W#: información de bit de lectura / escritura (solo modo I2C)
En modo esclavo:
1 = Leer
0 = Escribir
En modo maestro:
1 = La transmisión está en progreso
0 = La transmisión no está en progreso
 UA: Dirección de actualización (solo en modo esclavo de 10 bits)
1 = Indica que el usuario necesita actualizar la dirección en el registro SSPADD
0 = La dirección no necesita ser actualizada
 BF: Bit de estado completo del búfer
En modo de transmisión:
1 = Recepción completa, SSPBUF está lleno
0 = Recepción no completada, SSPBUF está vacío
En modo de recepción:
1 = Transmisión de datos en curso, SSPBUF está lleno
0 = Transmisión de datos completa, SSPBUF está vacío
 REGISTRO SPCON2 (Direccion 91h)

You might also like