CH571使用IAP引导,USB复位重新识别

CH571使用官网提供的IAP引导做修改,进入IAP之后,初始化IAP的USB下载程序。延时2S,如无下载通信,则进入用户APP,用户程序中将USB初始化为HID输入设备。


问题:

因为IAP中已经初始化USB,2S之后进行用户程序后,如何让电脑重新识别USB为HID。


尝试重置配置USB的各个控制寄存器,电脑都没有重新识别USB设备。

IAP中USB的配置官方提供如下:

image.png


用户程序中,尝试USB配置,但实际电脑并不会重新识别USB,没有枚举过程

image.png


电脑重新禁用一次USB设备,重新启用,就可以正常的枚举为HID设备


感觉应该让CH573的USB禁用D+和D-下位,应该电脑就会重新识别呀。但是并没有启作用


禁用D+和D-,要等个几ms,等系统反应过来,认为设备移除,这个时候如果新设备接入(D+或者D-上拉启用),主机会识别到新设备插入,然后重新枚举。


但是感觉我这个寄存器配置是不是有问题。我在后面都延时500ms了,都没有反反应


    //禁用USB,拉低D+和D-电低,让电脑认为USB拔出

    R16_PIN_ANALOG_IE |= RB_PIN_USB_IE;

    R16_PIN_ANALOG_IE &= ~RB_PIN_USB_DP_PU;

    R8_USB_CTRL &= ~RB_UC_DEV_PU_EN;

    DelayMs(20);

    R8_UDEV_CTRL = 0x00;



以上代码已验证OK。实际并不是代码有问题,而是用户程序里面USB可以根据配置分别加载成HID或CDC,结果以上代码只是添加到了HID配置的前面,没有添加到CDC配置的前面,但当前配置成了CDC模式,导致一直没有加载重置USB的代码。


只有登录才能回复,可以选择微信账号登录