WCH沁恒单片机
直播中

无厘头

13年用户 546经验值
擅长:基础元器件
私信 关注
[问答]

使用CH567开发板的过程中经常出现“USB1 Reset!”的情况是为什么?

请问一下,我在使用CH567开发板的过程中,使用官方的例程,在程序开发的过程中,开发板经常出现“USB1 Reset!”的情况出现,例如下面这样子的情况。偶尔重新开发板重启就能解决、偶尔是重新编译程序就能解决,请问出现这种情况的原因在哪里呢:
USB1 Device Init!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!
USB1 Reset!


源代码:
void USB1DevIntDeal(void){
    if (R8_USB1_INT_FG & UIF_TRANSFER) {
        //R8_UEP0_TX_CTRL1 = UEP_T_RES_NAK;
        R8_UEP0_TX_CTRL1 = UEP_T_RES_ACK;
        R8_UEP0_RX_CTRL1 = UEP_R_RES_ACK;
        //R8_UEP1_TX_CTRL1 = UEP_T_RES_NAK | bUEP_AUTO_TOG;
        R8_UEP1_TX_CTRL1 = UEP_T_RES_ACK | bUEP_AUTO_TOG;
        R8_UEP1_RX_CTRL1 = UEP_R_RES_ACK | bUEP_AUTO_TOG;
        R8_UEP2_TX_CTRL1 = UEP_T_RES_ACK | bUEP_AUTO_TOG;
        R8_UEP2_RX_CTRL1 = UEP_R_RES_ACK | bUEP_AUTO_TOG;
        R8_USB1_DEV_AD = 0;
        DevAddr = 0;
        R8_USB1_INT_FG = UIF_BUS_RST;
        printf("USB1 Reset!n");


  

回帖(1)

李晟才

2022-6-29 10:21:07
USB枚举阶段或者USB通讯出错、不符合协议交互逻辑、无响应等异常情况时,通常主机会进行USB总线复位来试图纠正,总线复位本身只是一种总线的状态,出现总线复位是正当的。

如果不是在枚举阶段出现,更多的可能是对代码的修改导致通讯过程中的错误引起。
如果是总线上的错误,采用硬件抓包仪器分析会更有效。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分