Sunteți pe pagina 1din 12

LIMITACIONES DEL BUS I2C

6.1 CONFLICTOS DE DIRECCIONES


Cuando un dispositivo no tiene su direccin I2C programable, solo se podr tener
un dispositivo conectado en el mismo bus. Los conflictos de direcciones surgen
cuando en un mismo bus se colocan esclavos con la misma direccin cableada.
La solucin a esta problemtica es la multiplexacion o conmutacin I2C para
seleccionar por software o por pines el esclavo que necesita direccionamiento.
A continuacin se menciona la multiplexacion I2C la cual se puede utilizar para
deshacerse de esta limitacin.
Caractersticas:

Permite dividir dinmicamente el I2C principal en varios sub-ramas con el fin de

hablar con un dispositivo a la vez.


Se puede programar a travs de I2C por lo que no se requieren pines

adicionales para el control.


Ms de un multiplexor puede ser conectado en el mismo bus I2C.
Numero de canales
2
4
8

Estandard
PCA9540
PCA9546
PCA9548

W/Interrupcion Logica
PCA9542/43
PCA9544/45

Una direccin de 7 o 10 bits que es nica para cada dispositivo identifica un


dispositivo I2C.
Tipos de direcciones:

Semi-fija, esta permite tener ms de un dispositivo en el mismo bus.


Fija totalmente, lo que permite tener un solo dispositivo en el mismo bus.

Al requerirse ms de un mismo dispositivo "no programable", es necesario retirar


temporalmente el dispositivo, no dirigida desde el bus cuando sea necesaria la
comunicacin con el dispositivo de destino. El cual tendr una direccin totalmente
fija en una aplicacin especfica, la solucin para este tipo eventos se requiere
multiplexores I2C, estos permiten dividir dinmicamente el bus I2C principal en 2,
4 u 8 sub-bus. Cada sub-bus se puede conectar al bus principal por un simple
comando de 2 bytes.

Por ejemplo, en una aplicacin donde se utilizan 4 EEPROM I2C idnticos (EE1,
EE2, EE3 y EE4), podramos utilizar un PCA9546 de cuatro canales se puede
utilizar. El maestro est conectado al upstream, mientras que las memorias
EEPROM 4 estn conectados a los 4 canales downstream (CH1, CH2, CH3 y
CH4). Si el maestro tiene que realizar una operacin en EE3, se tendr que:
- Conectar el canal ascendente en CH3
- Simplemente comunicarse con EE3.
EE1, EE2 y EE4 se eliminan elctricamente del bus I2C principal, siempre y
cuando se selecciona CH3. Algunos de los multiplexores I2C ofrecen una funcin
de interrupcin, logrando la recoleccin de las diferentes interrupciones
downstream. Una salida de interrupcin proporciona la informacin (transicin de
up and down) al patrn cada vez que uno o ms se genera interrupcin transicin
de mayor a menor por cualquiera de los dispositivos downstream.
FIGURA XX: I2C Address Conflict

Los canales ascendentes SCL/SDA son mltiples canales SCx/SDx los cuales son
seleccionados por el registro de control programable. El comando I2C se enva a
travs del bus I2C principal y se utiliza para seleccionar o anular la seleccin de
los canales descendentes.
Los multiplexores pueden seleccionar ningn o slo un canal SCx / SDx a la vez
desde que fueron diseados principalmente para la resolucin de conflictos de
direcciones, cuando hay varios dispositivos con la misma direccin I2C necesitan
estar conectados al mismo bus I2C y slo se puede hablar con uno de los
dispositivos a la vez.
Estos dispositivos se utilizan en los proyectores de vdeo y las aplicaciones de
servidor. Otras aplicaciones incluyen:
La resolucin de conflictos de direcciones (por ejemplo, EEPROM SPD en
DIMM).
I2C aislamiento sub-rama.
Cambiador de nivel bus I2C (por ejemplo, cada canal SCx / SDx individual puede
ser operado a 1,8 V, 2,5 V, 3,3 V o 5,0 V si el dispositivo es alimentado a 2,5 V).
Las entradas lgicas de interrupcin para cada canal y la potencia combinada se
incluyen en cada multiplexor y se proporciona una bandera para el maestro en el

