Thiết bị USB có 2 cổng - cách bảo vệ chống lại người dùng cắm cả hai


11

Tôi đã có một thiết bị USB tốc độ đầy đủ mà tôi muốn cung cấp 2 cổng cho - một cổng ở hai đầu đối diện của vỏ. Điều này là để cáp có thể được kết nối bất cứ nơi nào thuận tiện nhất. MCU của tôi (atmega32u4) chỉ có một giao diện, vì vậy các cổng vật lý sẽ được chia sẻ, nhưng chỉ có một cổng nên được cắm cùng một lúc.

Tất nhiên người dùng không thể tin tưởng để không cắm cả hai bên cùng một lúc. Làm thế nào để bảo vệ chống lại điều này?

Ý tưởng tôi đã đưa ra:

  • Chỉ cần nối chúng với "nguyên trạng" và hy vọng máy chủ có thể xử lý các chân D + / D- đã tham gia
  • Cổng NAND với các chân 5V riêng biệt làm đầu vào, đầu ra cho MOSFET ngắt kết nối Vcc khi cả hai được cắm.

Liệu tùy chọn thứ hai nghe có vẻ hợp lý, hoặc là một giải pháp phức tạp hơn cần thiết?


Làm thế nào để bạn đề xuất nối hai cổng để kết nối D + và D- với nhau? Bạn nên thêm một sơ đồ giải thích bố cục bạn đề xuất.
Năng lượng mặt trời Mike

@SolarMike Được chia sẻ giữa hai - trong kịch bản "chính xác", chỉ với một cáp được kết nối, D + / D của đầu nối khác sẽ bị treo lủng lẳng.
monty

7
Bạn cũng nên xem xét việc thiết kế vỏ máy với nắp di chuyển để chỉ có một cổng usb được hiển thị cùng một lúc. Bằng cách đó, bạn giao tiếp rõ ràng với người dùng rằng họ chỉ được phép cắm vào một trong các cổng cùng một lúc thay vì nhầm lẫn khi họ cắm hai máy chủ và một máy chủ không hoạt động.
Nonny Moose

4
đừng quên người dùng quản lý để tìm cáp usb nam-nam và cắm thiết bị vào chính nó !!!
RozzA

Câu trả lời:


23

Như đã chỉ ra, bạn không thể kết nối trực tiếp hai máy chủ với một thiết bị - vì vậy nếu bạn chỉ nối chúng lại với nhau và ai đó cắm nó vào cả hai đầu, bạn sẽ gặp vấn đề.

Tuy nhiên, bạn cũng gặp vấn đề nếu chỉ cắm một đầu. USB, đặc biệt là chế độ tốc độ cao (480Mbps) được điều khiển trở kháng. Nếu bạn kết nối cả hai đường kết nối dữ liệu với nhau, bạn sẽ kết thúc với cái được gọi là sơ khai trong thiết kế tần số cao. Cáp đi đến đầu nối không sử dụng sẽ làm giảm hiệu suất của đầu nối đang hoạt động.

Để làm điều này đúng, bạn muốn có một IC ghép kênh. Bạn có thể mua bộ ghép kênh USB2.0 chuyên dụng được thiết kế dành riêng cho loại ứng dụng này - một cái gì đó giống như TS3USB30 . Điều đó sẽ cho phép bạn kết nối các đường dữ liệu từ cả hai cổng với đầu vào mux và kết nối đầu ra với thiết bị của bạn bên trong. Mux sẽ ngắt kết nối đầu nối không sử dụng sẽ ngắt kết nối cuống đường truyền.

Đối với năng lượng, tôi có thể sử dụng một bộ ghép kênh công suất như mạch OR-ing diode. Dòng VBUS từ một trong các cổng (trước bộ ghép kênh nguồn) sau đó có thể được sử dụng làm đầu vào cho bộ ghép kênh dữ liệu.

Mặt đất sẽ là chung (được kết nối) giữa hai cổng USB và thiết bị của bạn.


1
Tôi đã không xem xét các sơ khai - bộ ghép kênh đó (kết hợp với bộ ghép nguồn) trông thật lý tưởng!
monty

3
Sơ khai không phải là một vấn đề ở Tốc độ đầy đủ, đó là tất cả những gì bạn đã hỏi trong câu hỏi của mình.
Dave Tweed

1
@DaveTweed Tôi đã thêm làm rõ Tốc độ đầy đủ sau khi tôi nhận ra câu trả lời này bao trùm Tốc độ cao. Biết rằng tôi có thể "thoát khỏi nó" là tốt cho thiết kế này, nhưng tôi chắc chắn đánh giá cao việc biết ý nghĩa ở tốc độ cao hơn.
monty

