Słyszałem, że D + i D- to sygnały różnicowe, czy to ważne, czy zamienię je podczas podłączania urządzenia USB do komputera?
Słyszałem, że D + i D- to sygnały różnicowe, czy to ważne, czy zamienię je podczas podłączania urządzenia USB do komputera?
Odpowiedzi:
Przy wchodzeniu i wychodzeniu ze stanu bezczynności polaryzacja jest ważna, a zamiana linii D + i D- spowoduje problemy.
Dane USB są kodowane przez NRZ, tak że „Jeden” jest reprezentowany przez brak zmiany poziomu fizycznego, a „Zero” reprezentowany jest przez zmianę poziomu fizycznego (patrz rysunek poniżej). Dlatego odwrócenie sygnału (na przykład poprzez zamianę D + i D-) nie powoduje żadnych zmian funkcjonalnych podczas transmisji danych. Mogą jednak wystąpić problemy przed i po transmisji danych, które mogą zakłócić komunikację z urządzeniem.
Host zawiera oporniki obniżające 15 kΩ na każdej linii danych. Gdy żadne urządzenie nie jest podłączone, powoduje to obniżenie obu linii danych do tak zwanego stanu „single-ended zero” (SE0 w dokumentacji USB) i wskazuje połączenie resetowane lub rozłączone. Urządzenie USB ciągnie jedną z linii danych wysoko za pomocą rezystora 1,5 kΩ. To obezwładnia jeden z oporników rozwijanych w hoście i pozostawia linie danych w stanie bezczynności o nazwie „J”. W przypadku USB 1.x wybór linii danych wskazuje, jakie prędkości sygnału jest zdolne do urządzenia; urządzenia o pełnej przepustowości ciągną D + wysoko, podczas gdy urządzenia o niskiej przepustowości ciągną D-high.
Podczas gdy dane są kodowane przez NRZI, sekwencja synchronizacji i EoP są zdefiniowane w kategoriach stałych stanów (J / K / SE0). Kiedy D + i D- są przełączane, stan J jest przełączany za pomocą K, a SE0 jest nadal SE0 (obie linie niskie). Tak więc sekwencja synchronizacji i EoP staną się niepoprawne podczas inwersji. W USB 1.x, jeśli D + i D- są zamienione, urządzenia o pełnej przepustowości są rozpoznawane jako o niskiej przepustowości i odwrotnie. Tak więc urządzenie nie będzie nawet komunikować się z tą samą prędkością co host.
Koniec pakietu USB, zwany EOP (koniec pakietu), jest wskazywany przez nadajnik sterujący 2-bitowym czasem SE0 (D + i D-oba poniżej maks.) I 1-bitowym czasem stanu J. Następnie nadajnik przestaje sterować liniami D + / D-, a wspomniane rezystory podciągające utrzymują go w stanie J (bezczynności).
W przypadku sterownika zamienionego D + / D-, host zobaczy sekwencję (SE0, SE0, K) zamiast prawidłowej (SE0, SE0, J). Host może wtedy nie rozpoznać końca pakietu, co może powodować problemy.
Jeśli urządzenie i host ściśle przestrzegają specyfikacji USB, zamiana pinów D + i D- spowoduje awarię. Można sobie wyobrazić, że projektant hosta przewidział taki tryb awarii i wbudował dla niego kompatybilność. Ale niezależnie od tego, czy taki zamieniony kabel byłby funkcjonalny w praktyce, z pewnością nie byłby zgodny ze specyfikacjami.
Inny członek, Andrew Kohlsmith, doświadczył tego, gdy przypadkowo zamieniono piny koncentratora USB. Problem pojawił się, gdy podłączone urządzenia się nie wyświetlały. Urządzenie USB pokazywałoby, że jest zasilane, ale w ogóle nie zostało rozpoznane przez komputer po stronie huba (który był prawidłowo podłączony do hosta).
Edycja: dziękuję tym, którzy skomentowali. Dodałem akcent i szczegóły z twoich pomocnych notatek.
Widziałem, jak urządzenia negocjują małą prędkość tylko wtedy, gdy zamieniono d + i d-. Było to z urządzeniem o pełnej prędkości (12 Mb / s) i portem opartym na chipsecie VIA.