Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microcontroladores
El bus I2C
Microcontroladores
EL BUS I2C
EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80s.
Su propsito original fue el de proporcionar una manera fcil de conectar un
CPU a los chips perifricos en un equipo de TV.
EL PROBLEMA A RESOLVER:
Los dispositivos perifricos en sistemas embebidos se conectan al
mControlador como dispositivos de E/S mapeados en memoria usando las
lneas paralelas del bus de direccin y de datos. Esto produce una gran
cantidad de pistas en el PCB para enrutar las lneas de direcciones y de
datos, sin mencionar un nmero de decodificadores de direcciones y lgica
adicional para conectar todo.
Muchas lneas de control implican que el sistema sea ms susceptible a
perturbaciones por Interferencia Electromagntica (EMI) y Descarga
Electrosttica (ESD).
M.C. Carlos E. Canto Quintal
El Bus I2C
Microcontroladores
SDA
SCL
Maestro
Esclavo1
Esclavo2
Esclavo3
M.C. Carlos E. Canto Quintal
El bus I2C
Microcontroladores
Transmisin de bits
Los bits de datos van por SDA
Por cada bit de informacin es necesario un pulso de SCL
Los datos slo pueden cambiar cuando SCL est a nivel bajo
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Trasferencia de datos:
Los datos y direcciones que se transmiten
por SDA son de 8 bits.
.
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Bus Desocupado (Bus Free): Estado en el cual ambas lneas (SDA y SCL) estn
inactivas, presentando un estado lgico alto. Unicamente en este momento es
cuando un dispositivo maestro puede comenzar a hacer uso del bus.
Comienzo (Start): Sucede cuando un dispositivo maestro hace ocupacin del bus,
generando esta condicin. La lnea de datos (SDA) toma un estado bajo mientras
que la lnea de reloj (SCL) permanece alta.
Parada (Stop): Un dispositivo maestro puede generar esta condicin dejando libre el
bus. La lnea de datos toma un estado lgico alto mientras que la de reloj permanece
tambin en ese estado.
El bus I2C
Microcontroladores
Dato Vlido (Valid Data): Sucede cuando un dato presente en la lnea SDA es estable
mientras la lnea SCL est a nivel lgico alto.
Formato de Datos (Data Format): La transmisin de datos a travs de este bus consta
de 8 bits de datos ( 1 byte). A cada byte le sigue un noveno pulso de reloj durante el
cual el dispositivo receptor del byte debe generar un pulso de reconocimiento, conocido
como ACK (del ingls Acknowledge). Esto se logra situando la lnea de datos a un nivel
lgico bajo mientras transcurre el noveno pulso de reloj.
Direccin (Address): Cada dispositivo diseado para funcionar en este bus dispone
de su propia y nica direccin de acceso, que viene pre-establecida por el fabricante.
Hay dispositivos que permiten establecer externamente parte de la direccin de acceso.
Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un
mismo bus sin problemas de identificacin. La direccin 00 es la denominada "de
acceso general", por la cual responden todos los dispositivos conectados al bus.
El bus I2C
Microcontroladores
Descripcin
Transmisor
Receptor
Master
(Maestro)
El dispositivo que inicia una transferencia, genera las seales del reloj y termina un envo
de datos
Slave
(Esclavo)
Multi-Master
Mas de un master puede controlar el bus al mismo tiempo sin corrupcin de los mensajes
Arbitraje
Procedimiento que asegura que si uno o mas master simultneamente deciden controlar
el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado
Sincronizacin
Procedimiento para sincronizar las seales del reloj de dos o mas dispositivos
El bus I2C
Microcontroladores
Respaldo Tecnolgico:
El bus I2C
Microcontroladores
Respaldo Tecnolgico:
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Transferencia de datos:
El Maestro genera la condicin de Start.
Cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra
transferida contiene la direccin del Esclavo seleccionado.
Tras el envo del start o inicio, en los siguientes 7 bits se codifica la direccin del
dispositivo. Y el octavo bit indica si se hace lectura(1) o escritura(0).
Despus de cada 8 bits, el master debe esperar una seal de reconocimiento como
respuesta por parte del esclavo, lee el estado de la lnea SDA, si vale 0 (impuesto por
el esclavo), el proceso de transferencia contina. Si vale 1, indica que el circuito
direccionado no valida la comunicacin, entonces, el Maestro genera un bit de stop
para liberar el bus I2C.
Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante
del protocolo I2C.
Al final de la transmisin, el Maestro genera la condicin de Stop y libera el bus
I2C, las lneas SDA y SCL pasan a estado alto.
El bus I2C
Microcontroladores
Inicio de transmisin
La transmisin la inicia el maestro
Flanco de bajada en SDA con SCL a nivel alto
Cuando nadie accede al bus hay un nivel alto en SCL y SDA
El bus I2C
Microcontroladores
START:
la lnea SDA cae a cero
mientras SCL permanece
en nivel alto. A partir de
este momento comienza la
transferencia de datos.
El bus I2C
Microcontroladores
Start y Stop
SDA baja antes que SCL
El bus I2C
Microcontroladores
Enviando a un Esclavo
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Reconocimiento (Acknowledge) :
Reconocimiento
El bit de reconocimiento es obligatorio en la transferencia de datos. El pulso de reloj
correspondiente al bit de reconocimiento (ACK) es generado por el Master. El Transmisor
desbloquea la lnea SDA ("1") durante el pulso de reconocimiento. El receptor debe poner a "0" la
lnea SDA durante el pulso ACK de modo que siga siendo "0" durante el tiempo que el master
genera el pulso "1" de ACK.
Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despus
de que cada byte a sido recibido.
Cuando un dispositivo esclavo no genera el bit ACK (porque esta haciendo otra cosa y no puede
atender el Bus) debe mantener el esclavo la lnea SDA a nivel "1" durante el bit ACK. El Master
entonces puede generar una condicin de STOP abortando la transferencia de datos o repetir la
condicin de Inicio enviando una nueva transferencia de datos.
Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes, el master debe detectar
la situacin y no enviar mas bytes. Esto se indica porque el esclavo no genera el bit ACK en el
primer byte que sigue. El esclavo pone la lnea SDA a "1" lo que es detectado por el Master el
cual genera la condicin de Stop o repite la condicin de Inicio.
Si un Master-receptor esta recibiendo datos de un Esclavo-transmisor debe generar un bit ACK
tras cada byte recibido de transmisor, para finalizar la transferencia de datos no debe generar el
ACK tras el ultimo byte enviado por el esclavo. El esclavo-transmisor debe permitir desbloquear
la lnea SDA generando el master la condicin de Stop o de Inicio.
El bus I2C
Microcontroladores
Transferencia completa
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Se deben poner en
estado alto (conectar a
la alimentacin por
medio de resistores
Pull-Up) para construir
una estructura de bus
tal que se permita
conectar en paralelo
mltiples entradas y
salidas
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Las dos lneas de comunicacin disponen de niveles lgicos altos cuando estn
inactivas. De entrada el nmero de dispositivos que se puede conectar al bus es
ilimitado, pero las lneas tienen una especificacin de capacidad de carga mxima de
400pF.
M.C. Carlos E. Canto Quintal
El bus I2C
Microcontroladores
Terminacin de Bus
El Bus I2C
Microcontroladores
El bus I2C
Ejemplo de una configuracin del bus I2C usando dos microcontroladores
El bus I2C
Microcontroladores
Configuracin Multi-Maestro
Cuando el MCU1 emite una condicin start e envi una direccin, todos los esclavos
escucharn ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo
tambin) . Si la direccin no concuerda con la direccin del CPU2, este dispositivo
debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de
nuevo despus de una condicin stop.
As long as the two MCU's monitor what is going on on the bus (start and stop) and as
long as they are aware that a transaction is going on because the last issued
command was not a STOP, there is no problem.
Let's assume one of the MCU's missed the START condition and still thinks the bus is
idle, or it just came out of reset and wants to start talking on the bus which could very
well happen in a real-life scenario. This could lead to problems.
Configuracin Multi-Maestro
Protocolo multimaestro
Con dos maestros en el bus existe posibilidad de conflicto
Arbitracin: procedimiento para asegurar que slo un maestro tiene el
control del bus en un instante
Si un maestro est utilizando el bus no puede ser interrumpido por
otro.
Desde START hasta STOP
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
Ejemplo deEl
aplicaciones
bus I2C del Bus I2C
Conexin de medidores ultrasnico de distancias a un mC Basic Stamp
2 usando el bus I2C.
El mdulo SRF10 es un medidor ultrasnico de
distancias miniatura para robots que representa la
ultima generacin en sistemas de medidas de
distancias por sonar.
El sensor es capaz de detectar objetos a una
distancia de 6 m con la facilidad de conectarse al
microcontrolador mediante un bus I2C, por lo que
se pueden conectar cuantos sensores sean
necesarios en el mismo bus.
Con una alimentacin unica de 5V, solo requiere
15 mA, para funcionar y 3mA mientras esta en
reposo.
M.C. Carlos E. Canto Quintal
El bus I2C
Microcontroladores
Ejemplo deEl
aplicaciones
bus I2C del Bus I2C
Para el programador, el sensor SRF10 se comporta de la
misma manera que las EEPROM de las series 24xx, con
la excepcin de que la direccin I2C es diferente. La
direccin por defecto de fbrica del sensor es 0xE0. El
usuario puede cambiar esta direccin con 16 direcciones
diferentes: E0, E2, E4, E6, E8, EA, EC, EE, F0, F2, F4,
F6, F8, FA, FC o FE, por lo que es posible utilizar hasta
16 sensores sobre un mismo bus I2C.
Adems de las direcciones anteriores, todos los sonares
conectados al bus I2C respondern a la direccin 0 -al
ser la direccin de atencin general. Esto significa que
escribir un comando de medicin de la distancia para la
direccin 0 de I2C (0x00) iniciar las mediciones en todos
los sensores al mismo tiempo.
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
WRITEI2C
Sintxis: WRITEI2Clocation,(variable,...)
- Location es una variable /constante que especifica la
direccin de un byte o palabra
- Variable(s) contiene el byte(s) de dato que se va a
escribir
Funcin:
Escribe a la localidad I2C el contenido de la variable(s).
READI2C
Sintxis: READI2C location,(variable,...)
- Location es una variable /constante que
especifica la direccin de un byte o palabra
- Variable(s) recibe el byte(s) leido(s).
Funccin:
Lee la localidad I2C contenida en la(s) variable(s).
M.C. Carlos E. Canto Quintal
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores