USB 케이블에서 D + 및 D- 와이어를 교체해도 괜찮습니까?


54

D +와 D-가 차동 신호라고 들었는데 USB 장치를 컴퓨터에 연결할 때 신호를 바꾸는 것이 중요합니까?


흥미로운 질문 ... CAN과 같은 모든 유효한 차동 프로토콜에 유효합니다.
Swanand

답변:


58

요약

유휴 상태로 들어가고 나올 때 극성이 중요하며 D +와 D- 라인을 바꾸면 문제가 발생합니다.

데이터 전송

USB 데이터는 NRZ로 코딩 되어 "1"은 물리적 레벨의 변화가없고 "Zero"는 물리적 레벨의 변화가 있습니다 (아래 그림 참조). 따라서 신호를 반전 시키면 (예를 들어, D +와 D-를 교환하여) 데이터 전송 중에 기능적인 변화가 없습니다. 그러나 데이터 전송 전후에 문제가 발생하여 장치와의 통신이 중단 될 수 있습니다.

유휴 상태 종료

호스트에는 각 데이터 라인에 15kΩ 풀다운 저항이 포함되어 있습니다. 장치가 연결되어 있지 않으면 두 데이터 라인이 모두 "단일 종단 0"상태 (USB 문서의 SE0)로 낮아지고 연결이 재설정되었거나 연결이 끊 겼음을 나타냅니다. USB 장치는 1.5kΩ 저항으로 데이터 라인 중 하나를 끌어옵니다. 이는 호스트의 풀다운 저항 중 하나를 압도하고 데이터 라인을 "J"라는 유휴 상태로 둡니다. USB 1.x의 경우 데이터 라인을 선택하면 장치가 어떤 신호 속도를 사용할 수 있는지 나타냅니다. 전 대역폭 디바이스는 D +를 높이고, 저 대역폭 디바이스는 D를 높입니다.

데이터가 NRZI로 인코딩되는 동안, 동기화 시퀀스 및 EoP는 고정 상태 (J / K / SE0)로 정의된다. D + 및 D-가 전환되면 J 상태는 K로 전환되고 SE0은 여전히 ​​SE0 (두 라인 모두 낮음)입니다. 따라서 반전시 동기화 시퀀스와 EoP가 잘못됩니다. USB 1.x에서 D +와 D-가 교체되면 전체 대역폭 장치가 저 대역폭으로 인식되고 그 반대도 마찬가지입니다. 따라서 장치는 호스트와 동일한 속도로 통신하지 않습니다.

유휴 상태 들어가기

EOP (패킷 끝)라고하는 USB 패킷의 끝은 송신기가 SE0의 2 비트 시간 (D + 및 D – 최대 값 모두 아래)과 1 비트 J 상태의 비트를 구동하는 것으로 표시됩니다. 그 후, 트랜스미터는 D + / D- 라인 구동을 중단하고 위에서 언급 한 풀업 저항은이를 J (유휴) 상태로 유지합니다.

D + / D- 스왑 드라이버를 사용하면 호스트는 올바른 (SE0, SE0, J) 대신 시퀀스 (SE0, SE0, K)를 보게됩니다. 그러면 호스트가 패킷 끝을 인식하지 못해 문제가 발생할 수 있습니다.

여기에 이미지 설명을 입력하십시오

결론

장치와 호스트가 USB 사양을 엄격하게 준수하는 경우 D +와 D- 핀을 교체하면 오류가 발생합니다. 호스트 디자이너가 그러한 실패 모드를 예견하고 호환성을 내장 한 것으로 생각됩니다. 그러나 그러한 교체 된 케이블이 실제로 작동하는지 여부는 사양에 맞지 않을 것입니다.

앤드류 콜 스미스 (Andrew Kohlsmith)라는 또 다른 회원은 USB 허브의 핀이 실수로 바뀌었을 때 이것을 경험했다. 연결된 장치가 표시되지 않는 것으로 문제가 나타납니다. USB 장치는 전원이 공급되었다고 표시하지만 허브의 업스트림 쪽 (호스트에 올바르게 연결됨)에있는 컴퓨터에서 전혀 인식하지 못했습니다.

출처 : Wikipedia

편집 : 의견을 보내 주신 분들께 감사드립니다. 나는 당신의 유용한 메모에서 강조와 세부 사항을 추가했습니다.


2
호스트는 풀업 된 라인에 따라 저속 / 최대 속도를 구별한다는 점에 유의해야합니다. D + / D- 회선을 교체하면 장치는 호스트와 동일한 속도로 통신하지 않습니다. 또한 데이터가 NRZI로 인코딩되는 동안 동기화 시퀀스 및 EoP는 J / K / SE0의 관점에서 정의되며 반전시 올바르지 않게됩니다.
avakar

2
D + / D-를 바꾸면 USB 인터페이스가 작동하지 않는다는 경험을 통해 알 수 있습니다. USB 허브가 내장 된 일부 프로토 타입을 재 작업해야했습니다. 별로 재미 있지 않습니다.
akohlsmith

@avakar 자세한 내용 감사합니다. 나는 그 대답이 그 대부분을 간략하게 다루었다고 생각하지만 더 명확하게하기 위해 더 자세한 내용을 추가하려고 노력할 것입니다.
travisbartley

@Andrew Kohlsmith 유용한 정보입니다. 당신이 기억할 수 있다면, 나는 당신에게 몇 가지 질문이 있습니다. 장치 또는 허브에 핀 스왑이 있습니까? 오류가 어떻게 나타 났습니까? 장치를 연결할 때 장치가 오작동으로 인식되거나 인식되지 않았습니까? 문제를 어떻게 진단 했습니까? 자세한 내용은 도움이 될 것입니다. 답변에 귀하의 정보를 추가하려고 노력할 것입니다.
travisbartley

2
@ trav1s 허브 쪽에서 D + / D-를 교체했습니다. 장치가 나타나지 않는 것처럼 문제가 나타납니다. USB 키는 전원이 켜져 있지만 허브의 업스트림 쪽 (호스트에 올바르게 연결됨)에있는 컴퓨터에서 전혀 인식하지 못했음을 나타냅니다. 진단 글을 작성하는 데 부끄럽지만 허브 구성 / 소프트웨어 문제라고 생각하면서 많은 시간을 보냈습니다. 결국 나는 전선을 추적했지만 USB가 이더넷과 같고 핀을 자동 교체 할 수 있다고 확신했기 때문에 마지막으로 수행했습니다. 내가 틀렸어. :-)
akohlsmith 2016 년

1

d +와 d-가 바뀌었을 때만 장치가 저속으로 협상하는 것을 보았습니다. 이것은 최고 속도 (12mbps) 장치와 VIA 칩셋 기반 포트였습니다.


2
그것은 @ trav1s가 USB 1.x에 대해 말한 것을 뒷받침합니다.
Vaibhav Garg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.