我正在使用STM32L151通过USB CDC与PC通信。 我使用了STM32 HAL库创建我的项目。 我发现USB以1毫秒间隔发送数据,每次发送64字节。那么,USB CDC的最大速度是64 kbyte/s吗?这远低于USB全速数据传输速率12 Mbit/s。如何达到这个速度,或者至少达到这个速度的一部分?
不行。如果你的代码足够"快",那么CDC的最大速度大约为1MByte/sec
。这可能需要在设备端使用一个大的(>1KB)FIFO。哦,而且PC端必须能够足够快地读取数据,例如使用大缓冲区。
USB HID的64KByte/s限制仅适用于使用中断端点的USB HID。 USB CDC接口使用更快的批量端点。
USB FS帧为1毫秒,因此如果您将64字节放入缓冲区(使用HAL函数),它将在下一帧中发送这64字节。它在另一个1ms帧之前不会发送任何更多的数据。
如何增加传输速度 -> 将您的数据聚合到更大的块中,并在一个事务中发送更多的数据(使用HAL库,最多可达8KB)。