找回密码
 立即注册
查看: 873|回复: 3

反馈USB HID 例程中一个 BUG

[复制链接]

7

主题

22

回帖

257

积分

中级会员

积分
257
发表于 2023-4-18 20:34:54 | 显示全部楼层 |阅读模式
问题现象是: 拔插USB接口时不稳定,偶尔出现单片机不发数据。   具体原理不清楚,最后推测问题出在 usb_reset  函数中  UsbInBusy 没有清 0!

void usb_reset()
{
    usb_write_reg(FADDR, 0x00);
    DeviceState = DEVSTATE_DEFAULT;
    Ep0State.bState = EPSTATE_IDLE;

#ifdef EN_EP1IN
    usb_write_reg(INDEX, 1);
    usb_write_reg(INCSR1, INCLRDT | INFLUSH);
#endif
#ifdef EN_EP2IN
    usb_write_reg(INDEX, 2);
    usb_write_reg(INCSR1, INCLRDT | INFLUSH);
#endif
#ifdef EN_EP3IN
    usb_write_reg(INDEX, 3);
    usb_write_reg(INCSR1, INCLRDT | INFLUSH);
#endif
#ifdef EN_EP4IN
    usb_write_reg(INDEX, 4);
    usb_write_reg(INCSR1, INCLRDT | INFLUSH);
#endif
#ifdef EN_EP5IN
    usb_write_reg(INDEX, 5);
    usb_write_reg(INCSR1, INCLRDT | INFLUSH);
#endif
#ifdef EN_EP1OUT
    usb_write_reg(INDEX, 1);
    usb_write_reg(OUTCSR1, OUTCLRDT | OUTFLUSH);
#endif
#ifdef EN_EP2OUT
    usb_write_reg(INDEX, 2);
    usb_write_reg(OUTCSR1, OUTCLRDT | OUTFLUSH);
#endif
#ifdef EN_EP3OUT
    usb_write_reg(INDEX, 3);
    usb_write_reg(OUTCSR1, OUTCLRDT | OUTFLUSH);
#endif
#ifdef EN_EP4OUT
    usb_write_reg(INDEX, 4);
    usb_write_reg(OUTCSR1, OUTCLRDT | OUTFLUSH);
#endif
#ifdef EN_EP5OUT
    usb_write_reg(INDEX, 5);
    usb_write_reg(OUTCSR1, OUTCLRDT | OUTFLUSH);
#endif
    usb_write_reg(INDEX, 0);
  UsbInBusy = 0; // 这个地方需要将繁忙状态清零 !!!!!!!!!!!!
}

另外,涉及到串口的,  USB 中断中读写 FIFO 数据较多时(比如64字节), 可能会导致错过串口中断,或者串口溢出。

PS:希望国产越做越好
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-4-19 08:54:23 | 显示全部楼层
谢谢反馈,无论你描述的问题是否与这个有关
但在这里清一下Busy标志位肯定是没错的
至于为什么会出现偶尔不发数据的现象还需要确认
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-07 20:14:43

5

主题

14

回帖

145

积分

注册会员

积分
145
发表于 2023-11-30 17:29:26 | 显示全部楼层
本帖最后由 众哲之师 于 2023-11-30 17:53 编辑

拔插USB接口时不稳定,偶尔出现单片机不发数
<-- 你的测试环境时怎样的啊?程序框架上肯定是确保连接成功上下位机才会收发数据啊
<-- 另外,HID发送数据不能呢太快的,否则会卡死

USB中断读写FIFO数据过多可能会导致错过串口中断或者串口溢出
<-- 或者使串口的优先级高于 USB中断的优先级
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:339
  • 最近打卡:2025-05-02 12:21:25

4

主题

242

回帖

1291

积分

金牌会员

积分
1291
发表于 2023-12-2 15:05:19 | 显示全部楼层
实测过没有,还是只是推测,没有实测很容易误导人的
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 12:56 , Processed in 0.125192 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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