В кабеле USB можно ли менять местами провода D + и D-?


54

Я слышал, что D + и D- являются дифференциальными сигналами, имеет ли значение, если я поменяю их местами при подключении устройства USB к компьютеру?


Интересный вопрос ... Действителен для всех действительных дифференциальных протоколов .. как CAN!
Суонанд

Ответы:


58

Резюме

При входе и выходе из режима ожидания важна полярность, и замена линий D + и D- вызовет проблемы.

Передача информации

Данные USB кодируются NRZ , так что «Один» представлен без изменений физического уровня, а «Ноль» представлен изменением физического уровня (см. Рисунок ниже). Следовательно, инвертирование сигнала (например, путем переключения D + и D-) не приводит к функциональным изменениям во время передачи данных. Но могут быть проблемы до и после передачи данных, которые могут прервать связь с устройством.

Выход из состояния ожидания

Хост включает в себя понижающие резисторы 15 кОм на каждой линии данных. Когда никакое устройство не подключено, это переводит обе линии данных в низкое состояние в так называемое состояние «нулевой односторонний» (SE0 в документации USB) и указывает на сброс или отключение соединения. Устройство USB поднимает одну из линий передачи данных с помощью резистора 1,5 кОм. Это подавляет один из понижающих резисторов в хосте и оставляет линии данных в состоянии ожидания, называемом «J». Для USB 1.x выбор линии передачи данных показывает, на какие скорости сигналов устройство способно; устройства с полной пропускной способностью получают высокий уровень D +, а устройства с низкой пропускной способностью - высокий уровень D.

В то время как данные кодируются в NRZI, последовательность синхронизации и EoP определяются в терминах фиксированных состояний (J / K / SE0). Когда D + и D- переключаются, состояние J переключается с помощью K, а SE0 по-прежнему SE0 (обе линии имеют низкий уровень). Таким образом, последовательность синхронизации и EoP станут неверными при инверсии. В USB 1.x, если D + и D- поменялись местами, устройства с полной полосой пропускания распознаются как полосы с низкой пропускной способностью, и наоборот. Таким образом, устройство даже не будет общаться на той же скорости, что и хост.

Вход в состояние ожидания

Конец пакета USB, называемый EOP (конец пакета), обозначается передатчиком, который запускает 2-битные времена SE0 (D + и D- оба ниже макс.) И 1-битное время J состояния. После этого передатчик перестает управлять линиями D + / D-, и вышеупомянутые подтягивающие резисторы удерживают его в состоянии J (холостой ход).

С драйвером, замененным D + / D-, хост увидит последовательность (SE0, SE0, K) вместо правильной (SE0, SE0, J). Хост может затем не распознать конец пакета, что может вызвать проблемы.

введите описание изображения здесь

Заключение

Если устройство и хост строго придерживаются спецификаций USB, замена D + и D- выводов приведет к сбою. Можно предположить, что разработчик хоста предвидел такой режим отказа и встроил в него совместимость. Но будет ли такой замененный кабель работать на практике, он определенно не будет соответствовать спецификациям.

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

Источник: Википедия

Редактировать: спасибо тем, кто прокомментировал. Я добавил акцент и детали из ваших полезных заметок.


2
Следует отметить, что хост различает низкую / полную скорость, по которой линия подтягивается. Если вы поменяете местами линии D + / D-, устройство даже не будет обмениваться данными с той же скоростью, что и хост. Кроме того, в то время как данные кодируются в NRZI, последовательность синхронизации и EoP определяются в терминах J / K / SE0 и становятся неверными при инверсии.
avakar

2
По опыту могу сказать, что замена D + / D- приводит к нефункциональному интерфейсу USB. Мне пришлось переделать некоторые прототипы, в которые был встроен USB-концентратор. Не так весело.
akohlsmith

@avakar Спасибо за подробности. Я думаю, что ответ охватил большую часть этого кратко, но я постараюсь добавить больше деталей, чтобы он был более понятным.
travisbartley

@ Андрей Колсмит Это полезная информация. Если вы помните, у меня есть к вам несколько вопросов. У устройства или концентратора была замена булавки? Как возникла ошибка? Когда вы подключили устройство, оно не было распознано или признано неисправным? Как вы диагностировали проблему? Любые детали помогут, я постараюсь добавить вашу информацию в ответ.
Тревисбартли

2
@ trav1s Я поменял местами D + / D- на стороне концентратора. Проблема проявилась в том, что устройство не показывалось. USB-ключ будет показывать, что он был включен, но он не был распознан компьютером на входной стороне концентратора (который был правильно подключен к хосту). Диагноз, о котором мне стыдно писать, я потратил много времени, думая, что это была проблема с настройкой концентратора / программного обеспечения. В конце концов я проследил провода, но сделал это последним, потому что был убежден, что USB похож на Ethernet и может автоматически менять контакты. Я ошибался. :-)
akohlsmith

1

Я видел, что устройства работают на низкой скорости только тогда, когда d + и d- меняются местами. Это было с полноскоростным (12 Мбит / с) устройством и портом на базе чипсета VIA.


2
Это подтверждает то, что @ trav1s сказал о USB 1.x.
Вайбхав Гарг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.