Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C de
Micro controladores PIC
1
Índice
1. Introducción al I2C
2
Introducción al I2C
Protocolo de comunicaciones:
1. Permite la transferencia de datos de un dispositivo a otro
2. Es Serie (SDA)
( )
3. Es Síncrono (SCL)
4. Bidireccional
5. Muy extendido
6. Modelo maestro – esclavo
En el PIC se encuentra en el recurso MSSP module, compartido
con el SPI.
3
Introducción al I2C
4
Resistencias de PULL‐UP
5
Protocolo I2C
S Condición de arranque (Start Condition)
P Condición de parada (Stop Condition)
R Condición de re‐arranque
Condición de re arranque (Restart
(Restart Condition)
Data Transmisión de datos (Data Transfer)
A Condición de Acknoledge (ACK/NACK Condition)
6
Start Condition
Inicializa
l ell BUS I2C
SDA se pone a nivel bajo cuando SCL está a nivel alto
SDA
S
SCL
7
Stop Condition
SDA
P
SCL
8
Restart Condition
Stop Start
SDA
R
SCL
9
Transferencia de Datos
SDA
Data
SCL
10
Validación (Acknoledge)
0 ‐> ACK
1 ‐> NACK
SDA
SCL
11
Señales I2C
Master Esclavo
SDA
SCL
Master S Data
Slave A
12
Comunicación I2C
Escritura
Dirección Dato
Maestro S Registro P
(W) Acción
Esclavo A A A
Lectura Depende del esclavo, en este caso
indicamos que ya no queremos recibir
más información.
Dirección Dirección
S Registro R N P
(W) (R)
A A A Dato
13
Comunicación I2C
Lectura de más de un byte
(Ejemplo, depende del esclavo)
Depende del esclavo, en este caso
indicamos que queremos recibir más
datos
Dirección Dirección
S Registro R A
(W) (R)
A A A Dato …
A A N P
… Dato Dato Dato
14
Índice
1. Introducción al I2C
3. Ejemplo de Uso
15
Registros I2C en PIC
16
Registros I2C en PIC
WCOL: Colisión de datos
SSPOV: Overflow
SSPEN: Activación del MSSP
CKP: En modo esclavo detiene el reloj
SSPM3..0: Modo de funcionamiento
1000 MASTER (clk=Fosc / (4 * ( SSPADD + 1 ) ) )
17
Registros I2C en PIC
GCEN: Activar interrupciones
ACKSTAT: Estado del ACK (recibido?)
( )
ACKDT: Valor del ACK
ACKEN: Mandar el ACK almacenado en ACKDT
RCEN: Activa recepción
PEN: Activar condición de STOP
RSEN: Activar condición de Restart
SEN: Activar condición de Start
18
Registros I2C en PIC
Otros registros relacionados con I2C
SSPBUF : Registro donde depositamos el dato a mandar, o donde recibimos
SSPSR: No accesible por el usuario. Registro de desplazamiento
SSPADD: Lo usamos para indicar la velocidad del bus en modo Maestro o para
indicar la dirección del módulo en esclavo.
(Muy útil para tener un mecanismo de comprobación del estado de las
comunicaciones)
19
Índice
1. Introducción al I2C
3. Ejemplo de Uso
20
Sensor ultrasonidos SRF02
Con un único transductor tenemos emisor y receptor
C ú i t d t t i t
Conexión serie o I2C (niveles TTL)
Dirección interna seleccionable entre 16 valores
E0 E2 E4 FE (por defecto E0)
E0, E2, E4, … FE (por defecto E0)
Medidas de 15cm a 600cm
PIC16f876a
GND
SCL
SDA
+5v
21
SRF02 (Registros)
Revisión de software interno
0 Registros de comandos
0x05
1
1 N
No usado (se lee 0x18)
d ( l 0 18) N di
No disponible
ibl
Byte alto de la medidad
2 No disponible
realizada
Byte bajo de la medidad
3 No disponible
realizada
Byte alto del valor mínimo de
4 No disponible
No disponible
distancia
Byte bajo del valor mínimo de
5 No disponible
distancia
22
SRF02 (comandos)
Comandos
Descripción
Decimal Hexadecimal
80
80 0x50
0x50 Iniciar una nueva medición real Resultado en pulgadas
Iniciar una nueva medición real. Resultado en pulgadas
81 0x51 Iniciar una nueva medición real. Resultado en centímetros
82 0x52 Iniciar una nueva medición real. Resultado en microsegundos
g
86 0x56 Iniciar una nueva medida falsa. Resultado en pulgadas
87 0x57 Iniciar una nueva medida falsa. Resultado en centímetros
88 0x58 Iniciar una nueva medida falsa. Resultado en microsegundos
23
SRF02 (Ejemplos)
Lanzar una medida de distancia en cm
Esclavo A A A
Depende del esclavo, en este
caso indicamos que ya no
Lectura del byte bajo queremos recibir más
información.
S 0xE0 3 R 0xE0 N P
A A A Byte bajo
24