我正在使用stm32L151通过USB CDC与PC通信。我使用stm32 HAL库来创建我的项目。 我发现usb以1ms的间隔发送数据,每次发送64个字节。那么,USB CDC的最高速度是64kbyte / s吗?而且这个速度远低于USB全速12Mbit /秒。我怎么能达到这个速度?或者至少是这个速度的一小部分? 感谢
答案 0 :(得分:0)
不。如果您的代码“足够快”,则最大CDC速度约为1MByte/sec
。这可能需要设备侧的大(> 1KB)FIFO。哦,PC端必须能够足够快地读取数据,例如有很大的缓冲。
64KByte / s限制适用于使用中断端点的USB HID。 USB CDC接口使用更快的批量端点。
答案 1 :(得分:0)
USB FS帧为1ms,因此如果您将64个字节放入缓冲区(使用HAL功能) - 它将在下一帧中发送这64个字节。并且它将不再发送任何数据,直到另一个1ms帧
如何提高此速度 - >将您的数据汇总到更大的块中,并在一个事务中发送更多数据(使用HAL库最多可达8kB)。