找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

M463的hsusbd收发速度慢是什么原因

[复制链接]
楼主
chrishu 发表于 2024-3-29 17:51:41 | 显示全部楼层
用软件去读会慢一些,可以用DMA的去搬,参考HSUSBD_Mass_Storage_ScatterGather例程。你说的30M是怎么测试的?用usb分析仪去抓的总线上的传输还是测试的主机开始发,到从机处理完?
USB不是所有时间全部用于传输:要遵循USB协议,传输由事务组成,事务不能跨帧(高速125us/微帧)
也不是说每帧里的所有数据都是有效数据,还包含了协议的开销。

理论上高速USB 批量传输最大传输速率50.78MB/s
回复 支持 反对

使用道具 举报

沙发
chrishu 发表于 2024-4-2 17:00:15 | 显示全部楼层
是测试的下面这两条语句的执行时间吗?还是测的整个中断处理时间?
for(i = 0; i < gu32RxSize; i++)
            gUsbRxBuf[i] = HSUSBD->EP[EPB].EPDAT_BYTE;
应该不需要170us那么长,有设置其他优先级高的中断嵌套吗?
批量传输 建议用DMA
回复 支持 反对

使用道具 举报

板凳
chrishu 发表于 2024-4-7 15:01:47 | 显示全部楼层
游客 113.225.162.x 发表于 2024-4-5 09:25
测试的这个语句的执行时间,gu32RxSize=512
for(i = 0; i < gu32RxSize; i++)
            gUsbRxBuf = H ...

可以的。DMA只有一路,可以用基本模式,在某个端点收到数据后去设置DMA,根据设定值搬运完后,DMA就释放。其他通道可以再用它
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU