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

通过USB CDC类将数据从STM32F407传输到libusb,usb,stm32,libusb,cdc,Usb,Stm32,Libusb,Cdc,我正在做一个项目,我应该用USB协议将数据从微控制器传输到PC。我正在使用STM32F407微控制器将数据传输到具有USB协议的PC 我正在使用libsub在Windows7中传输数据 我用STM32cubeMX编写了一个程序,并配置了USB设备类库。我可以用CDC虚拟COM端口传输数据,但我想用libusb传输数据。我为我的设备安装了libusb驱动程序,但是当我从微控制器向PC发送数据时,什么都不发送 我有什么问题?如何使用USB和高速从USB设备向PC发送数据 在USB协议中,主机设备启动

我正在做一个项目,我应该用USB协议将数据从微控制器传输到PC。我正在使用STM32F407微控制器将数据传输到具有USB协议的PC

我正在使用libsub在Windows7中传输数据

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

我有什么问题?如何使用USB和高速从USB设备向PC发送数据

在USB协议中,主机设备启动任何传输,例如批量传输。我假设ST32f407是设备,pc是主机,因此ST32无法启动任何USB传输。虚拟COM上的通信之所以有效,是因为虚拟COM就像一个隧道,但这个隧道也是由主机pc初始化并在逻辑上保持活动状态的

批量交易

与所有其他USB传输一样,主机始终启动批量传输 转移通信发生在主机和主机之间 目标端点。USB协议不在服务器上强制任何格式 在批量事务中发送的数据

资料来源:

所有数据传输均由主机和USB启动和控制 外围设备是响应主机命令的从属设备

资料来源:

在usb中,即使中断也必须等待主机轮询:

任何一个有过网络中断请求经验的人 微控制器将知道中断是由设备产生的。 但是,在USB下,如果设备需要主机注意,则必须等到主机轮询该设备后,才能报告其需要 紧急注意

资料来源:

有关批量传输,请参阅


因此,您可以将数据从设备发送到主机,但主机必须建立通信,即“请求”数据。这是通过批量输入端点完成的,该端点用于将数据从设备读取到主机

我有一个使用STM32F4和libusb的项目,但使用Linux。它在256Kbytes/s以上工作。

谢谢。因此,从您的回答中可以看出,我的驱动程序有问题。我如何解决此问题?您不需要ST32上的libusb驱动程序,因为ST32是USB设备。必须在USB主机PC上安装libusb驱动程序。然后,您可以使用lsusb-v查看通过其固件或操作系统在ST32上实现的USB结构。如果您知道ST32设备的USB树结构、USB类、接口、配置、端点等,。。。您可以使用libusb启动到其中一个端点的批量传输,即使用libusb_bulk_transfer。。。或者控制权转移。。。