CH32V203 DMA進入中斷,但是讀中斷標(biāo)志位為全0。1/4概率出現(xiàn)


我的程序如下:image.png

image.png

DMA1Channel6負責(zé)接收UART2收到的數(shù)據(jù)。這是DMA1Channel6的中斷,INTFR 是這個中斷的標(biāo)志位:

image.png

進入中斷后,讀這個標(biāo)志位,偶爾會發(fā)現(xiàn)這個標(biāo)志位 = 0,進而導(dǎo)致接收失敗。

image.png

圖中的串口數(shù)據(jù)是正常的,但是在特定的位置發(fā)生了debug3.on()信號,對應(yīng)程序中212行image.png

取消中斷,發(fā)現(xiàn)這個問題不是每次都發(fā)生:image.png

發(fā)送相同的數(shù)據(jù),有大約25%的概率會發(fā)生這一問題。


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

這一問題是偶爾發(fā)生的,多數(shù)情況可以正確接收。


降低uart波特率(目前是6M),錯誤率會改善,但不會解決。


主機接收時,經(jīng)常發(fā)生此問題,但從機幾乎不會發(fā)生此問題,交換硬件也是如此。也就是說此問題不依賴特定硬件,軟件稍有差異時,此問題不會發(fā)生。


找到問題了,如果串口2中斷優(yōu)先級高于DMA中斷,就會出現(xiàn)這個問題。

在串口中斷中沒有進行接收,只是使用了IDLE中斷檢測發(fā)送完成。



為什么串口中斷和寄存器操作會影響DMA?


您好,若方便,可將你的代碼具體發(fā)我郵箱(lzs@wch.cn)看一下,這邊根據(jù)代碼具體分析一下問題。此外使用中斷時,以下幾個點要注意一下:

1、中斷函數(shù)執(zhí)行時間不要過長,尤其高優(yōu)先級中斷,一般不建議中斷函數(shù)中加打印延時等;

2、建議在初始化的時候清除一下對應(yīng)的中斷標(biāo)志位;

3、在使用串口和DMA時,可以先使能DMA相關(guān)配置試一下,此外可以看一下是否出現(xiàn)串口ORE錯誤;

4、串口空閑中斷標(biāo)志位清除注意先讀狀態(tài)寄存器再讀數(shù)據(jù)寄存器;

5、不建議DMA和串口收發(fā)同時在中斷中進行;



謝謝,這個目前看應(yīng)該是軟件的問題,我試試按您說的,換一下接收的策略。


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

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