打印
[STM32H7]

一个疏忽导致USB的BULK传输过慢

[复制链接]
3311|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天做STM32H7A3->PC的USB数据发送速度测试,发现数据传输速率一直很低:

这个速率是我无法接受的,甚至不如HID,可是接收速度却很快,将近900KB/S的速率。
上位机采用传输每调用一次发送函数就会发送63字节的数据,速度显示约为900KB/S,那会不会STM32端每次也只能发送63字节的数据?可考虑到STM32的USB在发送大于最大包长(full speed情况下为64字节)小于缓冲区容量的情况下应该会自动分包,而且用CDC例程一次性发送1K数据也没有这么慢过。
偶然间在Bus Hound查看STM32H7A3的USB信息,发现USB的最大包长不对:

虽然STM32H7A3有USB HS,但实际使用的是full speed模式,所以最大包长应为64而不是512。查看源码发现配置描述符关于最大包长写错了:

修改如下:

最后测试发现速度有明显提升:

一个小小的失误导致USB传输速度明显下降实属不该,以后写程序还是需要多点细心。
工程文件如下:
STM32H7A3_WINUSB独立库_下位机发送速度测试.zip (999.91 KB)
WINUSB上位机.zip (100.3 KB)

使用特权

评论回复
沙发
yangxiaor520| | 2021-8-7 17:48 | 只看该作者
学习了,感谢分享经验。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

407

帖子

5

粉丝