你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何使用usb一次性发送一包超过1.5M的数据

[复制链接]
lamblee 提问时间:2023-8-31 10:03 / 未解决

目前我正在用disco stm32f746g的板子通过高速usb给上位机传输数据,因为数据量比较大,所以一包数据就超过1.5M。上位机是一个很多年前写的成熟版本,无法更改。高速usb的缓存达不到1.5M,所以如何分包发送?有人遇到过类似的问题吗?

收藏 评论4 发布时间:2023-8-31 10:03

举报

4个回答
butterflyspring 回答时间:2023-8-31 17:31:46
如果用CDC 类,协议栈应该可以自动实现分包数据了。
lamblee 回答时间:2023-9-4 14:17:35

butterflyspring 发表于 2023-8-31 17:31
如果用CDC 类,协议栈应该可以自动实现分包数据了。

我目前用的就是cdc类,一包最多发送0.5Mbyte数据,如何进行分包有类似的案例吗?

butterflyspring 回答时间:2023-9-4 16:37:17
通常buffer 的大小很关键。?
但是刚刚想到,1.5M的数据相当大,芯片没那么大的RAM。 物理瓶颈,所以多半还须要分包。

STM32F769 USB Buffer.png

lamblee 回答时间:2023-9-4 17:18:05

我使用外部SDRAM,有8M空间。但是我刚刚查了一下stm32f746的芯片手册,高速usb的传输数据XFRSIZ 位宽仅有19 位,也就是0.5MByte,上位机没有源码又无法修改。所以只能在USBD_CDC_DataIn函数里面续包发送数据,但是未能成功续发。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版