Colectores abiertos y 74LVC245

Estoy tratando de conectar un teclado PS/2 a un MSP430 para un juguete. El teclado PS/2 funciona con 5 V, pero el microcontrolador MSP430 funciona con 3,3 V. Así que tengo un cambiador de nivel 74LVC245 para convertir entre los dos.

Ahora que tengo esto, sin embargo, he descubierto que la interfaz del teclado PS/2 usa señales de colector abierto, por lo que pueden ser manejadas desde cualquier extremo, y aparentemente usar un 74LVC245 con estas es complicado. Esta es la primera vez que me encuentro con algo así; Soy principalmente un tipo de software.

No estoy interesado en enviar comandos AL teclado, solo en recibir comandos DESDE el teclado, por lo que nunca necesito controlar las líneas de datos y reloj desde el extremo del microcontrolador. ¿Es suficiente simplemente vincular las señales del teclado a Vcc a través de una resistencia pullup (grande), de modo que permanezcan altas cuando el teclado no las esté impulsando (esto es requerido por el protocolo; si no son altas, el teclado no lo hará) enviar). Pero esto significa que cuando el teclado intenta bajar las líneas, está conduciendo contra la resistencia, y no sé cuáles son las implicaciones de esto. Y no sé si el 74LVC245 tiene sus propias resistencias pullup/pulldown en las entradas.

¿Es esta una buena idea? Si no es así, ¿por qué, y hay alguna forma en que pueda hacer que esto funcione sin tener que construir un circuito de controlador adecuado con resistencias?

La hoja de datos 74LVC245 está aquí, como referencia: http://www.adafruit.com/datasheets/sn74lvc245a.pdf

Si solo está interesado en las salidas del teclado y son de colector abierto, puede usar una resistencia pull-up unida al riel de 3.3 V y conectar las salidas del teclado directamente a las entradas del microcontrolador. No necesitará el 74LVC245.
Fuera de tema, pero ¿tiene un enlace a buena información sobre cómo trabajar con el protocolo PS/2 con un micro? Ya desperdicié muchos fines de semana en eso...
@Camil: toneladas. En este momento estoy mirando kbdbabel.org , que incluso tiene una fuente de convertidor de protocolo para el 8051. También hay preguntas frecuentes sobre teclados de PC en ilkerf.tripod.com/c64tower/F_Keyboard_FAQ.html .
@m.Alin Bah, desearía haberlo sabido antes. Solo para verificar dos veces: ¿es eso completamente seguro, dado que no puedo manejar una entrada de microcontrolador por encima de 3.6V y el teclado funciona a 5V?
No quiero desanimarlo, pero todas mis experiencias con teclados y ratones PS/2 requerían tráfico bidireccional para que los dispositivos se inicializaran correctamente. Espero que me demuestres que estoy equivocado.
@DavidGiven Siempre que las salidas del teclado sean realmente colectores abiertos y lleve la salida alta al riel de 3.3 V a través de una resistencia de 10 kOhm, entonces debería ser seguro. Cuando la salida del kb está inactiva, la salida sería tirada por la resistencia a 3,3 V; cuando la salida del kb está activa, llevará la salida a 0 V
Ponerlo en placa (¡sin el microcontrolador enchufado!) muestra que con una resistencia pull-up de 12k (la más cercana que pude encontrar), el voltaje en el reloj y los pines de datos es un poco más de 4V. Así que sospecho que el teclado no es un colector tan abierto como podría ser. De todos modos, gracias, eso es útil; si lo escribes como respuesta, te votaré ...

Respuestas (1)

Esto es solo un pensamiento de $0.02 y no necesariamente una respuesta.

El cambio de nivel de una señal de colector abierto bidireccional a veces se realiza en el bus I 2 C. Hay circuitos integrados de cambio de nivel especializados para I 2 C, como PCA9306, que podría intentar adoptar para PS/2. Hay otro método, donde el cambio de nivel se realiza con un MOSFET conectado así

ingrese la descripción de la imagen aquí

Esta imagen muestra el cambio de nivel de 2 líneas separadas (obviamente). Más detalles en esta nota de aplicación de Philips (ahora NXP).

¡Sí, y ojalá hubiera comprado uno! Dado que parece que he decidido trabajar con microcontroladores de 3.3V en un mundo donde el homebrew está diseñado alrededor de 5V ( tos Arduino tos ), sería una buena inversión.
@DavidGiven Hay muchos periféricos buenos pero intolerantes a 5V. Habría tenido que lidiar con el cambio de nivel también, si hubiera elegido un controlador de 5V.
@DavidGiven Por cierto, ¿qué entorno de desarrollo está utilizando para MSP430?
mspgcc y mspdebug, aunque el proyecto actual está en ensamblado. Es un placer trabajar en el ensamblaje de MSP430 (aunque tiene su selección habitual de rarezas).