2012-10-01 113 views
7

有誰知道是否可以通過USB來模擬UART(簡單串行發送和接收)?這將如何完成?通過USB仿真UART

我在Microchip網站上找到了此鏈接,但它不是非常即將發佈。

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

任何想法?謝謝。

+4

絕對使用FTDI是最好的選擇。 – TJD

+0

FTDI?請解釋。我的經理要求我配置集成的USB外設作爲UART工作。據我所知,這是不可能的,但他堅持認爲是這樣。 –

+0

FTDI芯片將UART轉換爲USB。所以在內部你只需要使用普通的UART外設,但在外部使用USB即可。在個人電腦方面,你會得到一個虛擬的COM端口,這樣你就可以作爲一個普通的串行端口與之交互。這是非常乾淨和容易,以及每個人都這樣做的方式。我無法想象爲什麼你真的需要使用芯片的USB外設。 – TJD

回答

8

基本上,你有兩個選擇來模擬UART通過USB:

  1. 使用現有的產品。 FTDI公司提供衆所周知的固態UART-USB橋芯片,例如FT230X。 Pro:你不需要任何有關USB的詳細知識。缺點:如果用於批量生產,則價格昂貴。額外的硬件需要額外的功率。

  2. 執行USB設備類「通信設備類」(CDC)。 CDC的規格可從USB.org獲得,見here。 Pro:批量生產便宜(如果您的微控制器帶有USB接口)。 Con:你需要詳細的USB知識。

+0

簡單,重要。事實證明,我的經理正在談論實施虛擬COM端口。謝謝! –

+0

鏈接已損壞。它現在應該在這裏嗎? http://www.usb.org/developers/docs/ –

+1

@cp工程師:謝謝你的提示。您的鏈接走向正確的方向。更深入一步,您可以找到CDC規範的USB類規範:[www.usb.org/developers/docs/devclass_docs/](http://www.usb.org/developers/docs/devclass_docs/ )。 – Habi

11

您需要實現設備堆棧作爲CDC ACM設備(也被稱爲虛擬COM端口或VCP)。大多數支持USB的微控制器供應商都有示例代碼或應用筆記。

鑑於此,就Windows而言,您的設備看起來像COM端口。在設備端,您將獲得傳輸的原始數據塊。如果需要,可以爲UART和USB接口實現適當的抽象層,然後提供相同的接口。

一個問題是USB設備需要由USB實施者論壇在$5000 fee(2016年5月23日正確)分配的供應商ID。如果你要在野外釋放你的設備,如果你的設備被識別並且與其他設備正常工作,你確實需要一個設備。一些微控制器供應商將允許您使用他們的供應商ID作爲產品ID的一個子集,免費或收取較小的費用,但他們可能只會在您購買大量設備時才這樣做。

另一個問題是,在OSX或Linux上識別CDC/ACM時沒有任何額外的驅動程序,Windows更加挑剔,並且需要INF文件將特定的USB供應商和產品ID關聯到usbser.sys驅動程序。然後你進入驅動程序簽名的整個世界,如果使用Windows Vista 64或任何版本的Windows 7,這是必不可少的。代碼簽名簽名也會花費你的錢。如果您的供應商提供了示例VCP代碼,他們也可能會提供已簽名的驅動程序。 STMicroelectronios的STM32 VCP示例甚至可以通過WHQL認證,因此可以通過Windows Update自動獲取。

因此,結果是,如果您的供應商已經提供了代碼和已簽名的驅動程序(或者您未使用Windows),那麼對於實驗而言,您可以執行該操作,但要部署產品,您需要供應商ID和代碼簽名證書。說實話,這是一個雷區。

更簡單的方法是使用FTDI USB < - >串行芯片。這對於沒有自己的USB控制器的微控制器特別有用,但數據傳輸速率將受到微型和/或FTDI的UART接口的限制,而不受USB速度的限制。 FTDI芯片可以直接使用FTDI的VID/PID,也可以使用自己的VID/PID進行定製。自定義使您需要獲取VID和簽名證書,但允許您的設備唯一標識,而不是通用串行端口。

+3

我會補充一點:避免使用基於PL2303的任何USB串口加密狗 - 芯片組本身看起來很脆弱,Windows和MacOSX的驅動程序都不可靠。調試嵌入式硬件時真的是個壞消息,而您依靠串口進行調試。 – marko

+2

我可以使用PL2303適配器在窗戶上擔保故障。藍色屏幕等等,如果有多個適配器上的數據太多等。我也使用過這些適配器的幾個變種在Linux下工作得很好。 –

+0

我有興趣使用利用FTDI USB轉串口芯片的電路板,並想知道如何連接到STM32微控制器的USB端口。我想知道如何從微控制器的角度與它溝通。根據我的理解(我承認這是有限的),爲了讓微型公司認識到它是一個VCP,它需要FTDI VCP驅動程序。我不確定是否可以在STM32微處理器上安裝它,並希望看看是否有其他方法可以通過USB與電路板連接。 – mban