Anschluss einer PS/2-Tastatur an 3,3-V-Eingänge

Ich hatte wunderbare Erfolge mit meinem neuen Mojo FPGA, also beschloss ich, etwas Schwierigeres zu versuchen, nämlich eine Schnittstelle mit einer PS/2-Tastatur, aber ich bekomme es nicht zum Laufen. Natürlich habe ich die richtigen Vorkehrungen getroffen, um von 5-V-Signalen auf 3,3-V-Signale zu wechseln (ich versuche derzeit nicht, die Leitungen zu treiben, lese nur davon ab), aber mein einfacher Ansatz, ein Spannungsteiler (sicher, aber nicht immer angemessen ) nicht zum gewünschten Ergebnis geführt. Ich glaube, das liegt daran, dass die Leitungen auf der Tastatur Open Collector sind und einen niedrigen Zustand und einen hohen Impedanzzustand haben. Mir fallen Möglichkeiten ein, dieses Problem möglicherweise zu lösen, aber ich hätte gerne eine zweite Stimme zu diesem Thema. Mein wichtigstes Designziel ist Einfachheit, daher werden Lösungen mit diskreten Komponenten wie Transistoren Lösungen mit ICs wie Operationsverstärkern vorgezogen.

Ist Ihnen bewusst, dass der Host-Computer einen Handshake mit der Tastatur startet, bevor etwas gesendet wird? Ich habe in der Vergangenheit versucht, eine Maus dazu zu bringen, mit einem Mikrocontroller zu sprechen, und sie sendet einfach keine Daten, bis der Host-Prozessor die Maus initialisiert hat.
Der Handshake wird nur für Mäuse verwendet. Solche Kommunikationen mit der Tastatur sind optional.
OK, war mir diesbezüglich kein Unterschied zwischen Maus und Tastatur bewusst.

Antworten (1)

Ich bezweifle, dass das funktionieren wird. Die Ausgangstransistoren auf der 5V-Tastatur haben wahrscheinlich einen v C E das ist zu hoch, um als logisch niedrig am 3,3-V-FPGA-Pin registriert zu werden. Da Sie keine Datenblätter gepostet haben und wahrscheinlich sowieso nichts über die Ausgangstransistoren der Tastatur wissen, ist dies wahrscheinlich der einfachste Weg, um zu sehen, ob es funktioniert.

Da die Ausgänge Open Collector sind, ist die Implementierung jedoch einfach.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ziehen Sie sie zum Starten mit einem 10k-Widerstand auf 3,3 V hoch. Wenn Sie Probleme mit der Kommunikation haben, verringern Sie den Pull-up-Wert. R2 ist ein Strombegrenzungswiderstand zum Schutz des Pins. Wenn es versehentlich als Ausgang konfiguriert wird, werden Sie froh sein, dass es da ist. C1 ist da, um ein Über- und Unterschwingen zu verhindern und den Stift zu schützen. Es ist optional, und wenn Sie sich dafür entscheiden, müssen Sie sehr vorsichtig sein. Beim Übergang von Low nach High muss es über den Pullup- und Strombegrenzungswiderstand aufgeladen werden. Diese Anstiegszeit muss ausreichend kurz sein, damit sie nicht dazu führt, dass das Timing des Kommunikationsprotokolls verletzt wird. Beim Übergang von hoch nach niedrig, wenn der Transistor einschaltet, entlädt er sich über R2. Diese Abfallzeit wird kürzer sein, also gibt es dort kein Problem.

Mit funktioniert wie ein Zauberspruch meine ich natürlich, dass ich Signale vom Keyboard zum Mojo bekommen kann, alles danach ist immer noch total kaputt.
Ich hatte genau das gleiche Problem. Sehr hilfreich, aber eine Sache, über die ich keine Informationen finden konnte, ist, ob die KB einen eigenen 5-V-Pullup-Widerstand hat. In diesem Fall könnte das obige Design das FPGA beschädigen. Ich habe mein eigenes PS/2 KB gemessen und festgestellt, dass es tatsächlich einen 2,3-kΩ-Pull-up-Widerstand gegen 5 V hat; Wenn Sie also einen 10-kΩ-Pull-up auf 3,3 V verwenden, wird der FPGA-Pin etwa 4,68 V ausgesetzt. Wenn Sie einen 1-kΩ-Pullup auf 3,3 V verwenden, wird der FPGA-Pin etwa 3,82 V ausgesetzt (was unter dem Maximum von 4,1 V liegt). Das mag sicher sein, aber es ist immer noch riskant. Es sei denn, der Kondensator soll das verhindern; Ich bin mir wirklich nicht sicher, wofür es da ist.
Von den PS/2-Mäusen in meiner Sammlung scheinen sie einen internen Pullup auf +5 Volt zu haben. Als Warnung für alle, die eine PS/2-Maus an ihr FPGA anschließen möchten. Während Tastaturen dem Open-Collector zu entsprechen scheinen, scheinen viele, wenn nicht alle Mäuse dies nicht zu sein. Ich würde empfehlen, die Daten- und Taktspannungen aller Geräte zu überprüfen, bevor Sie davon ausgehen, dass sie Open-Collector sind.