2012-10-01 36 views
7

Có ai biết nếu có thể mô phỏng UART (truyền và nhận nối tiếp đơn giản) qua USB không? Làm thế nào điều này sẽ được thực hiện?Thi đua UART qua USB

Tôi tìm thấy liên kết này trên trang web Microchip, nhưng nó không phải là rất sắp tới.

http://www.microchip.com/forums/m522571-print.aspx

Bất kỳ ý tưởng nào? Cảm ơn.

+4

Chắc chắn sử dụng FTDI là cách tốt nhất để thực hiện. – TJD

+0

FTDI? Vui lòng giải thích. Người quản lý của tôi yêu cầu tôi cấu hình thiết bị ngoại vi USB tích hợp để hoạt động như UART. Theo như tôi có thể nói, điều này là không thể, nhưng ông khẳng định rằng nó là. –

+0

Chip FTDI chuyển đổi UART sang USB. Vì vậy, nội bộ bạn sẽ chỉ sử dụng UART bình thường ngoại vi, nhưng bên ngoài bạn cắm vào với USB. Về phía PC, bạn nhận được một cổng COM ảo để bạn có thể tương tác với nó như một cổng nối tiếp bình thường. Điều này là rất sạch sẽ và dễ dàng và cách mọi người làm điều đó. Tôi không thể tưởng tượng tại sao bạn sẽ thực sự cần phải sử dụng thiết bị ngoại vi USB của chip của bạn. – TJD

Trả lời

8

Về cơ bản bạn có hai tùy chọn để thi đua UART qua USB:

  1. Sử dụng một sản phẩm hiện có. FTDI của công ty cung cấp các chip cầu UART-USB nổi tiếng và chắc chắn, ví dụ: FT230X. Pro: Bạn không cần bất kỳ kiến ​​thức chi tiết về USB. Nhược điểm: Đắt nếu được sử dụng trong sản xuất hàng loạt. Phần cứng bổ sung, cần thêm sức mạnh.

  2. Triển khai lớp thiết bị USB "Lớp thiết bị giao tiếp" (CDC). Đặc điểm kỹ thuật của CDC có sẵn từ USB.org, xem here. Pro: Giá rẻ trong sản xuất hàng loạt (nếu vi điều khiển của bạn có USB trên tàu). Con: Bạn cần kiến ​​thức chi tiết về USB.

+0

Đơn giản, và cho vấn đề. Nó chỉ ra rằng người quản lý của tôi đã nói về việc thực hiện một cổng COM ảo. Cảm ơn! –

+0

Liên kết bị hỏng. Nó có nên ở đây bây giờ không? http://www.usb.org/developers/docs/ –

+1

