2017-01-03 166 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。