Desagüe abierto en I2C

0

En I2C, ¿por qué SCK y SDA deberían ser de drenaje abierto? Lo que sucederá si no están abiertos de desagüe. Estoy tratando de implementar la comunicación I2C usando bit banging. ¿Debo habilitar los circuitos de drenaje abierto de los pines GPIO para SCk y SDA? Estoy preguntando que esto puede ser porque no sé acerca de la lógica de drenaje abierto.

    
pregunta xyz101

2 respuestas

3

I²C no es un protocolo estricto de maestro / esclavo (aunque su circuito podría usarlo de esta manera), pero permite múltiples maestros y permite a los esclavos retrasar las transacciones por estiramiento de reloj.

Esto significa que varios dispositivos pueden conducir la misma línea de señal al mismo tiempo. Y si dos dispositivos intentan manejar niveles diferentes, el resultado sería una contención de bus, que no solo haría que el nivel real no estuviera definido, sino que también formaría un corto entre V CC y GND, que podría quemar el Transistores de salida de estos dispositivos.

En un sistema de drenaje abierto, si un dispositivo baja el bus mientras otro lo deja flotar alto, el resultado es una señal baja. Esto es utilizado por el protocolo I²C para detectar conflictos en un sistema multi-maestro, y para permitir que el maestro detecte cuando un esclavo detiene el reloj para retrasarlo.

Si solo tiene un maestro principal, y si sus esclavos no admiten el alargamiento del reloj, puede usar una salida de empujar / tirar para la línea del reloj. Pero la línea de datos está escrita y leída en la misma transacción, por lo que nunca debe conducirla al alto nivel.

    
respondido por el CL.
2

Se requiere el uso de salidas op de drenaje abierto en dispositivos I2C para evitar la contención del bus. Cualquier dispositivo debe poder tratar de transmitir en cualquier momento sin el riesgo de dañarse a sí mismo oa otras partes. Otro requisito es la resistencia externa de pull-up (típicamente 4.7k). Un dispositivo verificará que la línea de datos esté alta antes de usar el bus. Si dos dispositivos más intentan transmitir haciendo salidas de la línea de datos, pero ambos son de drenaje abierto, no pueden producirse daños, solo datos incorrectos.

    
respondido por el AngeloQ

Lea otras preguntas en las etiquetas