CH32V203C8T6的CAN和USB共存問題

如題

項(xiàng)目功能:CAN轉(zhuǎn)USBCDC(雙向)

現(xiàn)象如下:

USB發(fā)送后CAN接收正常,但只要USB發(fā)送后CAN_Receive_Msg這個(gè)函數(shù)就失效了,讀不到CAN_FIFO0里面的數(shù)據(jù),也就是說之后想CAN發(fā)送USB接收就沒法完成了

image.png

image.png

image.png

icon_rar.gifEXAM.zip

上面是我的代碼文件,可進(jìn)行測試

image.png

我看用戶手冊上這么寫,然后我想能不能看看FIFO1里面的數(shù)據(jù)(數(shù)據(jù)肯定是沖突了),但手冊上寫用戶只能訪問FIFO0的數(shù)據(jù)

image.png

所以我也懵逼了

望解決?。?!

您好,CAN_Receive_Msg該函數(shù)只有在CAN接收數(shù)據(jù)時(shí)才會調(diào)用,即通過CAN設(shè)備或分析儀向203的CAN發(fā)送數(shù)據(jù)時(shí)才會調(diào)用,您通過PC向USB發(fā)送數(shù)據(jù)時(shí),此時(shí)調(diào)用的是CAN的CAN_Send_Msg函數(shù)。下邊是通過您的程序做的收發(fā)測試。注:數(shù)據(jù)處理并未改動。

image.png

image.png關(guān)于USBD與CAN收發(fā)緩沖區(qū)沖突問題,如果您只用CAN1那么需要注意將USBD的收發(fā)緩沖區(qū)控制在384字節(jié)之內(nèi);如果存在CAN1與CAN2共用的情況需要將USBD的收發(fā)緩沖區(qū)控制在256字節(jié)之內(nèi),否則會存在數(shù)據(jù)沖突。

image.png




您好,我表達(dá)的意思是USB發(fā)送后USB就不接收了,請仔細(xì)查看下圖

根據(jù)你上面發(fā)送的圖片,很明顯CAN發(fā)送了9幀數(shù)據(jù),但USB這邊只收到了3幀數(shù)據(jù)(我設(shè)置的USB發(fā)送的數(shù)據(jù)一幀為19位)

CAN這邊發(fā)送能正常發(fā)送接收也能正常接收,但USB在發(fā)送后就接收不到CAN的數(shù)據(jù)了



對于數(shù)據(jù)沖突,我修改了UART1_Tx_Buf數(shù)組的大小,元素個(gè)數(shù)設(shè)置為了64(之前是2048),應(yīng)該是符合您說的384或256字節(jié)以內(nèi)的

但經(jīng)過測試還是存在上述問題? ? ? ? ? ??

至于CAN的數(shù)組就更小了只有22位(類型是uint8_t)

對于收發(fā)緩沖區(qū)大小的控制我也不太了解,是否還需要調(diào)整其他參數(shù)的變量大小

image.png

icon_rar.gifEXAM.zip

這是我修改后的程序,可測試我說的bug

望解決?。?!


您好,這邊修改了一下您之前的程序,測試收發(fā)并沒有問題,下圖是測試結(jié)果。附修改后的程序

icon_rar.gifCH32V203C8_CAN_Test.zip

若還有問題可通過微信聯(lián)系:19951759326

image.png

image.png



我這邊也遇到了類似的問題,使用CH32V203C8T6實(shí)現(xiàn)USBCAN卡,之前在其它ARM芯片上完全實(shí)現(xiàn)運(yùn)行正常的代碼。

CAN使用FIFO0接收,只要FIFO0有數(shù)據(jù)就觸發(fā)中斷,在中斷中讀取FIFO0中的全部數(shù)據(jù)。CAN接收與USBD公用一個(gè)ISR,CAN接收到的數(shù)據(jù)通過USB轉(zhuǎn)發(fā)到PC,現(xiàn)在問題是CAN接收幾千幀以后就再也無法收到數(shù)據(jù),查看CAN的寄存器完全正常,和之前正常接收時(shí)并沒有差異,USBD使用的緩沖區(qū)為336字節(jié)(0x150)小于384字節(jié)。



@spadger

您好,因CAN1的FIFO0中斷與USBD的LP中斷共用同一個(gè)中斷服務(wù)函數(shù)入口(USB_LP_CAN1_RX0_IRQHandler)因此建議使用CAN1的FIFO1中斷進(jìn)行數(shù)據(jù)收發(fā),參考代碼如下,實(shí)測CAN接收并未出現(xiàn)您描述的問題。您這邊也可以測試一下,如有問題可通過微信聯(lián)系我。

icon_rar.gifCH32V203C8_CAN_Interrupt.zip



我用FIFO0和FIFO1都測試過了,問題是一樣的,所以不是FIFO的問題,我單獨(dú)開個(gè)帖子描述一下吧。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频