I2C es un colector abierto. Lo que eso significa es que utiliza un transistor npn para tirar de la línea de abierto (apagado), a tierra (encendido). Se utiliza un pull up para permitir la variación del voltaje en el que trabaja el bus. La resistencia de sus pull-ups cambia a diferentes velocidades y tamaño de bus y distancia de cable porque confía en la capacitancia del bus y el valor de la resistencia para cambiar el estado del bus. Es una red RC y los cambios de tiempo a medida que cambia la frecuencia. Si su resistencia es demasiado débil, no puede cambiar la señal lo suficientemente rápido a las velocidades i2c más altas. Si es demasiado fuerte, entonces sucede lo mismo y no puede colocar todos los dispositivos en el bus que desea.
La razón por la que no se usan las bajadas es porque una señal con referencia a tierra es más fácil que una señal con referencia a VCC, si desea poder usar voltajes arbitrarios en el bus independiente de VCC. Un transistor PNP de lado alto necesita una tensión de base cercana al voltaje del colector, lo que lo hace más difícil en comparación con el controlador NPN del lado bajo.