monitoreo del sistema. Estos dispositivos no aslan la carga capacitiva a cada lado
del dispositivo de manera que el diseador debe tener en cuenta toda la traza y el
dispositivo de capacitancia en ambos lados del dispositivo y en cualquier de los
canales activos. Pull Up resistencias deben ser utilizados en todos los canales.

6.2 CARGAS CAPACITIVAS


Dentro de las caractersticas que encierran las cargas capacitivas podemos
mencionar:

Limitacin del protocolo I2C: la carga mxima capacitiva en un bus es de


400 pF. Si los parmetros de carga son ms altos, los parmetros de

corriente alterna sern corrompidos.


Permite dividir dinmicamente el I2C principal en varios sub-ramas con el

fin de dividir la carga capacitiva del bus.


Se puede programar a travs de I2C por lo que no se requieren pines

adicionales para el control.


Ms de un multiplexor se puede conectar en el mismo bus I2C.
Limitacin: Todas las subramas no se pueden abordar al mismo tiempo.

Nmero de canales
2
4
8

Estandard
PCA9540
PCA9546
PCA9548

W/Interrupcin Lgica
PCA9542/43
PCA9544/45

La especificacin I2C limita la carga mxima capacitivo en el bus a 400 pF. En


aplicaciones donde se requiere una carga capacitiva superior, 2 tipos de
dispositivos se pueden utilizar:

Multiplexores y conmutadores I2C


Topes de I2C y repetidores

FIGURA XX: Capacitive load split.

Multiplexores permiten la divisin dinmica de bus I2C sobrecargado en varias


sub-ramas con una carga capacitiva total menor que el especificado 400 pF. Se
debe considerar que este mtodo no permite al maestro acceder a todos los buses
al mismo tiempo. Slo una parte del bus ser accesible a la vez.
Multiplexores permite la separacin del bus, pero no tienen una capacidad de
almacenamiento en bfer. Los Buffers y repetidores permiten incrementar la carga
capacitiva total ms all de los 400 pF sin dividir el bus en varias ramas. Si se
utiliza un PCA9515, el bus se puede cargar hasta 800 pF con 400 pF en cada lado
del dispositivo.
Como un caso puntual se puede mencionar lo siguiente al utilizar 4 tarjetas
idnticas. Idntico significa que se utilizan los mismos dispositivos, y que los
dispositivos I2C en cada tarjeta tienen la misma direccin. Cada tarjeta monitoriza
y controla alguna seal especfica y esas seales son controladas monitoreadas a
travs del bus I2C mediante el uso de un dispositivo de tipo PCA9554.

En esta aplicacin, cada tarjeta supervisa el sistema de algn Sub sistema de


alarma y controla algunos LEDs para el estado visual. Cada alarma, cuando se
activa, genera una interrupcin que se enva al maestro para su procesamiento.
El PCA9554 recolecta las seales de interrupcin y enva un "estado general de la
tarjeta de interrupcin" al maestro. Cuando el maestro procesa la alarma, se enva
una seal de reset a la alarma correspondiente para desactivarla. El maestro
recibe solamente una seal de interrupcin, que es una combinacin de todas las
seales de interrupcin en las tarjetas.
PCA9544 en esta solicitud tiene 2 funciones:
Decodificar las direcciones I2C mediante la creacin de buses I2C 4 que pueden
aislarse.
Recoger la interrupcin de cada tarjeta y propagar una "interrupcin general"
para el maestro.
Cuando una tarjeta en la aplicacin activa una condicin de alarma, el PCA9554
la recoge a travs de una de sus entradas y genera una interrupcin (a nivel de
tarjeta).PCA9544 recoge las interrupciones (de cada tarjeta) y enva una
"interrupcin general" al maestro. Realizando la siguiente secuencia.
Maestro entonces interroga al registro de estado de interrupcin PCA9544
con el fin de determinar qu tarjeta est en causa
Maestro entonces conecta el canal I2C sub correspondiente con el fin de
interrogar al PCA9554 mediante la lectura de su registro de entrada.
Una vez 1) y 2) se realizan, el Maestro sabe qu alarma se ha activado y
puede procesarla Cuando se hace esto, el maestro puede entonces borrar
la alarma correspondiente mediante el acceso a la tarjeta correspondiente y
programar el PCA9554 (escribe en el registro de salida)

