通过USB CDC类将数据从STM32F407传输到libusb

时间:2017-01-03 12:29:21

标签: usb stm32 libusb cdc

我正在开展这个项目,我应该使用USB协议将数据从微控制器传输到PC。我正在使用STM32F407微控制器通过USB协议将数据传输到PC。

我正在使用libsub在Windows 7中传输数据。

我用STM32cubeMX编写了一个程序并配置了USB设备类库。我可以使用CDC虚拟COM端口传输数据,但我想用libusb传输数据。我为我的设备安装了libusb驱动程序,但是当我从微控制器向PC发送数据时,没有任何内容发送!!!!

我的问题是什么?如何通过USB和高速将数据从USB设备发送到PC?

Enter image description here

2 个答案:

答案 0 :(得分:1)

在USB协议中,主机设备启动任何传输,例如批量传输。我假设ST32f407是设备,而pc是主机,因此ST32无法启动任何USB传输。通过虚拟COM进行通信是因为虚拟COM就像一个隧道,但是这个隧道也被启动并且(逻辑上)被主机(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

因此,您可以将数据从设备发送到主机,但主机必须建立通信意义已经问过'对于数据。这是通过批量IN端点完成的,用于将数据从设备读取到主机

答案 1 :(得分:-1)

我有一个项目使用STM32F4和libusb在GitHub但是使用Linux。它的工作速度超过256Kbytes / s。