USB de un solo cable

4

Quería convertir una señal diferencial USB en una señal, y luego enviarla a través de un cable, y luego restaurar en señales diferenciales en el otro extremo. Quería hacer esto para un teclado USB 1.1 que se ejecuta a baja velocidad, que se especifica a 1.5Mbps (en mi alcance se parece más a 150kbps).

Obviamente quiero que esto vaya en ambas direcciones, pero como USB, no al mismo tiempo. Wikipedia dice que las señales diferenciales de USB suelen ser opuestas, como 3.3V / 0V o 0V / 3.3V o 0V / 0V, pero nunca 3.3V / 3.3V. Pensé en un amplificador de instrumentación para enviar, y un ADC para recibir. ¿Es esto razonable o lo estoy haciendo al revés?

    
pregunta BSEE

3 respuestas

12

El USB transmite datos como una señal diferencial, pero las reglas diferenciales se rompen para crear señales de trama. Parte del protocolo especifica qué hacer con esas combinaciones de niveles.

  • 3.3V / 3.3V: indica que se eliminó el dispositivo.
  • 0V / 3.3V - Dispositivo de baja velocidad
  • 3.3V / 0V - Dispositivo de velocidad completa
  • 0V / 0V - Un solo finalizó cero, marca el final del fotograma o, si se mantiene el tiempo suficiente, se reinicia un dispositivo.
  • 3.3V / 0V y 0V / 3.3V también representan "J" y "K" mientras se transmiten datos reales.

Por lo tanto, su plan de alguna manera tendría que indicar el otro extremo cuando se produzcan estas condiciones. Tal vez utilice más de dos niveles de voltaje en su segmento analógico.

Haz todo lo correcto y las restricciones de tiempo del USB probablemente lo arruinarán para ti.

    
respondido por el gbarry
3

Tratar de hacer esto para USB en general probablemente no sea sensato, es bastante complicado y mucho más complicado de lo necesario para lograr el objetivo establecido.

Sería mejor crear un esquema personalizado para transmitir datos del teclado y luego volver a convertirlo en USB en un dongle que se conecta a la PC. (Por supuesto, puede comprar un teclado inalámbrico disponible en el mercado, a menos que esté fuera por razones de confiabilidad, interferencia o seguridad).

Sería más fácil construir el proyecto si obtiene un teclado de interfaz PS / 2 heredado, ya que la interfaz síncrona se puede administrar desde casi cualquier microcontrolador. Sin embargo, también puede alojar un teclado USB desde una MCU. He tenido un poco de suerte con la serie KL25Z en PCB personalizados, así como con la versión del "tablero de la libertad" de Kinetis, y también con STM32F4 en las placas personalizadas y Nucleo. Si bien no pude obtener un MCU de la serie K20 para mi periférico de interés específico sin teclado, creo que el código de modo de host provisional para los tableros Teenys3.x puede admitir teclados.

Para el enlace intermedio, es probable que desee un esquema de serie asíncrono. Si necesita una verdadera comunicación bidireccional (¿desea activar esos LED de teclado?), Podría considerar algo así como los típicos protocolos semidúplex RS845, solo con señalización de terminación única.

En el extremo del dongle de la PC, puede elegir cualquier micro útil con una interfaz de dispositivo USB. Personalmente, podría elegir el mismo que usé en el extremo de transmisión, ya que la mayoría de los hosts USB integrados también pueden ser un dispositivo. Hice una placa KL25Z que puede ser cualquiera de las dos: instale un conector USB hembra en la parte superior de la placa y programe como host, o inviértalo e instale el conector macho en ese lado con el firmware en modo dispositivo.

    
respondido por el Chris Stratton
0

Probablemente sería mucho más fácil desmontar el teclado, y reemplazar el módulo del controlador con un multiplexor / demultiplexor que combine todas las líneas que se conectan a los circuitos del interruptor del teclado (generalmente alrededor de 10-12 líneas que salen del controlador hacia el interruptores y un número similar que regresa) y luego invierta el proceso para conectarse nuevamente al módulo del controlador en otro lugar.

    
respondido por el Jules

Lea otras preguntas en las etiquetas