Abra Drain mientras transmite datos con salida de dirección de puerto

0

¡Soy nuevo en este portal de información!

Sin embargo, tengo una pregunta sobre el drenaje abierto.

Leí que, en el modo de drenaje abierto, ninguno de los dispositivos (esclavo / maestro) tiene permiso para conducir la línea de datos ALTA, solo puede conducir la línea baja, de lo contrario puede haber casos en que pueda dañar el controlador, ya que puede provocar un cortocircuito del circuito. Entonces, para hacer esto, cuando el Maestro tiene que leer los datos que se transmiten desde el esclavo, cambia el modo al modo HiZ y cambia la dirección a la entrada.

Pero mi consulta es, digamos, el maestro tiene que transmitir los datos (es decir, los datos son 0xA5A5) en la línea de datos que también es compartida por el esclavo. En tal caso, causará algún problema si el modo ya está en HiZ, la dirección del puerto como salida para transmitir datos 0xA5A5. (Es decir, mientras se transmite el maestro 0xA5A5, la línea también se activa cuando se encuentra en el modo HiZ). De modo que cuando el Maestro tiene que leer los datos, entonces no tiene que cambiar el modo ni el cambio de dirección, ya que está en el modo HiZ, por lo que el esclavo puede reducir la línea.

simular este circuito : esquema creado usando CircuitLab

Gracias

    
pregunta user180742

2 respuestas

1

Cuando un chip maneja una línea, obliga a la línea a tener un voltaje específico al hacer una conexión directa entre el pin de salida y ese voltaje (en su caso, ya sea 5 V o tierra).

Cuando un pin está en modo HiZ, el pin no está conectado a ningún voltaje, y el voltaje de la línea está determinado por algún otro chip que impulsa la línea, o por la resistencia de pull-up.

El siguiente esquema muestra cómo se podría implementar el chip. Cuando el interruptor está cerrado, el chip hace bajar la línea y cuando el interruptor está abierto, el pin está en modo HiZ. (En realidad, el interruptor es un transistor).

simular este circuito : esquema creado usando CircuitLab

Por lo tanto, no es posible emitir nada en modo HiZ; en el modo HiZ, el chip no (y no puede) afecta el voltaje de la línea.

    
respondido por el CL.
0

Es esencialmente correcto al entender que la señalización bidireccional de drenaje abierto funciona al hacer que los dispositivos en cada extremo se muevan activamente solo en la dirección baja, y confíe en algo como una resistencia de pull-up para establecer un estado predeterminado alto de lo contrario.

Su pregunta parece ser sobre qué pasaría si un dispositivo maestro "engaña" y dirige la línea en ambas direcciones durante un tiempo en que el protocolo dice que el dispositivo maestro debería estar transmitiendo: esto puede funcionar o puede causar colisiones en el bus. .

Muchos esquemas de drenaje abierto, como el I2C, hacen un uso fundamental de la forma en que la conexión eléctrica permite a cualquiera de las partes mantener la línea baja. Por ejemplo, cuando un maestro I2C está hablando, un esclavo puede mantener baja la línea del reloj para forzar el retraso; se supone que el maestro ve esto, y espera a que el esclavo suelte el reloj. Su hipotético conductor bidireccional no podría ver este comportamiento del esclavo, y en su lugar intentaría tirar de la línea hacia arriba mientras el esclavo intentaba mantenerlo bajo, lo que provocaría una contención eléctrica en el bus y probablemente un fallo de la transferencia.

Sin embargo, existe una técnica relacionada que puede funcionar. Algunos pines MCU GPIO no pueden configurarse para una operación de drenaje abierto. Por lo tanto, un truco alternativo es configurar su bit de registro de datos a un "bajo" y señalizarlo manipulando el control de dirección en lugar del valor de : para indicar un drenaje de baja apertura el pin se hace una salida (conducción baja) y para indicar un alto se hace una entrada . Esto funciona, y también permite controlar el estado del bus mientras se libera al máximo, para ver si alguna otra parte lo mantiene bajo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas