2017-01-03 58 views
-2

我正在開發一個應用USB協議將數據從微控制器傳輸到PC的項目。我正在與STM32F407微控制器一起使用USB協議將數據傳輸到PC。通過USB CDC將數據從STM32F407傳輸到libusb

我使用libsub在Windows 7  

我已經寫了一個程序,STM32cubeMX並配置了USB設備的類庫傳輸數據。我可以使用CDC虛擬COM端口傳輸數據,但我想用libusb傳輸數據。我爲我的設備安裝libusb驅動程序,但是當我將數據從微控制器發送到PC時,沒有任何東西發送!

我的問題是什麼?如何使用USB和高速將USB設備的數據發送到PC?

Enter image description here

回答

0

在USB協議中的主機裝置發起任何傳輸,例如批量傳輸。我假設ST32f407是設備和PC ist 主機,因此ST32不能啓動任何USB傳輸。通過虛擬COM通訊工作,因爲它的虛擬COM就像一個隧道,但是這條隧道也initated是(邏輯),更讓由主機(PC)

大宗交易

像所有其他USB傳輸,主機總是啓動批量傳輸。通信發生在主機和目標端點之間。 USB協議不會在批量事務中發送的數據上執行任何格式。

源:https://msdn.microsoft.com/de-de/library/windows/hardware/ff539199%28v=vs.85%29.aspx

傳輸被啓動,並由主機和USB 外設從站響應主機命令

控制所有數據

源:https://www.midi.org/articles/basic-of-usb

在USB

即使中斷也必須等到主機輪詢後:

任何有過 微控制器中斷請求經驗的人都知道中斷是由設備產生的。 但是在USB下如果一個設備需要主機的注意,它必須等到主機輪詢它才能報告它需要緊急注意!

來源:http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt

http://www.beyondlogic.org/usbnutshell/usb4.shtml#Bulk批量傳輸

所以,你可以從設備發送數據到主機,但主機必須建立通信的意義已「問」的數據。這是通過批量輸入端點完成的,用於將數據從設備讀取到主機

+0

謝謝你。所以認識到我的司機有從answer.how問題,我可以解決這個問題? –

+0

因爲ST32是USB設備,所以您不需要ST32上的libusb驅動程序。 libusb驅動程序必須安裝在USB主機(PC)上。然後,您可以使用'lsusb -v'通過其固件或操作系統查看在ST32上實現的USB結構。如果您知道ST32(設備,USB類,接口,配置,端點,...)的USB樹的結構,您可以使用* libusb *通過使用'libusb_bulk_transfer( ...)或控制轉移... –

-1

我有一個項目使用STM32F4和libusb在GitHub但使用Linux。它的工作速度高於256Kbytes/s。