打印
[STM32F4]

F4 HAL库USB 多包数据传输

[复制链接]
708|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yinxiangh|  楼主 | 2021-1-7 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要用STM32F429通过USB上传一张2-3Mbyte图片,根据HID的例程修改,通过USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, data_to_send, 64)函数每次上传64个字节一个包一个包地传。找到的例程基本就是用这个发送函数发送一个小于64字节的包。如果单独这样一个包一个包地循环发送,丢包会很严重,如果每个包发送中间加1ms的延时,则不会丢包。

使用特权

评论回复
沙发
chenjunt| | 2021-1-7 23:06 | 只看该作者

然后呢?你是怎么应对这个的呢        

使用特权

评论回复
板凳
yinxiangh|  楼主 | 2021-1-7 23:13 | 只看该作者
传送效率大受影响

使用特权

评论回复
地板
langgq| | 2021-1-7 23:17 | 只看该作者
每一个包发送完成后会产生一个中断,函数进入EP1_IN_Callback回调函数在里面加一个标志位

使用特权

评论回复
5
zhanglli| | 2021-1-7 23:21 | 只看该作者
HAL库里面没有找到相应的回调函数

使用特权

评论回复
6
xxrs| | 2021-1-7 23:29 | 只看该作者
每一个包发送前去判断是否收到主机发送的IN 令牌

使用特权

评论回复
7
yinxiangh|  楼主 | 2021-1-7 23:32 | 只看该作者
但我尝试在每次发包前去判断OTG_FS_DIEPINT1寄存器的ITTXFE位,也没有什么效果

使用特权

评论回复
8
yinxiangh|  楼主 | 2021-1-7 23:36 | 只看该作者
请教下有用过HAL库做过USB多包传输的朋友。

使用特权

评论回复
9
dingy| | 2021-1-7 23:40 | 只看该作者
看看可不可以将包容量变大

使用特权

评论回复
10
llljh| | 2021-1-7 23:46 | 只看该作者

每个包发送完是不是有个标志位,你通过这个标志位控制。

使用特权

评论回复
11
yinxiangh|  楼主 | 2021-1-7 23:49 | 只看该作者
就是在一直找这个标志位哈,测试了OTG_HS_DIEPINT1寄存器的ITTXFE(Bit 4 ITTXFE: IN token received when TxFIFO is empty
Applies to non-periodic IN endpoints only.
Indicates that an IN token was received when the associated TxFIFO (periodic/non-periodic)
was empty. This interrupt is asserted on the endpoint for which the IN token was received.). 就是在每一次发送前确保这个ITTXFE置1,用BUS HOUND仍然丢包严重。

使用特权

评论回复
12
zwll| | 2021-1-7 23:53 | 只看该作者
需要通过bulk传输的方式

使用特权

评论回复
13
renyaq| | 2021-1-7 23:56 | 只看该作者
HID默认用中断传输,每一次主机过来轮询最快也要1ms

使用特权

评论回复
14
yinxiangh|  楼主 | 2021-1-11 20:40 | 只看该作者
采用CDC(虚拟串口)传输。实测也确实达到了860KB/s.

使用特权

评论回复
15
pengf| | 2021-1-11 20:46 | 只看该作者
自定义USB设备类+WinUSB做驱动,想怎么传输就怎么传输

使用特权

评论回复
16
pangb| | 2021-1-11 20:49 | 只看该作者
每包的容量是有上限的吧?

使用特权

评论回复
17
yinxiangh|  楼主 | 2021-1-11 20:53 | 只看该作者

嗯,预料中的结果,多谢大家啦

使用特权

评论回复
18
木木guainv| | 2021-2-3 20:48 | 只看该作者
每次发包之间延时一下

使用特权

评论回复
19
磨砂| | 2021-2-3 20:50 | 只看该作者
只少一个字节的发送回丢包吗

使用特权

评论回复
20
晓伍| | 2021-2-3 20:52 | 只看该作者
按理说64字节不多

使用特权

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

本版积分规则

723

主题

7134

帖子

2

粉丝