Hay un punto específico de importancia aquí: la naturaleza misma de I 2 C como un bus (y quizás el solo bus) específicamente diseñado para permitir cero fugas con Una o más fichas en el bus apagadas. I 2 C logra esto al ser un colector abierto y un colector abierto significa que nada extrae los datos líneas altas dentro de un IC compatible. Pero, por desgracia, un pin de E / S digital genérico en un microcontrolador o en cualquier lugar, que se pueda conducir alto o bajo, no puede satisfacer esta condición.
Un pin digital push-pull tiene un controlador de lado alto de canal P y estructuras de protección conectadas al riel de la fuente de alimentación, lo que significa que ese pin siempre perderá corriente hacia el riel de la fuente de alimentación si el voltaje de ese riel es menor que la tensión en el pin, menos la tensión directa de un diodo. Dichos pines tienen una condición V I, MAX de V CC +0.6 voltios o tal como se indica en la hoja de datos. ¿Se puede verificar si la hoja de datos establece tal condición para los pines? Si lo hace, a la inversa, significa que el mínimo para V CC en dicho IC es el voltaje del bus C I 2 menos 0,6 voltios.
Como consecuencia, el microcontrolador puede tener un puerto de estilo I2C (que no está certificado por I 2 C), o usar pines de E / S genéricos para comunicarse con I 2 dispositivos C, pero solo es lógicamente compatible con I 2 C cuando el microcontrolador está encendido. Los dispositivos que cumplen con I 2 C deben usar almohadillas IO específicas para las señales I 2 C y no pueden tener el controlador del lado alto, y sospecho que cualquier tipo de pull-ups sería al menos problemático.
Si desea aprovechar las propiedades de reducción de cero pérdidas de I 2 C, debe usar solo puertos específicos I 2 C o convertir un pin IO genérico en un colector abierto (o desagüe abierto), disposición de estilo de alguna manera, cortando todos los caminos actuales al lado alto. Me parece que si tuviera una señal de voltaje lo suficientemente más alta que su voltaje de bus I 2 C de 1.8 voltios (3 voltios o más), podría usar NFETs (canal n, mejora -tipo Mosfet, el tipo 'normal') para "cortar" las líneas SCL y SDL cuando el SoC no tiene energía. Conectaría los NFET con la fuente hacia el SoC, drene hacia el bus y la compuerta a una señal de habilitación de 3 voltios. Elija un NFET con un voltaje de umbral suficientemente bajo para que el canal esté conduciendo con seguridad cuando la señal esté a 1.8 voltios. Por lo tanto, a lo sumo 1.2 voltios si su señal de habilitación es de 3 voltios.
simular este circuito : esquema creado usando CircuitLab