Con el advenimiento de los microcontroladores de 3.3V se presentaba un problema con el bus I2C, este radicaba en que , a diferencia de otros protocolos de comunicación como ser SPI, las líneas del bus I2C son bidireccionales lo cual hace que si el dispositivo alimentado con 3.3V no posee entradas tolerantes a los 5V era complicado unificar criterios en microcontroladores o periféricos I2C con diferentes niveles de tensión.

Para los que entiendan el idioma sajón pueden ver el artículo en su lenguaje original dado que lo que sigue a continuación no es más que una traducción resumida y libre de la nota de aplicación de Philips Semiconductors denominada AN97055 y algún que otro bocadillo mío.

NIVELES LOGICOS DEL BUS I2C

El bus I2C especifica dos tipos de niveles lógicos:

a – De niveles fijos.
b – De niveles dependientes de la tensión de alimentación.

NIVELES FIJOS

Orientado para dispositivos que no son CMOS con niveles de tensión superiores a los 5V. Los niveles de I/O especificados son los siguientes:

Estado BAJO de entrada [VIL]: mínimo -0.5V máximo 1.5V.
Estado ALTO de entrada [VIH]: mínimo 3V máximo VDDmax + 0.5V.

Estado BAJO de salida [VOL]: mínimo 0V máximo 0.4V.
Estado ALTO de salida [VOH]: salida a colector abierto, determinada por VDD via resistor de pull-up.

NIVELES DEPENDIENTES DE LA TENSION DE ALIMENTACION

Orientado para dispositivos CMOS con niveles de tensión de 5V o inferiores. Los niveles de I/O especificados son los siguientes:

Estado BAJO de entrada [VIL]: mínimo -0.5V máximo 0.3VDD.
Estado ALTO de entrada [VIH]: mínimo 0.7VDD máximo VDDmax + 0.5V.

Estado BAJO de salida [VOL]: mínimo 0V máximo 0.4V.
Estado ALTO de salida [VOH]: salida a colector abierto, determinada por VDD via resistor de pull-up.

Los niveles lógicos del bus dependeran de las resistencias de pull-up conectadas a VDD, corrientes de fuga y, en caso de existir, las resistencias en serie con las I/O de los dipositvos conectados a él. Dichos valores deben ser seleccionados de manera tal que duralte el estado LOW del bus haya presente un mínimo de ruido igual a 0.1VDD y en el estado HIGH de 0.2VDD.

ADAPTADOR DE NIVELES BIDIRECCIONAL

A continuación vemos el esquema propuesto para adaptar dos secciones de un bus con diferentes niveles de tensión:

La sección izquierda posee resistores de pull-up y los dispositivos que van conectados a 3.3V, mientras que la sección derecha es la dedicada a los dispositivos de 5V. El adaptador es idéntico para ambas líneas del bus y consiste en un par de MOS-FET de canal N; las puertas van conectadas a la menor de las tensiones ( 3.3V ), las fuentes a la seccion de “bajo voltaje” del bus y los drenajes a la sección de “alto voltaje”.

COMO FUNCIONA

  • Caso 1: ningún dispositivo esta bajando el bus de la sección de “bajo voltaje” por lo tanto este se encontrará en estado ALTO a causa de los resistores de pull-up RP1 y RP2, la puerta y fuente de los MOS-FET se encontrarán a 3.3V por lo que su Vgs será inferior al umbral y los MOS-FET no conducirán. Esto permitirá que las lineas del bus de la sección de “alto voltaje” permanezcan en estado ALTO debido a sus resistencias de pull-up RP3 y RP4 y de ese modo ambas secciones se encontrarán en estado ALTO pero a diferentes niveles de tensión.
  • Caso2: Un dispositivo de 3.3V lleva el bus a un estado BAJO entonces la fuente del MOS-FET se hace baja mientras que la puerta permanece a 3.3V; la Vgs crece por arriba del umbral de disparo haciendo que el MOS-FET conduzca, de ese modo el bus de la seccion de “alto voltaje” se hace BAJO debido al estado BAJO de la sección de 3.3V y debido a la conducción del MOS-FET.
  • Caso3: Un dispositivo de 5V lleva el bus a un estado BAJO, la sección de “bajo voltaje” en primer instancia bajará vía el diodo drenaje-sustrato interno del MOS-FET hasta que la Vgs supere el valor de umbral y conduzca el MOS-FET con lo cual la línea del bus de la sección de “bajo voltaje” pasará a un estado BAJO vía la conducción del MOS-FET.

Los 3 casos enumerados muestran que los niveles lógicos son transferidos en ambas direcciones del bus; en el caso 2 y 3 se realiza una función “wired AND” entre ambas líneas del bus tal como lo requieren las especificaciones del I2C.

Se pueden utilizar otros niveles de tensión aparte de los enumerados siempre que la sección izquierda del circuito sea la de menor voltaje; la maxima tensión no es crítica en tanto y en cuanto el MOS-FET pueda manejarla pero debe tenerse en cuenta que a mayor tensión mas lenta será la caída de tension o “falling edge” debido a que toma mas tiempo descargar el bus. La menor tensión que se podrá utilizar vendrá dada por la tensión de umbral del MOS-FET o Vgs(th).

Una característica adicional de este circuito es la aislación de la sección de “bajo voltaje” cuando la tensión de 3.3V es desconectada, en este caso la tensión se hará de 0V y los MOS-FET serán desconectados debido a que la Vgs permanecerá por debajo de la tensión de umbral; la sección de “alto voltaje” no se verá afectada y permanecerá operacional.

MODIFICACION DEL CIRCUITO

Si fuese necesario también aislar la sección de “alto voltaje” cuando la tensión se desconecta, entonces deberá utilizarse el siguiente circuito:

En este caso si la tensión de 5V es deconectada la sección se aislará del resto del bus debido a los transistores Q3 y Q4; la sección de “bajo voltaje” será también aislada en caso de desconectar los 3.3V igual que en el caso anterior pero ahora independiente de los 5V.

Debido a que este circuito es simétrico las secciones de “alto voltaje” y “bajo voltaje” pueden elegirse arbitrariamente tanto en la parte izquierda como a la derecha del circuito.

CONSIDERACIONES A TENER EN CUENTA PARA LOS MOS-FET

  • Tipo: Canal N
  • Umbral de puerta [Vgs(th)]: mínimo 0.1V, máximo 2V.
  • Resistencia en conducción [RDS(on)]: máximo 100Ω @ ID= 3mA, VGS= 2.5V.
  • Capacidad de entrada [Ciss]: máximo 100pF @ VDS = 1V, VGS = 0V.
  • Tiempos de conmutación [ton toff]: máximo 50 ns.
  • Corriente de drenaje [ID]: 10mA o superior.
Descargar:
PDF 473 KB