- QUE ES EL BUS IIC.
- PRINCIPALES VENTAJAS.
- MAS CARACTERÍSTICAS.
- TERMINOLOGÍA BÁSICA IIC.
- INSTRUCCIONES BÁSICAS.
- CONDICIÓN DE INICIO Y PARADA.
- CONDICIÓN DE INICIO REPETIDA.
- RECONOCIMIENTO.
- LECTURA DE MEMORIA
- ESCRITURA DE MEMORIA.
- ESCRITURA DE MEMORIA.
QUE ES EL BUS IIC.
El Bus I2C (Inter - Integrated Circuit) es un sistema de comunicación de dos cables, con propiedades de velocidad de transferencia de datos considerada de media a baja (400 Khz. a 100 Khz.) y que fue desarrollado por Philips Semiconductor, a comienzos de la década del 80. Originalmente creado para reducir los costos de los equipos electrónicos, para el control simple y de señales de estatus, simplificar las conexiones entre los periféricos y aumentar la inmunidad al ruido. Junto con su versatilidad técnica y simplicidad ha mantenido su popularidad a lo largo de los años.
Para hacernos una idea, tuvo sus primeras aplicaciones en controles de contraste, brillo y volumen en aparatos de televisión pero actualmente encontramos conexiones por bus I2C en una gran variedad de computadoras, equipos industriales, entretenimiento, medicina, sistemas militares y un ilimitado abanico de aplicaciones e importantes usos potenciales.
PRINCIPALES VENTAJAS.
Antes de la aparición del Bus I2C, las transferencias de datos de memorias a microprocesadores, eran realizadas en forma paralela requiriendo de esta forma encapsulados con una importante cantidades de pines (24, 28, o más pines). La asignación de funciones de los pines se repartían entre el direccionamiento de la memoria, la selección, el control y la transferencia de datos. Esta última solamente requería de 8 pines más otros ocho pines para el direccionamiento, por mencionar algunos. En contraste con este despilfarro de pines, el Bus I2C permite la comunicación “chip-to-chip” usando solo dos cables en una conexión serial, permitiendo de esta forma comunicar dispositivos con muy pocas vías.
Estos dos cables son llamados Clock (SCL) y Data (SDA) y son los encargados del direccionamiento, selección, control y transferencia de datos, de a un BIT por vez.
Cada dispositivo conectado al bus tiene un
código de dirección seleccionable mediante software. Habiendo permanentemente
una relación Master/ Slave
entre el micro y los dispositivos conectados.
SDA está encargado del intercambio de datos, mientras que SCL se encarga de sincronizar al transmisor y al receptor durante la transferencia de los datos mencionados desde un IC al otro. Dentro del sistema de comunicación I2C, los dispositivos están identificados como Maestro (Master) y Esclavo (Slave), por lo que al dispositivo que inicia el contacto y “abre” el bus se lo denomina Master, mientras que al que recepciona y contesta el llamado se lo denomina Slave. Los dispositivos conectados al bus pueden ser Master solamente, Slave solamente o intercalar las funciones de Master y Slave de acuerdo como el sistema requiera, tal como es el caso que veremos de las memorias EEPROM I2C.
Este sistema puede interconectar a muchos IC sobre el bus (hasta 255 dispositivos) y todos conectados a los mismos dos cables SDA y SCL. Cada dispositivo esclavo posee una única dirección y cuando el Master transmita el llamado todos los ICs conectados al bus lo escucharán, pero solo le contestará aquel que posea la dirección que el transmisor incluyó en su llamada y será con este único Slave, con quien iniciará la transferencia de datos hasta que decida “cerrarla”.
Más características:
El bus permite la conexión de varios Masters, ya que
incluye un detector de colisiones.
El protocolo de transferencia de datos y
direcciones posibilita diseñar sistemas completamente definidos por
software.
software.
Los datos y direcciones se transmiten con
palabras de 8 bits.
El costo de conexión entre los varios
dispositivos dentro del sistema debe de ser el mínimo.
El sistema que utiliza este Bus no
requiere una alta tasa de transferencia de datos.
La total eficacia
del sistema depende de la correcta selección de la naturaleza de los
dispositivos y de la
interconexión de la estructura del bus.
TERMINOLOGÍA BÁSICA IIC.
Transmisor
|
El dispositivo que envía datos al Bus.
|
Receptor
|
El dispositivo que recibe datos desde el Bus.
|
Master (Maestro)
|
El dispositivo que inicia una transferencia, genera
las señales del reloj y termina un envío de datos.
|
Slave (Esclavo)
|
El dispositivo direccionado por un master
.
|
Multi-Master
|
Más de un master puede controlar el bus al mismo
tiempo sin corrupción de los mensajes.
|
Arbitraje
|
Procedimiento que asegura que si uno o mas master
simultáneamente deciden controlar el Bus solo uno es
permitido a controlarlo y el mensaje saliente no es deteriorado.
|
Sincronización
|
Procedimiento para sincronizar las señales del reloj
de dos o mas dispositivos.
|
- Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples pasos,
suficientes para enviar o recibir información.
- Un bit de Inicio.
- 7-bit o 10-bit de direccionamiento.
- Un R/W bit que define si el esclavo es
transmisor o receptor.
- Un bit de reconocimiento.
- Mensaje dividido en bytes.
- Un bit de Stop.
CONDICION DE INICIO Y DE PARADA.
Dentro del proceso de transferencia de datos en el bus IIC hay dos situaciones básicas que son el inicio y el stop de la transferencia de los datos:
Inicio (start): Es la transición de "1" a "0" (caída) en la linea de datos (SDA) mientras la linea del reloj está a "1".
Parada (stop): Una transición de "0" a "1" (ascenso) en la línea de datos (SDA) mientras la línea de reloj (SCL) esta a "1".
Esta condición se da cuando el maestro inicia la transacción de datos, en el inicio se realiza un cambio de alta a baja en la linea SDA mientras la SCL permanece en alta. El Bus I2C se considera ocupado después de la condición de Inicio. El Bus se considera libre de nuevo después de un cierto tiempo tras la condición de Stop.
ESCRITURA EN MEMORIA.
Existen dos formas de escribir en la memoria, siempre y cuando el bit R/W del byte de control se encuentre en 0:
Existen dos formas de escribir en la memoria, siempre y cuando el bit R/W del byte de control se encuentre en 0:
Escritura
por Byte:
-Se
direcciona la parte de la memoria que será escrita.
-Se envía
byte que se desea escribir.
-Luego se
genera condición de parada y se detiene comunicación.
-Se
escribe byte en memoria.
Escritura
por Página:
-Igual
que escritura por byte, pero en ves de generar la parada se sigue enviando
bytes.
-Se
genera condición de parada.
-Se
escribe en memoria TODOS los bytes enviados.
Lectura en memoria.
Existe un puntero local de direccionamiento en la memoria.
3 maneras de ler la memoria EEPROM (bit R/W de Byte de control debe estar en la "1":
- Lectura de Dirección Actual.
- Lectura aleatoria.
- Lectura secuencial.
Lectura en memoria.
Existe un puntero local de direccionamiento en la memoria.
3 maneras de ler la memoria EEPROM (bit R/W de Byte de control debe estar en la "1":
- Lectura de Dirección Actual.
- Lectura aleatoria.
- Lectura secuencial.
Lectura de Dirección Actual:
- Se envía byte de control con bit R/W en "1".
- Memoria responde con contenido de la dirección a la que apunta el puntero local de direccionamiento.
- Condición de parada.
- Se envía byte de control con bit R/W en "1".
- Memoria responde con contenido de la dirección a la que apunta el puntero local de direccionamiento.
- Condición de parada.
Lectura Aleatoria:
-Se direcciona el Byte que será leído (bit R/W en escritura ‘0’) .
-Se direcciona el Byte que será leído (bit R/W en escritura ‘0’) .
-Se genera condición de partida nuevamente (no mueve puntero).
-Se envía Byte de control con bit R/W en lectura ‘1’.
-EEPROM responde contenido de la dirección deseada.
-Condición de parada (puntero sobre siguiente dirección).
Lectura Secuencial:
-Se direcciona el Byte que será leído (bit R/W en escritura ‘0’).
-Se genera condición de partida nuevamente (no mueve puntero).
-Se envía Byte de control con bit R/W en lectura ‘1’.
-EEPROM responde contenido de la dirección deseada..
-Se envía Byte de control con bit R/W en lectura ‘1’.
-EEPROM responde contenido de la dirección deseada.
-Condición de parada (puntero sobre siguiente dirección).
Lectura Secuencial:
-Se direcciona el Byte que será leído (bit R/W en escritura ‘0’).
-Se genera condición de partida nuevamente (no mueve puntero).
-Se envía Byte de control con bit R/W en lectura ‘1’.
-EEPROM responde contenido de la dirección deseada..
-Microcontrolador envía ACK.
-EEPROM transmite siguiente contenido de dirección secuencial.
-Para interrumpir, en vez de ACK se envía condición de parada.
-EEPROM transmite siguiente contenido de dirección secuencial.
-Para interrumpir, en vez de ACK se envía condición de parada.
No hay comentarios:
Publicar un comentario