硬汉嵌入式论坛

 找回密码
 立即注册
查看: 997|回复: 5
收起左侧

STM32H7B0使用USB3300,高速自定义HID发送很容易失败

[复制链接]

13

主题

24

回帖

63

积分

初级会员

积分
63
发表于 2023-4-13 10:56:39 | 显示全部楼层 |阅读模式
本帖最后由 ywg121020 于 2023-4-13 11:33 编辑

使用cubeMX生成的自定义HID设备,使用外部PHY,可以成功枚举USB设备,使用bus hound抓包描述符也是显示正常的。然后发送1024字节,上位机可以接收到数据,下位机发送字节下位机也能接收到。现在的问题就是当我按500us循环在下位机发送1024字节,有时候usb会发送异常, USBD_CUSTOM_HID_SendReport(&hUsbDeviceHS,buf,1024)返回的是CUSTOM_HID_BUSY,不管等待多久一直会返回CUSTOM_HID_BUSY。后续上位机发数据,下位机还是能收到的,但是下位机是无法发数据了,这个忙状态没法置空闲。这种情况有朋友碰到过吗,该怎么解决这种问题

USB重新插拔后又工作正常了,不会进BUSY但是运行一段时间后还是会出现这个问题,出现的频率很高,有时候几秒,有时候1,2分钟。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106590
QQ
发表于 2023-4-13 14:07:18 | 显示全部楼层
你的RX FIFO开的多大,搞的大些。
回复

使用道具 举报

13

主题

24

回帖

63

积分

初级会员

积分
63
 楼主| 发表于 2023-4-13 14:43:52 | 显示全部楼层
  HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_HS, 0x80);
  HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS, 0, 0x280);
  HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS, 1, 0x280);

这个参数是这样的
回复

使用道具 举报

13

主题

24

回帖

63

积分

初级会员

积分
63
 楼主| 发表于 2023-4-13 15:33:17 | 显示全部楼层
eric2013 发表于 2023-4-13 14:07
你的RX FIFO开的多大,搞的大些。

感谢感谢,太感谢了,捣鼓了3天,愣是没解决这个问题,您一句话就解决了这个问题。原本RX只有0x80,现在开到0x200就很少看到BUSY了,偶然的还是有,但是已经不会像挂掉一样,接收不到数据了。
回复

使用道具 举报

13

主题

24

回帖

63

积分

初级会员

积分
63
 楼主| 发表于 2023-4-16 13:07:41 来自手机 | 显示全部楼层
eric2013 发表于 2023-4-13 14:07
你的RX FIFO开的多大,搞的大些。

硬汉再问个问题,usbhid中断传输1024个字节,上位机接收数据会丢包吗,500us的发送频率,接收1,200帧后可能会丢一个包,丢包频率不定
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106590
QQ
发表于 2023-4-17 01:43:03 | 显示全部楼层
ywg121020 发表于 2023-4-16 13:07
硬汉再问个问题,usbhid中断传输1024个字节,上位机接收数据会丢包吗,500us的发送频率,接收1,200帧后 ...

这速度不应该丢包
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-26 05:11 , Processed in 0.187644 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表