6.3 TRASLACION DEL NIVEL DEL VOLTAJE

Cmo adaptar los diferentes niveles de la lgica I2C en el mismo bus I2C?
Debido a la arquitectura abierta del bus I2C, las resistencias se requieren a una
tensin especfica. Si se requieren diferentes niveles de voltaje, traductores nivel
de tensin deben ser utilizados.
Permite dividir dinmicamente el I2C principal en varios sub-ramas y
permitir diferentes tensiones de alimentacin para ser conectado a las
resistencias pull-up.
Los dispositivos de ACP son programables a travs del bus I2C, no es
necesario un pin adicional para controlar qu canal est activo.
Ms de un canal puede estar activo al mismo tiempo, por lo que el maestro
no tiene que recordar a qu rama debe ser direccionado.
Ms de un interruptor se puede conectar en el mismo bus I2C.
En este ejemplo, tenemos un bus I2C existente 5.0 V y queremos aadir algunas
nuevas caractersticas con dispositivos "no tolerantes a 5,0 V". El maestro que
controla los dispositivos existentes y nuevos se encuentra en el canal upstream y
el 2 canal downstream se utilizar con resistencias pull up a 5,0 V en una y a 3,3 V
en el otro. Los cambios de software incluirn los controladores para los nuevos
dispositivos de 3,3 V y un simple comando de 2 bytes permite programar el
interruptor de I2C con los 2 canales downstream activo todo el tiempo. El maestro
entonces ve a un bus I2C con nuevos dispositivos y no debe dar importancia al
alto voltaje necesario para que funcionen correctamente. No tiene tampoco que
preocuparse por la ubicacin del dispositivo que necesita hablar con canal
downstream 0 o canal 1 ya que ambos son activos al mismo tiempo.

Generalidades Interruptores I2C: Cambio de Nivel de Voltaje

H Dispositivo I2C
1

Dispositivo I2C
2

Dispositivo I2C
3

Dispositivo I2C
5

Dispositivos suministrados a 3.3v


y no tolerantes a 5v.

Dispositivos suministrados a 5v.


5

Dispositivo I2C
4

MASTER

I2C

Dispositivo I2C
1

Dispositivo I2C
2

Dispositivo I2C
3

PC
SWITCH

5v bus
MASTER
Dispositivo I2C
4

Dispositivo I2C
5

3.3v bus

Los interruptores pueden seleccionar canales individuales SCx / SDx uno a la vez,
todos a la vez o en cualquier combinacin a travs de comandos I2C, sino tambin
para trabajar en la resolucin de conflictos de direcciones. Slo asegrese de no
seleccionar dos canales al mismo tiempo.
Las aplicaciones son las mismas que para los multiplexores pero ya que mltiples
canales se pueden seleccionar al mismo tiempo, los interruptores son estupendos
para el cambio de nivel I2C bus (por ejemplo, canales de SCx / SDx individuales a
1,8 V, 2,5 V, 3,3 V o 5,0 V si el dispositivo es alimentado a 2,5 V).
Un pin de reset de hardware ha sido aadido a todos los interruptores, proporciona
un medio para restablecer el bus en caso de que se cuelgue, sin necesidad de

