Comunicación Serie IIC: Inter-Integrated Circuit
IIC: Inter-Integrated Circuit I2C es un bus serial, multi-master, de baja velocidad (de 10 a 400kbps), creado por Philips. El objetivo es facilitar la conexión de muchos dispositivos utilizando sólo dos líneas (+ GND!!) de hardware. La transmisión es sincrónica mediante un clock, por lo que no es necesario un matching de velocidades entre el transmisor y el receptor. Vamos a ver: Introducción al bus I2C Periférico IIC del KINETICS. 28/09/2015 2
I2C: Outline Características eléctricas Protocolo Formas de onda Características especiales del bus Aplicaciones Algunas notas adicionales Referencias (útiles) 28/09/2015 3
I2C: Características Eléctricas (I) Dos líneas open drain, bidireccionales, llamadas SCL (Serial CLock) y SDA (Serial DAta). Las señales tienen pullup a VCC. 28/09/2015 4
I2C: Características Eléctricas (II) 1. +VDD: Generalmente 5V o 3.3V, aunque puede ser menor. 2. Capacidad máxima: 400pF 3. Pullup máximo: Depende de la capacidad del bus, y de la velocidad de transmisión que se desee alcanzar! 28/09/2015 Laboratorio de microprocesadores Ing. Claudio Muñoz- Ing. Daniel A. Jacoby 5
I2C: Protocolo (I) 1. Sólo un Master puede iniciar la comunicación (pero el bus es Muli-Master ) 2. Muchos Slaves, pero no hay Slave Select! Cada slave tiene un Address que lo identifica. Para iniciar una comunicación, el Master debe especificar el Address del Slave al que le quiere hablar. 3. La especificación (original) soporta hasta 127 dispositivos en el bus 28/09/2015 6
I2C: Protocolo (II) Para ESCRIBIR hacia el slave, el master debe: Generar un START BIT Enviar el ADDRESS (7 bits) Enviar el bit R/W en 0, que indica que se quiere escribir hacia el dispositivo. Leer el bit ACKNOWLEDGE del slave El Master debe transferir bytes, a los que el slave debe responder con ACK o NACK. Generar el STOP bit, para finalizar el intercambio. 28/09/2015 7
I2C: Protocolo (III) Para LEER desde el slave, el master debe: Generar un START BIT Enviar el ADDRESS (7 bits) Enviar el bit R/W en 1, que indica que se quiere leer desde el dispositivo. Leer el bit ACKNOWLEDGE del slave El Slave debe transferir bytes, a los que el master debe responder con ACK o NACK. Generar el STOP bit, para finalizar el intercambio. 28/09/2015 8
I2C: Formas de onda (I) Los datos (DATA) deben ser de 8 bits, MSB primero. Vimos que el SLAVE ADDRESS es de 7 bits, que junto con el bit R/W forman una palabra de 8 bits. Eléctricamente, ADDR+R/W es indistinguible de DATA. Hay 4 formas de onda relevantes: 1. START BIT 2. STOP BIT 3. Transferencia de BYTE 4. ACK y NACK 28/09/2015 9
I2C: Formas de onda (II) Transferencia de BYTE (o ADDR+R/W): Notar que las transiciones de SDA ocurren solamente cuando SCL es 0. 28/09/2015 Laboratorio de microprocesadores Ing. Claudio Muñoz- Ing. Daniel A. Jacoby 10
I2C: Formas de onda (III) START y STOP bits: Generados por el MASTER (en modos R y W). Notar que para generar START y STOP bits, las transiciones de SDA ocurren cuando SCL es 1. 28/09/2015 11
I2C: Formas de onda (IV) ACK (y NACK) Generado por el SLAVE (en caso de escritura o cuando se hace ACK de ADDR+R/W) Generado por el MASTER (en caso de lectura) 28/09/2015 12
I2C: Formas de onda (V) ACK (y NACK) 28/09/2015 13
I2C: Formas de onda (VI) Ejemplo de transferencia de 1 byte completo. 28/09/2015 14
I2C: Características especiales (I) 1. Repeated start: Si el Master no quiere liberar el bus luego de una comunicación, genera un REPEATED START BIT en lugar de un STOP BIT. 28/09/2015 15
I2C: Características especiales (II) 2. Clock Stretching: Si el slave, luego de recibir un byte, necesita más tiempo (sea cual fuere su razón), puede utilizar CLOCK STRETCHING: El Master intentará proveer un pulso en SCL. Si el Slave necesita tiempo, puede tirar SCL a cero, condición que debe ser detectada por el Master, e interpretada como que el Slave necesita un Wait State. Cuando el Slave lo disponga, puede liberar SCL, para indicar que ya está listo para proceder con la comunicación. 28/09/2015 16
I2C: Características especiales (III) 2. Clock Stretching (forma de onda): 28/09/2015 17
I2C: Características especiales (IV) 3. Bus Arbitration Vimos que I2C es un bus Multi-Master. Para que muchos masters puedan convivir en el bus, hay dos mecanismos que evitan que más de un Master hable a la vez: a. Los dispositivos monitorean las señales SDA y SCL, y si detectan un START, no pueden hacer de Master hasta detectar un STOP. b. Dos dispositivos Master pueden comenzar la comunicación al mismo tiempo. Entonces, no se detectaría la condición a! Para salvar este caso, los Master deben monitorear que el valor lógico en SDA sea el que ellos han impuesto. De lo contrario, han perdido el derecho de comunicarse. 28/09/2015 Laboratorio de microprocesadores Ing. Claudio Muñoz- Ing. Daniel A. Jacoby 18
Aplicaciones: Memorias EEPROM seriales Línea 24LCxxx, MUUUY populares! 28/09/2015 Laboratorio de microprocesadores Ing. Claudio Muñoz- Ing. Daniel A. Jacoby 19
Aplicaciones: Real Time Clock + NVRAM 28/09/2015 Laboratorio de microprocesadores Ing. Claudio Muñoz- Ing. Daniel A. Jacoby 20
Aplicaciones: SMBus Subset del bus I2C, que se usa en todos los Motherboards para conectar monitores de temperatura, RPM del ventilador, A/Ds de monitoreo de fuentes de tensión, controladores inteligentes de carga de batería de notebooks, etc. 28/09/2015 21
Aplicaciones: SPD en RAMs para PC Las memorias RAM de la PC (DIMM, DDR, DDR2, etc.) tienen una memoria EEPROM serial 24LC02 (256 bytes), que contiene información sobre los parámetros de funcionamiento de dicho módulo de memoria. El BIOS lee esa EEPROM y reconfigura el controlador de memoria RAM para el timing y la capacidad del módulo que el usuario ha instalado en el motherboard. Obviamente, como es una 24LC02, la interfaz es I2C! 28/09/2015 22
Aplicaciones: DACs/ADCs I2C 28/09/2015 23
Aplicaciones: Potenciómetros digitales I2C 28/09/2015 24
Aplicaciones: Sensores (Barómetro) 28/09/2015 25
Aplicaciones: Sensores (Aclerómetro) 28/09/2015 26
Nota Adicional: I2C con dispositivos de alimentaciones diferentes (ej, 5V y 3.3V) 28/09/2015 27
Referencias NXP, THE I2C-BUS SPECIFICATION, VERSION 2.1, JANUARY 2000 Hoja de datos de 24LC256 http://en.wikipedia.org/wiki/i%c2%b2c 28/09/2015 Laboratorio de microprocesadores Ing. Daniel A. Jacoby 28