Duda con I2C y su consumo al cambiar de driver.

Hola compañeros, que tal, tengo la siguiente duda con respecto a I2C tal vez sea un poco tonta pero estoy empezando con esto :(, gracias de antemano por sus respuestas.

La duda es la siguiente, lo que pasa es que tengo un Master y un Slave en el bus como se muestra en la siguiente imagen (algo sencillo):
1598741103861.png
En este caso tengo una resistencia de pull up de 5k Ohms que va a un voltaje de 3.3 Volts, y en el lado del Slave tengo una resistencia en serie de 33 Ohms.
Mi duda es al momento de cambiar de driver, en este caso de Master a Slave, cuando el Slave toma control del Bus, en los puntos marcados como azul y rojo estoy viendo una caída de voltaje de 800 mV por aproximadamente 4us (aqui es donde el Slave toma el bus), entonces me comentaron que aqui tendria un lapso donde la corriente sube a 24mA cosa que se me hizo extraño puesto que la resistencia de pull up esta limitando dicha corriente que seria como 600 uA aproximadamente, tal como se mira en la siguiente imagen (disculpen aquí, no tengo captura del osciloscopio).

1598744154000.png
La señal azul corresponde al punto antes de la resistencia y la roja al punto despues de la resistencia en serie al Slave.
Si me pudieran orientar a resolver mis dudas, serian:

La corriente que circula por el bus esta limitada directamente por el pull up, ¿correcto? En este caso no estaría tomando más de 660 uA?

Por otro lado aquí me dejaron la duda que al tener la resistencia de serie un voltaje de 0.8 V. Entonces ¿se puede asumir que la corriente seria de aproximadamente 24 mA?

¿Qué puede estar ocasionando el step de 4 us que se mira en la señal al momento de que el Slave toma el bus?

Disculpen si son preguntas algo tontas, espero me puedan ayudar, muchas gracias de antemano!
 
Pensá que los elementos activos como un CMOS tienen un cierto "capacitor parásito" en sus entradas/salidas.

Eso que ves, es la descarga de ese capacitor por esa resistencia de 33Ohms, si esa resistencia fuera mayor, la descarga sería más lenta.

Normalmente en buses de muy alta frecuencia, los fabricantes suelen recomendar poner una resistencia baja en serie para bajar el overshoot en los cambios de estado y evitar posibles daños/errores. La verdad en un I2C no recuerdo haber visto la necesidad de poner una resistencia en serie, salvo cuando se hacen chanchadas para cambiar el nivel de tensión. ¿El fabricante te recomienda esos 33Ohms?
 
Gracias por la ayuda.

Si, esos 33 Ohms son recomendados (es un must) puesto que puedo tener niveles de overshoot de acuerdo a cuantos dispositivos le cuelgo al bus, cabe decir que el Master es el que me suele dar el overshoot al drivear el bus, por ello la resistencia para proteger un poco al Slave/s.

Lo que más me preocupa es la corriente que pueda estar viendo esa resistencia, ya que el Master esta limitado a dar 3 mA, entonces mi duda recae en cuanta corriente estaría viendo al momento de drivear el Slave, ¿es la que está limitando el pull up? ¿qué sería de aprox. 660 uA?

o sería como me comentaron de 24 mA, al tener en la resistencia la caída de voltaje de 800 mV? ( <= esto es lo que me confunde)
 
El pulso ese de 4uS asumo que tiene la forma de descarga de un capacitor (o sea, no es cuadrada). Siguiendo con ese razonamiento, esa corriente proviene de la descarga de la capacidad parásita de la línea SDA (propia del master o del master más otros esclavos) al momento de drenar a través de la resistencia de 33Ohms por el esclavo en análisis. Si no tuvieras esa resistencia, la descarga sería casi un corto a masa.

Ahora bien, eso no implica que la corriente la suministra la salida/entrada del master (u otros esclavos), sino que al ser un efecto capacitivo parásito de la línea, durante el estado alto acumuló carga de la fuente de 3,3v y en el momento del estado bajo, se descarga.

A groso modo, deberías pensar las salidas/entradas de los dispositivos I2C como un transistor colector abierto cuando se encuentran en alta impedancia (o drain abierto si pensamos en mosfet).

Resumiendo, no te preocupes, ese pico de corriente no lo sumistra el master. Lo que si debería preocuparte en todo caso, es que el esclavo pueda drenar esa corriente sin tener problemas.
 
Que tal, gracias por tomarte el tiempo para contestar.
El pulso de los 4 uS, tiene tal cual la forma cuadrada como la dibujé, no tiene curva de descarga capacitiva, tal cual se ve una un voltaje de 800 mV en el resistor de 33 Ohms, por ello se me hace extraño tener ese escalón, tal cual pareciera que por alguna razón que desconozco mira una resistencia mas alta para tener ese voltaje en la resistencia, es donde me siento confundido,
 
Entonces si que es raro, es como si el master no estuviera en alta impedancia al momento de no tener el control sobre la línea.

¿Te aseguraste que el puerto del master no tenga un pull-up? ¿Qué componentes son el master y el slave?
 
Justamente estaba pensando en el pull-up interno que pueda tener el Master, tal vez esté mal configurado (creo que va a ir por aquí), por lo pronto creo que verificaré que no lo tenga activada para asegurarnos que la configuración del GPIO Master sea la correcta, gracias por el input!
 
La velocidad trabajada es a Standard-Mode (100 KHz ) si bien recuerdo, también probando a Fast-Mode (400 KHz), por otro lado la linea, no recuerdo el largo, pero estamos asegurando tener una carga capacitiva de linea inferior a 400 pF.
 
Atrás
Arriba