3. Logro de aprendizaje Temario
● Aprender sobre I2C.
● Registros I2C con el
PIC18F4550.
● Programar del I2C.
4. Logro de aprendizaje Temario
1. I2C.
2. Hardware.
3. Transferencia de Datos.
4. Registro I2C.
5. Programa I2C.
● Aprender sobre I2C.
● Registros I2C con el
PIC18F4550.
● Programar del I2C.
12. - I2C = Circuitos inter-integrados.
- Bus serie, formado por 2 pines.
- Usa Hardware muy simple.
- Protocolo de Comunicación (Philips)
Comunicación serial síncrona
21. I2C
MAESTRO ESCLAVO
● Iniciar y termina la transferencia
de información.
● Controla la señal del Reloj.
● Es el circuito o micro
direccionado por el maestro.
22. I2C
MAESTRO ESCLAVO
● Iniciar y termina la transferencia
de información.
● Controla la señal del Reloj.
● Es el circuito o micro
direccionado por el maestro.
● Cada dispositivo conectado al bus I2C es reconocido por una
única dirección.
● El I2C suele llevar 2 a 3 pines. PIC18F4550 = 2 pines.
34. I2C
NOTA:
● Si no hubiera resistencias PULL UP, las líneas tendrían estados
desconocidos.
● Si un Uc envía los datos y coloca a 1 la línea y otro Uc envía datos colocando
la línea a 0. Podría ocurrir un daño para ambos microcontroladores.
● El modo PULL UP - DRIVE LOW controla cuando un dispositivo tiene el
control del bus.
● Si un Uc encuentra las líneas en DRIVE LOW significa que el bus está
ocupado.
41. LA CONDICIÓN DE START
La línea SDA debe estar en flanco de bajada
mientras el SCL permanece en nivel alto. Marca
el inicio de la transmisión.
SDA
SCL
42. LA CONDICIÓN DE STOP
La línea SDA debe estar en flanco de subida
mientras el SCL permanece en nivel alto. Marca
el fin de la transmisión.
SDA
SCL
43. BIT DE DATOS
Los bits de datos son 8 (1 Byte), se transfiere
primero el MSB
START MSB 6 5 4 3 2 1 LSB STOP
DATOSSDA
SCL
44. BIT DE DATOS
START MSB 6 5 4 3 2 1 LSB STOP
DATOSSDA
SCL
x
Los bits de datos son 8 (1 Byte), se transfiere
primero el MSB
45. BIT DE RECONOCIMIENTO
(ACK)
Una vez que el Master ha enviado los 8 bits de datos,
el esclavo debe mandar un bit de reconocimiento
(ACK)
START MSB 6 5 4 3 2 1 LSB ACK STOP
DATOS
47. BIT DE RECONOCIMIENTO
(ACK)
START MSB 6 5 4 3 2 1 LSB ACK STOP
PONE LA LÍNEA
SDA EN NIVEL
BAJO
EL BIT DE
RECONOCIMIENTO
ES OBLIGATORIO
48. BIT DE RECONOCIMIENTO
(ACK)
START MSB 6 5 4 3 2 1 LSB ACK STOP
PONE LA LÍNEA
SDA EN NIVEL
BAJO
EL BIT DE
RECONOCIMIENTO
ES OBLIGATORIO
Maestro genera el pulso del reloj y el Esclavo
coloca a nivel bajo la línea SDA.
49. BIT DE RECONOCIMIENTO
(ACK)
START MSB 6 5 4 3 2 1 LSB ACK STOP
MAESTRO ESCLAVO
EL BIT DE
RECONOCIMIENTO LO
ENVÍA EL ESCLAVO EN EL
9 CICLO DEL CLOCK
53. I2C
START DIRECCIÓN
LECTURA/
ESCRITURA
ACK DATOS STOP
● Cada esclavo tendrá su dirección de 7 o 10
bits.
● El maestro envía los 7 bits de dirección
después de la condición del START.
● Si la dirección es de 10 bits los 3 bits
restantes se enviarán en la siguiente trama.
START DIR0 DIR1 DIR2 DIR3 DIR4 DIR5 DIR6
54. I2C
START DIRECCIÓN
LECTURA/
ESCRITURA
ACK DATOS STOP
● 1 Bit se envía junto a la dirección, indicando el
modo de acceso si es lectura o escritura.
● R/W = 1 -> El esclavo le enviará la información.
● R/W = 0 -> El esclavo recibirá la información.
START DIR0 DIR1 DIR2 DIR3 DIR4 DIR5 DIR6 R/W
57. NACK
● Si el bit ACK se queda en 1 LÓGICO en el noveno ciclo del reloj se produce un
NACK (No reconocimiento).
● Ante esta condición el maestro puede elegir terminar la condición con un
STOP o generar un reinicio RESTART. Iniciando nuevamente la comunicación.
● El bit NACK también puede ser usado por el esclavo para indicar fin de una
transferencia.
START DIR0 DIR1 DIR2 DIR3 DIR4 DIR5 DIR6 R/W ACK 8 BITS DATOS NACK
59. I2C
NOTA:
El maestro puede comunicarse con un esclavo y luego pasar a
otro esclavo, generando sólo un START y enviando la dirección
con el R/W del otro esclavo.
START DIR. ESCLAVO R/W ACK
8 BITS
DATOS
ACK START DIR. ESCLAVO R/W 8 BITS DATOS ACK STOP
62. I2C
1 REGISTRO DE ESTADO SSPSTAT
2 REGISTRO DE CONTROL SSPCON1
3 REGISTRO DE CONTROL SSPCON2
4 REGISTRO BUFFER SSPBUF
5 REGISTRO DESPLAZAMIENTO
SSPSR
6 REGISTRO DIRECCIÓN SSPADD
REGISTRO DIRECCIÓN SSPADD
63. I2C
1 REGISTRO DE ESTADO SSPSTAT
REGISTRO DIRECCIÓN SSPADD
❏ Configurar el tipo de velocidad.
❏ Verificar el estado de ciertas condiciones de la comunicación:
STOP, START, R/W, etc.
64. EL PROTOCOLO I2C, tiene 3 tipos de velocidades de reloj:
➔ 100 Kbps (modo estándar).
➔ 400 Kbps (modo rápido).
➔ 3.4 Mnps (modo de alta velocidad).
65. I2C
1 REGISTRO DE ESTADO SSPSTAT
REGISTRO DIRECCIÓN SSPADD
➔ Si se coloca en 1 lógico, se selecciona el modo velocidad
estándar.
➔ Si se coloca en 0 lógico, se selecciona el modo velocidad
estándar.
66. CKE = 1 -> Configura el bus para operar en modo I2C
D/A -> Indica que la última trama recibida es dato o dirección.
P, S -> Indicadores de Stop o Start.
R/W -> Maestro: Permite conocer si se está llevando a cabo la
transferencia.
Esclavo: Si recibirá o transmitirá datos.
UA -> Indica que el esclavo es de 10 bits y debe actualizarse la
dirección SSPADD.
BF -> Permite saber el registro SSPBUF está lleno o vacío.
67. I2C
2 REGISTRO DE CONTROL SSPCON1
REGISTRO DIRECCIÓN SSPADD
❏ Configurar Maestro o Esclavo.
❏ Habilita los pines SDA y SCL.
68. WCOL -> Indica una posible colisión en el bus.
SSPOV -> Indica que se ha enviado un nuevo byte pero la
información no ha sido leída.
SSPEN -> Habilita el módulo I2C y SDA y SCL.
CKP -> Permite realizar el estrechamiento del reloj, cuando el
esclavo necesita más tiempo para procesar un dato y generar el
ACK.
SSPM3:SSPM0 -> Configura el modo de operación del bus I2C
69. I2C
3 REGISTRO DE CONTROL SSPCON2
REGISTRO DIRECCIÓN SSPADD
❏ Habilita el modo recepción de datos.
❏ Permite generar una condición ACK.
❏ Genera las condiciones STOP, RESTART.
START.
70. GCEN -> Habilita la interrupción cuando recibe el byte 0x00. Sólo
para el esclavo.
ACKSTAT -> Indica si se ha recibido o no el ACK del esclavo.
Transmisión Maestro.
ACKDT -> Indica la condición del ACK que debe ser detectado
cuando el maestro recibe la data.
ACKEN -> Habilita el bit de reconocimiento.
RCEN -> Habilita el modo recepción. SDA como entrada.
PEN -> Genera la condición de STOP.
RSEN -> Genera la condición RESTART.
SEN -> Genera la condición START.
71. ADMSK5: ADMSK2 -> En modo esclavo, habilita el
enmascaramiento de los bits del mismo orden en el registro de
direcciones SSPADD.
ADMSK1 -> Habilita el enmascaramiento para las direcciones
de 10 bits o 7 bits.
72. I2C
4 REGISTRO BUFFER SSPBUF
❏ SSPBUF es un registro de 8 bits, donde se
recibe o lee la información.
❏ SSPSR es un registro de desplazamiento, para
enviar o recibir los datos de manera serial.
5 REGISTRO DESPLAZAMIENTO
SSPSR
Recepción: Cuando SSPSR recibe un byte completo, se
transfiere a SSPBUF y genera una interrupción SSPIF.
Transmisión: Cuando SSPBUF transmite toda la información a
SSPSR, se genera una interrupción SSPIF.
73. I2C
6 REGISTRO DIRECCIÓN SSPADD
REGISTRO DIRECCIÓN SSPADD
❏ El registro SSPADD contiene la dirección del esclavo.
❏ En modo maestro como recarga para el generador de
velocidad en baudios.