Skip to content

dwc2_reset 方法在HS上需要修改手动清除RST状态 #276

Closed
@Clearhu

Description

@Clearhu

描述一下这个bug / Describe the bug

我在一款测试芯片上,发现 USB_OTG_GLB->GRSTCTL |= USB_OTG_GRSTCTL_CSRST 后该位一直保持为1,并没有自动清除

复现步骤 / To Reproduce

内部测试芯片所以无法给出复现方法,可能其他芯片会遇到

设备信息 / Target Device

内部测试芯片所以无法给出复现方法

日志 / Log

错误的日志:
00> GRSTCTL111: 80000000, 40040010
00> GRSTCTL222: A0000001, 40040010
00> GRSTCTL333: A0000001, 40040010

正确的日志:
00> GRSTCTRL111: 80000000, 40040010
00> GRSTCTRL222: 80000001, 40040010
00> GRSTCTRL333: 80000000, 40040010

配置 / Configuration

原始代码为:
do {
if (++count > 200000U) {
return -1;
}
} while ((USB_OTG_GLB->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);

修改后位:
do {
if (++count > 200000U) {
break;
}
} while ((USB_OTG_GLB->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
USB_OTG_GLB->GRSTCTL &= ~(USB_OTG_GRSTCTL_CSRST);

USB中断 / USB Interrupt

不修改前无法进入中断

缓存 / Cache

No response

商业 / Business

  • 是 / Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions