Usb Device Hid速度优化

本文详细记录了项目中通过PC上位机提高USB HID设备数据传输速度的过程,涉及中断与bulk端点设置、bInterval调整,以及端点0的使用。寻求进一步优化建议以提升到理论极限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要使用usb hid设备,通过pc端上位机下发数据到小机端。但测试速度并不理想,记录下优化过程,后续如果有大神能指点一二甚是感激。

Host端下发数据到device端:

1:hid设备使用中断端点传输数据,且受协议限制,每次只能发送report_length长度的数据。

2:根据抓包数据来看,每次host端发送数据开始到device端回复ack时间为9us;和bulk传输时ack响应时间一致,故此处没有优化点。

3:1)当将所有端点描述中的bInterval为0xff时每两次out数据包间隔时间为4ms;每次发送512Byte理论速度只能达到125Kbye/S(但此处4ms时间和设置的0xff*125us的时间并不一致))

        

 

      2)当将out端点描述中的bInterval为1,in端点中bInterval为0xff,时每两次out数据包间隔时间为750us,每次发送512Byte理论速度只能达到666Kbye/S和实际测量相符合。

                

    3)当将所有端点描述中的bInterval为1时每两次out数据包间隔时间为750us,每次发送512Byte理论速度只能达到666Kbye/S和实际测量相符合。(但此处750us时间和设置的0x1*125us的时间并不一致)。

                

4:根据hid spec来看:Hid仅仅使用中断和控制端点,并不能使用bulk端点传输数据(有人说能设置out端点为bulk类型)。实际测试过程中将out端点设置为bulk时,host并不通过out端点下发数据,是通过端点0的set_report发送数据,和spec中的描述一致。(但ep0大小仅为64Byte故使用ep0来传输数据肯定要比使用专门中断端点传输要慢,故不再做ep0传送host数据优化)

                        

当前pc端测试out端点结果 仍然为666KB/s暂时没能找到进一步优化的方向。有大神是否能指点一二,感激不尽..............

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值