@cp engr: Cảm ơn bạn đã gợi ý. Liên kết của bạn đi đúng hướng. Một bước sâu hơn và bạn đi đến thông số kỹ thuật của lớp USB nơi có thể tìm thấy đặc tả CDC: [www.usb.org/developers/docs/devclass_docs/](http://www.usb.org/developers/docs/devclass_docs/). – Habi

11

Bạn cần phải thực hiện các thiết bị ngăn xếp như một thiết bị CDC ACM (còn gọi là ảo cổng COM hoặc VCP). Hầu hết các nhà cung cấp vi điều khiển có hỗ trợ USB đều có mã mẫu hoặc ghi chú ứng dụng.

Cho rằng, thiết bị của bạn sẽ giống như một cổng COM theo như Windows được quan tâm. Ở cuối thiết bị, bạn sẽ nhận được các khối dữ liệu thô được chuyển. Một lớp trừu tượng thích hợp có thể được triển khai cho cả hai giao diện UART và USB để cung cấp cho giao diện tương tự nếu cần thiết.

Một lưu ý là thiết bị USB yêu cầu ID nhà cung cấp do Diễn đàn của người triển khai USB cấp, tại số $5000 fee (đúng 23 tháng 1 năm 2016). Nếu bạn định phát hành thiết bị của mình trong môi trường hoang dã, bạn thực sự cần một thiết bị nếu thiết bị của bạn được nhận diện và hoạt động chính xác với các thiết bị khác. Một số nhà cung cấp vi điều khiển sẽ cho phép bạn sử dụng ID nhà cung cấp của họ cho một tập hợp con ID sản phẩm miễn phí hoặc một khoản phí nhỏ hơn, nhưng họ chỉ có thể làm điều đó nếu bạn mua số lượng thiết bị đáng kể từ họ.

Một vấn đề khác là trong khi trên OSX hoặc Linux, CDC/ACM được nhận diện mà không cần bất kỳ trình điều khiển bổ sung nào, Windows cồng kềnh hơn và yêu cầu tệp INF để liên kết Nhà cung cấp USB và ID sản phẩm cụ thể với trình điều khiển usbser.sys. Sau đó, bạn nhận được vào toàn bộ thế giới của ký trình điều khiển, đó là điều cần thiết nếu sử dụng Windows Vista 64, hoặc bất kỳ phiên bản của Windows 7. Chữ ký ký mã cũng sẽ chi phí bạn tiền. Nếu nhà cung cấp của bạn đã cung cấp mã VCP mẫu, thì họ cũng có thể cung cấp trình điều khiển đã ký. Ví dụ VCP STM32 của STMicroelectronios thậm chí còn được chứng nhận WHQL do đó có thể được mua tự động thông qua Windows Update. Vì vậy, upshot là để thử nghiệm, bạn có thể làm điều đó nếu nhà cung cấp của bạn đã cung cấp mã và trình điều khiển đã ký (hoặc bạn không sử dụng Windows), nhưng để triển khai một sản phẩm, bạn sẽ cần một ID nhà cung cấp và ký mã chứng chỉ. Đó là một chút của một bãi mìn để trung thực.

Cách tiếp cận đơn giản hơn là sử dụng chip FTDI USB < -> Chip nối tiếp. Điều này đặc biệt hữu ích đối với vi điều khiển không có bộ điều khiển USB, nhưng tốc độ truyền dữ liệu sẽ bị giới hạn bởi vi mô và/hoặc giao diện UART của FTDI thay vì tốc độ USB. Một chip FTDI có thể được sử dụng như đang sử dụng VID/PID của FTDI hoặc bạn có thể tùy chỉnh nó bằng VID/PID của riêng bạn.Việc tùy chỉnh đặt bạn trở lại cần phải có được một VID và một chứng chỉ ký, nhưng cho phép thiết bị của bạn được xác định duy nhất hơn là một cổng nối tiếp chung chung.

+3

Tôi sẽ thêm điều này: Tránh bất kỳ dongle USB-Serial nào dựa trên PL2303 - bản thân chipset có vẻ như flakey và trình điều khiển cho cả Windows và MacOSX không đáng tin cậy. Tin xấu thực sự khi gỡ lỗi phần cứng nhúng và bạn đang dựa vào cổng nối tiếp để gỡ lỗi. – marko

+2

Tôi có thể xác minh sự cố trên cửa sổ bằng bộ điều hợp PL2303. Màn hình màu xanh và các loại tương tự nếu có quá nhiều dữ liệu trên nhiều bộ điều hợp vv. Ngoài ra, một vài biến thể của các bộ điều hợp này mà tôi đã sử dụng đã hoạt động khá tốt trong Linux. –

+0

Tôi quan tâm đến việc sử dụng một bảng sử dụng chip FTDI USB-to-Serial và đã tự hỏi làm thế nào nó sẽ giao diện với một cổng USB của bộ điều khiển vi điều khiển STM32. Tôi tự hỏi làm thế nào tôi sẽ giao tiếp với nó từ quan điểm của bộ điều khiển vi mô. Từ sự hiểu biết của tôi (mà tôi thừa nhận là có giới hạn), đối với các vi để nhận ra nó như là một VCP nó sẽ yêu cầu trình điều khiển FTDI VCP. Tôi không chắc chắn nếu nó thậm chí có thể cài đặt này trên vi STM32 và đã hy vọng để xem nếu có bất kỳ lựa chọn thay thế để interfacing với hội đồng quản trị qua USB. – mban

Các vấn đề liên quan