我正在开展这个项目,我应该使用USB协议将数据从微控制器传输到PC。我正在使用STM32F407微控制器通过USB协议将数据传输到PC。
我正在使用libsub在Windows 7中传输数据。
我用STM32cubeMX编写了一个程序并配置了USB设备类库。我可以使用CDC虚拟COM端口传输数据,但我想用libusb传输数据。我为我的设备安装了libusb驱动程序,但是当我从微控制器向PC发送数据时,没有任何内容发送!!!!
我的问题是什么?如何通过USB和高速将数据从USB设备发送到PC?
答案 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。