Estoy tratando de implementar el protocolo ISO 7816-3 como se puede encontrar en el EMV Co. Libro 1 utilizando un ESP32 y MicroPython. Sin embargo, me di cuenta de que el estado por defecto de la línea de E/S es HIGH, y sólo hay un único pin de E/S, que es de dos vías.
Entonces, si ambos lados están escuchando, y enviando una señal ALTA, ¿cómo se supone que cualquiera de los lados detecte una señal BAJA? Si uno de los dos cambia la línea de HIGH a LOW, todavía habrá 5v suministrados a la línea por la parte que escucha.
Al ser un protocolo semidúplex, ¿se supone que cada parte sólo emite altos en ciclos alternos? ¿O la idea es detectar un flujo de corriente?
Me parece que la respuesta a esto es en realidad bastante sencilla y que me estoy perdiendo algo, posiblemente algún detalle de implementación de hardware que desconozco, pero no he podido encontrar la respuesta en los requisitos de la interfaz.
3 votos
La señal se eleva mediante una resistencia de pull-up. Cada dispositivo puede tirar de la señal baja mediante el uso de drenaje abierto o transistor de colector abierto.
2 votos
@MarkoBuršic ¡Muchas gracias! Nunca había oído hablar de este método de dos vías de un solo cable; con un poco de investigación en la documentación MicroPython pude establecer el pin de E / S a drenaje abierto, y resolver el problema.