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

FULL-SPEED USB中断传输提升传输速度

[复制链接]
黑云龙霸 提问时间:2017-9-22 09:16 /

大家好,现在在做一个接口板项目,开发平台STM32F105RBT6,使用USB,3路USART(115200bps)、2路can(500kbps)与上位机的通讯。
现在项目做了一部分,使用中断传输方式传输数据,因为USB是FULL-SPEED设备,CAN只能做到50K,达不到项目需求。


现在碰到困难,中断传输速度只有64KB/s,太慢了。怎么才能提高全速设备中断传输的速度呢?

收藏 评论11 发布时间:2017-9-22 09:16

举报

11个回答
MrJiu 回答时间:2017-9-22 09:25:40
加buffer,和使用DMA!!!
黑云龙霸 回答时间:2017-9-22 10:25:19
MrJiu 发表于 2017-9-22 09:25
加buffer,和使用DMA!!!

不好意思,不明白加buffer是在哪里加,可以详细说一下吗
MrJiu 回答时间:2017-9-22 14:23:32
黑云龙霸 发表于 2017-9-22 10:25
不好意思,不明白加buffer是在哪里加,可以详细说一下吗

就是增大缓存。。。。
xiaoxiao0932 回答时间:2019-5-16 13:34:56
MrJiu 发表于 2017-9-22 14:23
就是增大缓存。。。。

你好!
请教有关STM32 USB CDC通信的问题
1、我使用的是stm32L476RG,使用USB CDC 将flash中的数据读取到pc,USB的传输速度只能在300K/S左右,看到你在论坛中说过增大缓存可以提高速度,这个缓存指的是什么?发送的数组?
2、如何使用DMA  
STM32CubeMX生成的代码中,有关USB-DMA的操作在什么地方?如何使用的,还请多多指教啊
天臆弄人 回答时间:2019-5-17 09:00:58
xiaoxiao0932 发表于 2019-5-16 13:34
你好!
请教有关STM32 USB CDC通信的问题
1、我使用的是stm32L476RG,使用USB CDC 将flash中的数据读取到 ...

你听他瞎扯,中断传输,全速就是64K的速率,USB没有DMA配置,只有RAM到RAM配置,
要想速率快看下我发的贴子,USB发速度可以到700K,接收可以到650K
xiaoxiao0932 回答时间:2019-5-17 09:31:17
天臆弄人 发表于 2019-5-17 09:00
你听他瞎扯,中断传输,全速就是64K的速率,USB没有DMA配置,只有RAM到RAM配置,
要想速率快看下我发的贴 ...

还请帮忙啊,我在你的主题中只找到了测试了下STM32f103 CDC 的速率
只有截图,没有代码相关的信息啊,具体有关USB CDC传输数据的相关内容在哪个帖子里呢?
天臆弄人 回答时间:2019-5-17 09:33:03
xiaoxiao0932 发表于 2019-5-17 09:31
还请帮忙啊,我在你的主题中只找到了测试了下STM32f103 CDC 的速率
只有截图,没有代码相关的信息啊,具 ...

你的是F4 我的是F1呀,关于速率问题,和上位机有关,
xiaoxiao0932 回答时间:2019-5-17 09:41:12
天臆弄人 发表于 2019-5-17 09:33
你的是F4 我的是F1呀,关于速率问题,和上位机有关,

USBD_CDC_SetTxBuffer(&USBD_Device, (uint8_t*)pBuf, 64);
USBD_CDC_TransmitPacket(&USBD_Device);
我用的是L476RG进行USB cdc数据传输的,通过上面的函数发送到PC端,如果将64改为更大256/512/1024/就会出现数据丢包的现象。
我想问的是:
1、你在发送数据时,每包数据的长度为多少?64? 128?256?512?1024?
2、比如说给PC端发送一个50M的数据,多次发送,PC端每次接收的数据是否一致?是否验证过?
3、在满足问题2 的情况下,USB的传输速度能达到多少?
xiaoxiao0932 回答时间:2019-5-17 09:48:38
天臆弄人 发表于 2019-5-17 09:33
你的是F4 我的是F1呀,关于速率问题,和上位机有关,

这个审核机制时间好长啊
xiaoxiao0932 回答时间:2019-5-17 09:48:57
天臆弄人 发表于 2019-5-17 09:33
你的是F4 我的是F1呀,关于速率问题,和上位机有关,

USBD_CDC_SetTxBuffer(&USBD_Device, (uint8_t*)pBuf, 64);
USBD_CDC_TransmitPacket(&USBD_Device);
我用的是L476RG进行USB cdc数据传输的,通过上面的函数发送到PC端,如果将64改为更大256/512/1024/就会出现数据丢包的现象。
我想问的是:
1、你在发送数据时,每包数据的长度为多少?64? 128?256?512?1024?
2、比如说给PC端发送一个50M的数据,多次发送,PC端每次接收的数据是否一致?是否验证过?
3、在满足问题2 的情况下,USB的传输速度能达到多少?
xiaoxiao0932 回答时间:2019-5-17 09:49:14
USBD_CDC_SetTxBuffer(&USBD_Device, (uint8_t*)pBuf, 64);
USBD_CDC_TransmitPacket(&USBD_Device);
我用的是L476RG进行USB cdc数据传输的,通过上面的函数发送到PC端,如果将64改为更大256/512/1024/就会出现数据丢包的现象。
我想问的是:
1、你在发送数据时,每包数据的长度为多少?64? 128?256?512?1024?
2、比如说给PC端发送一个50M的数据,多次发送,PC端每次接收的数据是否一致?是否验证过?
3、在满足问题2 的情况下,USB的传输速度能达到多少?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版