reiniciar todo el sistema y las aplicaciones de servidor es muy util para restablecer
todo el sistema cuando el bus I2C cuelga.
Entradas lgicas de interrupcin de entrada y salida, estn disponibles en el
PCA9543 y PCA9545 y proporcionan una bandera para el maestro para el
monitoreo del sistema. El PCA9546 es una versin de menor costo del PCA9545
sin interrupcin lgica. El PCA9548 proporciona ocho canales y son ms
convenientes de utilizar, ya que el doble canal 4 desde la direccin del dispositivo
no tiene que cambiar.
Estos dispositivos no aslan la carga capacitiva a cada lado del dispositivo de
manera que el diseador debe tener en cuenta toda la traza y el dispositivo de
capacitancia en ambos lados del dispositivo slo con canales activos,
resistencias de pull-up deben ser utilizado en todos los canales.

6.4 AUMENTAR LA FIABILIDAD DEL BUS I2C EN DISPOSITIVOS ESCLAVOS


Si un dispositivo no funciona bien y se cuelga el bus, entonces ningn dispositivo
podr ser direccionado hasta que el dispositivo con problemas sea separado del
bus o bien este se reinicie.
Un interruptor de I2C se puede utilizar para dividir el bus I2C en varias ramas, que
pueden ser aislados si el bus se cuelga.
Los interruptores permiten que el I2C principal que se dividan de forma dinmica
en varias sub-ramas que pueden ser:
Activas todo el tiempo.
Desactivadas si un dispositivo de una rama en particular cuelga el bus.
Cuando se ha aislado una sub-rama que funciona mal, las otras sub-ramas
pueden seguir disponibles y trabajando sin problemas.
Debido a la arquitectura del bus I2C, si un dispositivo falla en el bus y mantiene la
lnea de reloj o de datos a un nivel bajo y alto, el bus esta atorado en esta
configuracin y ningn dispositivo podr ser controlado hasta que el dispositivo
fallido sea aislado del bus I2C.
Algunas arquitecturas necesitan un bus para seguir funcionando a pesar de que
uno o ms dispositivos fallaron y ya no pueden funcionar normalmente.
Un interruptor I2C con capacidad de reseteo o reinicio permite lo siguiente:
Dividir dinmicamente el bus I2C en varias sub-ramas.
Desconectar todos los dispositivos en dado caso el bus se cuelgue.

Reprogramar el bus y aislar una o mas ramas que no estn trabajando


correctamente.
Aislar Segmentos I2C Colgados:
Dispositivo
1
Dispositivo
2
MASTER

PCA 9548

Dispositivo
3
Dispositivo
4

RESET

Dispositivo
5
Dispositivo
6
Dispositivo
7
Dispositivo
8

En el ejemplo de la figura anterior, tenemos que se utilizan 8 dispositivos y donde


los dispositivos funcionales necesitan ser controlados a pesar de que uno o mas
de ellos estn fallando.
Los dispositivos esclavos estarn ubicados en cada canal downstream de la
PCA9548. En el encendido todos los canales de bajada estn desactivados, el
maestro que es el que se encuentra en el canal ascendente enva un comando de
2 bytes habilitando todos los canales de bajada. El bus I2C es luego un bus
normal con un maestro y 8 dispositivos esclavos.
Vamos a suponer que el dispositivo 5 falla, el bus se cuelga y no puede ser
controlado por el maestro mas. Despues de la deteccin de esta condicin el
maetro debe ir a la rutina de mantenimiento en donde:
Se resetea o reinicia el PCA4598, desactivando todos los canales de
bajada.

Habilita uno por uno todos los canales de bajada, hasta que el bus se
cuelga nuevamente en el dispositivo 5. El bus entonces se da cuenta que
este es el reponsable del fallo.
Nuevamente se reinicia el PCA4598 para tomar el control del bus I2C.
Programa toda las funcionalidades a los canales activos y desactiva el
canal 5.
Es importante mencionar que este algoritmo, puede ser utilizado si mas de un
dispositivo esta causando que el bus se cuelgue.

S-ar putea să vă placă și