大家好,我最近發(fā)現(xiàn)CH32V307 USB中斷的一個(gè)問題:當(dāng)USBHS_IRQHandler 與?USART2_IRQHandler中斷都使能后,USBHS_IRQHandler中斷使用官方例程的代碼,USART2_IRQHandler中斷里面有我應(yīng)用的邏輯,跟USB沒有關(guān)系,然后我頻繁發(fā)送UART數(shù)據(jù)時(shí),即頻繁進(jìn)入USART2_IRQHandler中斷,可以當(dāng)成周期50ms發(fā)送10個(gè)字節(jié)的UART報(bào)文,這10個(gè)字節(jié)基本沒有時(shí)間間隔,然后電腦一直讀取USB的數(shù)據(jù)(此數(shù)據(jù)不是UART數(shù)據(jù),跟UART沒有關(guān)系),USB數(shù)據(jù)量挺大的,發(fā)現(xiàn)運(yùn)行1~2分鐘后,電腦上位機(jī)沒有收到應(yīng)用報(bào)文,用USB抓包分析工具分析,發(fā)現(xiàn)電腦有一直發(fā)送IN 報(bào)文請求,CH32V307沒有應(yīng)答數(shù)據(jù),即一直是NAK應(yīng)答,發(fā)現(xiàn)USBHS_IRQHandler IN該端點(diǎn)的中斷不再進(jìn)入,即使程序調(diào)用USBHS_Endp_DataUp 數(shù)據(jù)進(jìn)行上傳,也沒有響應(yīng)。我猜想問題出現(xiàn)在芯片的USB中斷被UART中斷頻繁打斷所致的,但我不知道具體原因,當(dāng)UART停止發(fā)送數(shù)據(jù),即USART2_IRQHandler中斷不進(jìn)入,電腦一直讀取USB大量數(shù)據(jù)都正常,運(yùn)行了一晚上沒有異常。為什么單獨(dú)USBHS_IRQHandler中斷可以正常運(yùn)行,加了一個(gè)USART2_IRQHandler就異常了,是芯片哪里還需要配置嗎?比如這顆芯片的硬件堆棧是跟main的堆棧公用嗎?有沒有大佬遇到這個(gè)相似的問題。
查看: 2957
回復(fù): 1
CH32V307 USBHS 發(fā)送數(shù)據(jù)異常
熱門產(chǎn)品 :
CH394: 以太網(wǎng)協(xié)議棧芯片
您好,可以檢查一下中斷函數(shù)的優(yōu)先級(jí)配置以及串口中斷函數(shù)的執(zhí)行時(shí)間,串口中斷函數(shù)注意要加中斷聲明。此外可以打印看一下USBHS_Endp_DataUp函數(shù)的返回值是0還是1.若方便可將代碼發(fā)至我的郵箱(lzs@wch.cn)具體看一下,后續(xù)問題的溝通也可以通過郵箱進(jìn)行溝通。
請勿發(fā)布廣告和違法內(nèi)容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯(lián)系方式,以便更好更快服務(wù)您
只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