STM32 USB CDC的最大速度是多少?
问题描述:
我使用stm32L151通过USB CDC与PC进行通信。我使用stm32 HAL库来创建我的项目。 我发现USB发送数据的间隔为1ms,每次发送64字节。那么,USB CDC的最大速度是64kbyte/s?而且这个速度远低于USB全速12Mbit /秒。我如何才能达到这个速度?或至少是这个速度的一小部分? 谢谢STM32 USB CDC的最大速度是多少?
答
没有。如果您的代码“足够快”,则最大CDC速度大约为1MByte/sec
。这可能需要在设备端有一个大的(> 1KB)FIFO。哦,并且PC侧必须能够足够快地读取数据,例如有很大的缓冲。
64KByte/s限制适用于使用中断端点的USB HID。 USB CDC接口使用更快的批量终端。
答
USB FS帧为1ms,所以如果你将64个字节放入缓冲区(使用HAL功能) - 它会在下一帧发送这64个字节。它将不会再发送更多的数据,直到另一个1ms帧
如何提高速度 - >将数据集中在更大的块中,并在一个事务中发送更多的数据(使用HAL库高达8kB)。
Thanks @Turbo J.如前所述,我使用HAL库,我使用函数CDC_Transmit_FS()将数据发送到PC。我应该如何使用此功能达到1MB/s?我有一个2K字节的大缓冲区,但是端点大小是64字节。我在示波器中看到usb每1毫秒发送一次数据。如果CDC功能使用端点发送数据,它可以每1ms发送64byte?我想错了吗?还有一个问题:是否有免费的软件来检查传入的数据波特率?谢谢 – Mohammad