Erkennen Sie ein LOW-Signal in einer bidirektionalen IO-Leitung, die im Leerlauf HIGH ist

Ich versuche, das ISO 7816-3-Protokoll zu implementieren, wie es in EMV Co. Book 1 mit einem ESP32 und MicroPython zu finden ist. Mir ist jedoch aufgefallen, dass der Standardzustand der E / A-Leitung HIGH ist und es nur einen einzigen E / A-Pin gibt, der bidirektional ist.

Wenn also beide Seiten zuhören und ein HIGH-Signal senden, wie soll dann jede Seite ein LOW-Signal erkennen? Wenn einer der beiden die Leitung von HIGH auf LOW schaltet, werden immer noch 5 V von der hörenden Partei an die Leitung geliefert.

Da es sich um ein Halbduplex-Protokoll handelt, soll jede Partei nur in abwechselnden Zyklen hoch ausgeben? Oder ist die Idee, einen Stromfluss zu erkennen?

Ich habe das Gefühl, dass die Antwort darauf eigentlich ganz einfach ist, und mir fehlt etwas, möglicherweise ein Detail der Hardwareimplementierung, das mir nicht bekannt ist, aber ich konnte die Antwort in den Schnittstellenanforderungen nicht finden.

Das Signal wird über einen Pullup-Widerstand hochgezogen. Jedes Gerät kann das Signal durch Verwendung eines Open-Drain- oder Open-Collector-Transistors auf Low ziehen.
@MarkoBuršič Vielen Dank! Ich hatte noch nie von dieser Single-Wire-Zwei-Wege-Methode gehört; Mit ein wenig Graben in der MicroPython-Dokumentation konnte ich den E / A-Pin auf Open Drain setzen und das Problem lösen.

Antworten (2)

Die Leitungen werden von der Schnittstellenschaltung hochgezogen. Die Chipkarte oder der Sender können die Leitung auf Low ziehen, wenn sie senden wollen. Siehe Seite 11 dieses Datenblatts: https://www.analog.com/en/products/ltc1755.html

Die Leitung ist "standardmäßig" hoch, auch bekannt als Pull-up-Widerstand, der die Leitung hochzieht.

So kann der Sender/Empfänger die Leitung auf Low ziehen, wenn er LOW ausgeben muss.

Implementierungsbeispiel von I2C (TWI):

hochziehenBild von hier

Wenn Sie bei einem solchen System keine externen Widerstände sehen, bedeutet dies, dass die MCUs interne Pull-up-Widerstände an ihren eigenen GPIOs aktivieren können und externe Widerstände nicht erforderlich sind.