Bây giờ tôi thực sự quan tâm đến cách làm cho atmega32u4 hỗ trợ 480Mbps :)
Dmitry Grigoryev

9

Multiplexer theo đề xuất của Tom Carpenter là một giải pháp tốt.

Nhưng đối với USB tốc độ đầy đủ (12 Mb / giây), các cuống trong các tín hiệu không đặc biệt quan trọng. Nếu khoảng cách giữa các đầu còn lại vẫn dưới 1/10 bước sóng, tức là dưới ~ 2 mét, các phản xạ sẽ không làm biến dạng dạng sóng nhiều.

Ngoài ra, các mức điện áp trên các chân D + và D- sẽ vẫn nằm trong phạm vi chấp nhận được, do đó không có nhiều rủi ro thiệt hại điện tử cho một trong hai máy chủ.

Vấn đề chính còn lại là nếu bạn kết nối các chân + 5V từ cả hai máy chủ với nhau, có thể có dòng điện lớn liên quan. Bạn có thể sử dụng một diode từ chân + 5V của mỗi đầu nối USB để chỉ cho dòng điện vào, không bao giờ tắt.


4

Cách thiết kế điện tử lười biếng sẽ chỉ là sử dụng một công tắc đa kết nối vật lý để lựa chọn giữa cái nào được sử dụng.

Lưu ý rằng điều này sẽ có thêm lợi ích là có thể để cả hai cắm vào và sử dụng công tắc để chọn đầu vào nào sẽ được sử dụng.


2

Không có cách tuân thủ USB để làm điều này. USB không được thiết kế để chia sẻ giữa hai máy chủ và cố gắng làm như vậy sẽ dẫn đến các tình huống có thể xảy ra.

Tốt nhất, bạn có thể sử dụng bộ ghép kênh USB hoặc IC chuyển đổi, với GPIO để xác định đầu nối nào được kết nối. Bạn sẽ phải quyết định kết nối USB nào được ưu tiên, bởi vì cả hai không thể được kết nối với giao diện USB của bạn cùng một lúc.

Hoặc nhìn vào các lựa chọn thay thế. Có một máy tính liên lạc với nhau. Hoặc sử dụng Bluetooth hoặc sử dụng Wi-Fi hoặc một loại kết nối khác.


Tôi đã thêm làm rõ cho câu hỏi - chỉ một cổng sẽ được sử dụng cùng một lúc và (hy vọng) cổng NAND có thể giải quyết vấn đề ưu tiên bằng cách đơn giản từ chối kịch bản "cả hai cắm vào".
monty

Những loại tình huống thảm họa nào bạn nghĩ rằng nó có thể dẫn đến?
jpa

1
@jpa giả sử hai hệ thống có tiềm năng "mặt đất" khác nhau 50V chẳng hạn. Kết nối cả hai với D- có thể là "thú vị". Ngay cả khi các điện thế chỉ khác nhau 50mV, bạn có thể đã tạo ra một "vòng lặp mặt đất" tạo ra tiếng ồn.
alephzero

1
@alephzero Chắc chắn, nhưng ngay cả một bộ ghép kênh hoặc IC chuyển đổi thông thường cũng sẽ không xử lý được điều đó. Mặt đất kết nối đầu tiên trong đầu nối USB, tuy nhiên, chủ yếu loại bỏ vấn đề đó.
jpa

2

Tôi có một máy tính bảng Wacom với tính năng này. Họ xử lý vấn đề bạn mô tả bằng cách sử dụng khóa liên động cơ học.

Có một thanh trượt bằng nhựa chặn một cổng hoặc cổng kia, tùy thuộc vào vị trí của nó.

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


1

Có lẽ sẽ dễ dàng hơn khi để đầu nối USB ở một bên của vỏ và sao chép và / hoặc di chuyển tất cả các yếu tố đối diện với người dùng khác một cách đối xứng. Sau đó, vỏ có thể được xoay để cổng USB đối diện với đầu nối, trong khi tất cả các yếu tố khác vẫn có thể truy cập thuận tiện.

Một tùy chọn khác là định vị cả hai cổng ở một bên của vỏ (ở hai đầu đối diện) và thêm một cuống trượt bên trong bao vây mà người dùng có thể di chuyển để mở một cổng này hoặc cổng kia. USB 12 MHz có cơ hội hoạt động tốt với một cổng bị ngắt kết nối thêm.

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.