Trong cáp USB, có thể trao đổi dây D + và D- không?


54

Tôi nghe nói rằng D + và D- là tín hiệu vi sai, có vấn đề gì không nếu tôi trao đổi chúng khi kết nối thiết bị USB với máy tính?


Câu hỏi thú vị ... Hợp lệ cho tất cả các giao thức khác biệt hợp lệ .. như CAN!
Swanand

Câu trả lời:


58

Tóm lược

Khi vào và thoát khỏi trạng thái không hoạt động, cực tính rất quan trọng và việc hoán đổi các đường D + và D- sẽ gây ra vấn đề.

Truyền dữ liệu

Dữ liệu USB được mã hóa NRZ sao cho "Một" được biểu thị bằng không thay đổi mức vật lý và "Không" được biểu thị bằng thay đổi về mức vật lý (xem hình bên dưới). Do đó, đảo ngược tín hiệu (ví dụ, bằng cách hoán đổi D + và D-) dẫn đến không có thay đổi chức năng trong quá trình truyền dữ liệu. Nhưng có thể có vấn đề trước và sau khi truyền dữ liệu có thể giết chết giao tiếp với thiết bị.

Thoát khỏi trạng thái nhàn rỗi

Máy chủ bao gồm các điện trở kéo xuống 15 kΩ trên mỗi dòng dữ liệu. Khi không có thiết bị nào được kết nối, điều này sẽ kéo cả hai dòng dữ liệu xuống trạng thái được gọi là "không kết thúc một lần" (SE0 trong tài liệu USB) và cho biết kết nối được đặt lại hoặc ngắt kết nối. Một thiết bị USB kéo một trong các dòng dữ liệu lên cao với điện trở 1,5 kΩ. Điều này áp đảo một trong các điện trở kéo xuống trong máy chủ và để các dòng dữ liệu ở trạng thái không hoạt động được gọi là "J". Đối với USB 1.x, việc chọn đường dữ liệu cho biết tốc độ tín hiệu nào mà thiết bị có khả năng; thiết bị băng thông đầy đủ kéo D + cao, trong khi thiết bị băng thông thấp kéo D cao.

Mặc dù dữ liệu được mã hóa NRZI, trình tự đồng bộ hóa và EoP được xác định theo các trạng thái cố định (J / K / SE0). Khi D + và D- được chuyển đổi, trạng thái J được chuyển đổi với K và SE0 vẫn là SE0 (cả hai dòng thấp). Vì vậy, chuỗi đồng bộ hóa và EoP sẽ trở nên không chính xác khi đảo ngược. Trong USB 1.x, nếu D + và D- được hoán đổi, một thiết bị băng thông đầy đủ sẽ được công nhận là băng thông thấp và ngược lại. Vì vậy, thiết bị thậm chí sẽ không giao tiếp ở cùng tốc độ với máy chủ.

Đang vào trạng thái nhàn rỗi

Đầu cuối của gói USB, được gọi là EOP (cuối gói), được biểu thị bằng bộ phát điều khiển 2 lần SE0 (D + và D− cả dưới mức tối đa) và thời gian 1 bit của trạng thái J. Sau đó, bộ phát ngừng điều khiển các dòng D + / D− và các điện trở kéo lên đã nói ở trên giữ nó ở trạng thái J (nhàn rỗi).

Với trình điều khiển hoán đổi D + / D-, máy chủ sẽ thấy chuỗi (SE0, SE0, K) thay vì đúng (SE0, SE0, J). Sau đó, máy chủ có thể không nhận ra được phần cuối của gói, điều này sẽ gây ra sự cố.

nhập mô tả hình ảnh ở đây

Phần kết luận

Nếu thiết bị và máy chủ tuân thủ nghiêm ngặt các thông số kỹ thuật của USB, việc tráo đổi chân D + và D- sẽ dẫn đến lỗi. Có thể hình dung rằng người thiết kế máy chủ đã thấy trước một chế độ thất bại như vậy và được xây dựng để tương thích với nó. Nhưng liệu một dây cáp tráo đổi như vậy có hoạt động trong thực tế hay không, chắc chắn nó sẽ không tuân thủ các thông số kỹ thuật.

Một thành viên khác, Andrew Kohlsmith, đã trải nghiệm điều này khi các chân của bộ chia USB vô tình bị tráo đổi. Vấn đề thể hiện là các thiết bị được kết nối không hiển thị. Thiết bị USB sẽ cho thấy nó được cấp nguồn nhưng hoàn toàn không được máy tính nhận ra ở phía thượng nguồn của trung tâm (được nối chính xác với máy chủ).

Nguồn: wikipedia

Chỉnh sửa: cảm ơn những người đã bình luận. Tôi đã thêm nhấn mạnh và chi tiết từ ghi chú hữu ích của bạn.


2
Cần lưu ý rằng máy chủ phân biệt tốc độ thấp / đầy đủ theo dòng đã kéo lên. Nếu bạn hoán đổi các dòng D + / D-, thiết bị thậm chí sẽ không giao tiếp với cùng tốc độ với máy chủ. Hơn nữa, trong khi dữ liệu được mã hóa NRZI, chuỗi đồng bộ hóa và EoP được xác định theo thuật ngữ J / K / SE0 và sẽ trở nên không chính xác khi đảo ngược.
avakar

2
Tôi có thể nói từ kinh nghiệm rằng việc hoán đổi D + / D- dẫn đến giao diện USB không hoạt động. Tôi đã phải làm lại một số nguyên mẫu có tích hợp bộ chia USB. Không có nhiều niềm vui.
akohlsmith

@avakar Cảm ơn bạn đã biết chi tiết. Tôi nghĩ rằng câu trả lời bao gồm hầu hết thời gian ngắn gọn, nhưng tôi sẽ cố gắng thêm chi tiết để nó rõ ràng hơn.
travisbartley

@Andrew Kohlsmith Đó là thông tin hữu ích. Nếu bạn có thể nhớ, tôi có một số câu hỏi cho bạn. Thiết bị hoặc trung tâm có trao đổi pin? Làm thế nào các lỗi biểu hiện? Khi bạn kết nối thiết bị, thiết bị không được nhận dạng hoặc nhận dạng là trục trặc? Làm thế nào bạn chẩn đoán vấn đề? Mọi chi tiết sẽ giúp ích, tôi sẽ cố gắng thêm thông tin của bạn vào câu trả lời.
travisbartley

2
@ trav1s Tôi đã trao đổi D + / D- ở phía trung tâm. Vấn đề thể hiện là thiết bị không hiển thị. Khóa USB sẽ cho thấy nó được cấp nguồn nhưng nó không được máy tính nhận ra ở phía thượng nguồn của trung tâm (được nối chính xác với máy chủ). Chẩn đoán Tôi xấu hổ khi viết về, tôi đã dành rất nhiều thời gian nghĩ rằng đó là một vấn đề cấu hình / phần mềm trung tâm. Cuối cùng, tôi đã tìm ra các dây nhưng tôi đã làm điều đó lần cuối bởi vì tôi tin rằng USB giống như ethernet và có thể tự động trao đổi các chân. Tôi đã sai. :-)
akohlsmith

1

Tôi đã thấy các thiết bị đàm phán là tốc độ thấp chỉ khi d + và d- được hoán đổi. Điều này là với một thiết bị tốc độ đầy đủ (12mbps) và cổng dựa trên chipset VIA.


2
Điều đó chứng thực những gì @ trav1s đã nói về USB 1.x.
Vaibhav Garg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.