CH571使用官網(wǎng)提供的IAP引導(dǎo)做修改,進(jìn)入IAP之后,初始化IAP的USB下載程序。延時(shí)2S,如無下載通信,則進(jìn)入用戶APP,用戶程序中將USB初始化為HID輸入設(shè)備。
問題:
因?yàn)镮AP中已經(jīng)初始化USB,2S之后進(jìn)行用戶程序后,如何讓電腦重新識(shí)別USB為HID。
嘗試重置配置USB的各個(gè)控制寄存器,電腦都沒有重新識(shí)別USB設(shè)備。
CH571使用官網(wǎng)提供的IAP引導(dǎo)做修改,進(jìn)入IAP之后,初始化IAP的USB下載程序。延時(shí)2S,如無下載通信,則進(jìn)入用戶APP,用戶程序中將USB初始化為HID輸入設(shè)備。
問題:
因?yàn)镮AP中已經(jīng)初始化USB,2S之后進(jìn)行用戶程序后,如何讓電腦重新識(shí)別USB為HID。
嘗試重置配置USB的各個(gè)控制寄存器,電腦都沒有重新識(shí)別USB設(shè)備。
IAP中USB的配置官方提供如下:
用戶程序中,嘗試USB配置,但實(shí)際電腦并不會(huì)重新識(shí)別USB,沒有枚舉過程
電腦重新禁用一次USB設(shè)備,重新啟用,就可以正常的枚舉為HID設(shè)備
感覺應(yīng)該讓CH573的USB禁用D+和D-下位,應(yīng)該電腦就會(huì)重新識(shí)別呀。但是并沒有啟作用
禁用D+和D-,要等個(gè)幾ms,等系統(tǒng)反應(yīng)過來,認(rèn)為設(shè)備移除,這個(gè)時(shí)候如果新設(shè)備接入(D+或者D-上拉啟用),主機(jī)會(huì)識(shí)別到新設(shè)備插入,然后重新枚舉。
但是感覺我這個(gè)寄存器配置是不是有問題。我在后面都延時(shí)500ms了,都沒有反反應(yīng)
? ? //禁用USB,拉低D+和D-電低,讓電腦認(rèn)為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;
以上代碼已驗(yàn)證OK。實(shí)際并不是代碼有問題,而是用戶程序里面USB可以根據(jù)配置分別加載成HID或CDC,結(jié)果以上代碼只是添加到了HID配置的前面,沒有添加到CDC配置的前面,但當(dāng)前配置成了CDC模式,導(dǎo)致一直沒有加載重置USB的代碼。