USB-кабель с одним проводом

Я хотел преобразовать дифференциальный сигнал USB в один сигнал, а затем отправить его по одному проводу, а затем восстановить обратно дифференциальные сигналы на другом конце. Я хотел сделать это для клавиатуры USB 1.1, работающей на низкой скорости, которая указана на скорости 1,5 Мбит/с (в моем прицеле это больше похоже на 150 кбит/с).

Очевидно, я хочу, чтобы это шло в обоих направлениях, но, как и в случае с USB, не одновременно. Википедия говорит, что дифференциальные сигналы USB обычно противоположны, например, 3,3 В/0 В, 0 В/3,3 В или 0 В/0 В, но никогда не 3,3 В/3,3 В. Я думал инструментальный усилитель для отправки и АЦП для приема. Это разумно или я иду об этом неправильно?

Как узнать, когда переключаться между отправкой и получением? Я использовал набор, который передает USB на расстояние более 100 м (используя RS485), но я думаю, что он интерпретирует USB на обоих ensds, поэтому он работает на уровне OSI 2/3/4 (сообщения), а не на уровне 1 (электрический).
Короткий ответ - нет - чего вы пытаетесь достичь с помощью этого?
"или 0В/0В" не противоположны.
А как насчет более амбициозного проекта? Я мог бы использовать преобразователь USB в ULPI (есть такие) и использовать serdes в fpga (у меня есть 2 платы adafruit mojo). Клавиатура — это стартовый проект, чтобы посмотреть, можно ли это сделать.

Ответы (3)

USB передает данные как дифференциальный сигнал, но дифференциальные правила нарушаются для создания кадровых сигналов. Часть протокола определяет, что делать с этими комбинациями уровней.

  • 3.3В/3.3В - сигнализирует об удалении устройства.
  • 0В/3.3В - низкоскоростное устройство
  • 3,3 В/0 В — полноскоростное устройство
  • 0V/0V - несимметричный ноль, отмечает конец кадра или, если удерживать достаточно долго, сброс устройства.
  • 3,3 В/0 В и 0 В/3,3 В также представляют собой «J» и «K» при передаче фактических данных.

Таким образом, ваш план каким-то образом должен сигнализировать другому концу, когда возникают эти условия. Возможно, используйте более двух уровней напряжения в аналоговом сегменте.

Сделайте все правильно, и временные ограничения USB, вероятно, испортят вам все.

Попытка сделать это для USB в целом, вероятно, неразумна - довольно сложно и намного сложнее, чем необходимо для достижения заявленной цели.

Вам лучше придумать собственную схему передачи данных с клавиатуры, а затем включить ее обратно в USB в ключе, который подключается к ПК. (Конечно, вы можете купить готовую беспроводную клавиатуру, если только она не отменяется по соображениям надежности, помех или безопасности).

Было бы проще построить проект, если бы у вас была устаревшая клавиатура с интерфейсом PS/2, так как этим синхронным интерфейсом можно управлять практически с любого микроконтроллера. Однако вы также можете подключить USB-клавиатуру от MCU — мне повезло с серией KL25Z на пользовательских печатных платах, а также с этой версией «платы свободы» Kinetis, а также с STM32F4 на пользовательских платах и ​​платах Nucleo. Хотя мне не удалось получить MCU серии K20, на котором размещено мое конкретное интересующее периферийное устройство, не связанное с клавиатурой, я думаю, что предварительный код режима хоста для этого на платах Teenys3.x может поддерживать клавиатуры.

Для промежуточного звена вам, вероятно, нужна асинхронная последовательная схема. Если вам нужна настоящая двусторонняя связь (хотите активировать эти светодиоды на клавиатуре?), вы можете рассмотреть что-то вроде типичных полудуплексных протоколов RS845, только с несимметричной сигнализацией.

На конце ключа ПК вы можете выбрать любой удобный микро с интерфейсом устройства USB. Лично я мог бы выбрать тот же, что и на передающей стороне, поскольку большинство встроенных USB-хостов также могут быть устройством. Я сделал плату KL25Z, которая может быть любой роли - установить гнездовой USB-разъем на верхней части платы и запрограммировать ее как хост, или перевернуть ее и установить штекерный разъем на той стороне с прошивкой режима устройства.

Вероятно, было бы намного проще разобрать клавиатуру и заменить модуль контроллера мультиплексором/демультиплексором, который объединяет все линии, которые подключаются к схеме переключателя клавиатуры (обычно около 10-12 линий, выходящих из контроллера в переключатели, и аналогичный номер возвращается), а затем выполните обратный процесс, чтобы снова подключиться к модулю контроллера в другом месте.