El colector abierto agrega inconvenientes como la necesidad de una resistencia de pull-up externa y ralentiza el rendimiento. ¿Por qué los diseñadores de I2C eligieron usar colector abierto / drenaje abierto?
El colector abierto agrega inconvenientes como la necesidad de una resistencia de pull-up externa y ralentiza el rendimiento. ¿Por qué los diseñadores de I2C eligieron usar colector abierto / drenaje abierto?
El drenaje abierto permite que haya múltiples maestros en el mismo bus. Si dos maestros intentan transmitir al mismo tiempo con los controladores push-pull, pueden dañarse entre sí, e incluso si no lo hacen, es difícil saber qué maestro ganará. El drenaje abierto actúa como un "cableado Y", lo que facilita compartir la línea y arbitrar las colisiones. CAN hace algo similar, aunque la capa física es diferencial en lugar de un solo extremo.
En particular, en I2C, el drenaje abierto permite que el receptor alargue el reloj manteniéndolo bajo cuando el receptor necesita más tiempo para procesar los datos. Si se trata de un error o una característica es cuestión de opinión.
El uso del colector abierto le da al bus mucha flexibilidad, también se requiere porque el bus es bidireccional en un solo cable. Por ejemplo, imagine si cada dispositivo tiene un pullup interno de 10K ohms. Si hay dos dispositivos, entonces solo hay 5K ohmios en el bus y los controladores internos no tienen ningún problema para bajar las líneas para hablar. Si el bus se expandió a 255 dispositivos (I2C puede admitirlo fácilmente), el bus ahora tiene un pullup de 39 ohmios y todos los dispositivos tienen problemas para desconectar las líneas. Al tener pllups externos, tiene la opción de elegir qué valores utilizar y dónde colocarlos.
Lea otras preguntas en las etiquetas i2c open-drain open-collector