請(qǐng)教 串口DMA 的DMA_GetFlagStatus(DMA1_FLAG_TC1)疑問(wèn)

版主好。

現(xiàn)在我在測(cè)試RS485的ModbusRTU通信時(shí),CH32V203C8T6的串口DMA通信中,用DMA_GetFlagStatus(DMA1_FLAG_TC1)獲取串口DMA發(fā)送完成狀態(tài)來(lái)切換RS485芯片讀寫(xiě)時(shí),發(fā)現(xiàn)DMA_GetFlagStatus(DMA1_FLAG_TC1)?!= RESET的時(shí)間并不是DMA發(fā)送完成時(shí)產(chǎn)生的,而是提前兩個(gè)字節(jié)就產(chǎn)生這個(gè)完成TC標(biāo)志了,這樣就會(huì)引起RS485芯片被DMA1_FLAG_TC1關(guān)閉了后面兩個(gè)字節(jié)沒(méi)完成發(fā)送出去導(dǎo)致通信不正常。以前都是用自動(dòng)切換讀寫(xiě)的RS485都沒(méi)有發(fā)現(xiàn)這個(gè)bug....

請(qǐng)問(wèn),實(shí)際上DMA1_FLAG_TC1這個(gè)標(biāo)志的產(chǎn)生時(shí)間到底是不是串口DMA全部發(fā)送完成才標(biāo)志的?如果不是有沒(méi)有確切的TC觸發(fā)規(guī)則?實(shí)在不行只能查詢串口空閑狀態(tài)了。

邏輯分析儀截圖如下,通道0是串口發(fā)出的數(shù)據(jù),通道7是RS485讀寫(xiě)(0是讀,1是寫(xiě))。

捕獲.PNG

您好,正常情況下DMA通道傳輸完成才置DMA通道傳輸完成標(biāo)志的,你可以檢查一下程序中配置的DMA傳輸大小是否和DMA傳輸?shù)膶?shí)際數(shù)量大小一致。此外,可在傳輸完成標(biāo)志置1后注意清除一下標(biāo)志位。若方便,可將你的代碼發(fā)到我的郵箱(lzs@wch.cn)具體看一下。


都有清除標(biāo)志的,今天測(cè)試,發(fā)現(xiàn)與主頻、串口波特率有很大的影響。

這個(gè)是測(cè)試程序壓縮包。

icon_rar.gifUARTDMATest_CH32V203C8T6.zip



您好,若你需要通過(guò)獲取串口DMA發(fā)送完成的狀態(tài)來(lái)切換RS485芯片讀寫(xiě),建議你可以通過(guò)DMA傳輸完成中斷來(lái)判斷,在DMA傳輸完成中斷函數(shù)中置一個(gè)標(biāo)志,當(dāng)進(jìn)入傳輸完成中斷,將該標(biāo)志置1,通過(guò)判斷該標(biāo)志切換狀態(tài)。關(guān)于你的代碼,這邊會(huì)具體看一下。若方便,可郵箱(lzs@wch.cn)給我具體介紹一下你的代碼邏輯,這邊看一下。后續(xù)問(wèn)題溝通可通過(guò)郵箱溝通。


不折騰了,搜索了論壇的帖子,發(fā)現(xiàn)SPI的DMA同樣也會(huì)出現(xiàn)這種DMA搬運(yùn)完成而不是外設(shè)傳輸完成的DMA_FLAG_TC問(wèn)題。

現(xiàn)在不用DMA了,還是直接用串口空閑中斷方便省事。


折騰了一天,絕望了…

不管是DMA中斷還是串口中斷都不能直接用來(lái)切換485,否則會(huì)丟失最后一個(gè)字節(jié)…

找了半天,發(fā)現(xiàn)隔壁家STM32就有串口DMA發(fā)送時(shí)序圖,圖中DMA的TC確實(shí)是提前兩個(gè)字節(jié)就置1了,串口及DMA中斷也提前一個(gè)字節(jié)也置1了…這回非得改板不可了…

675739060.png


今天有時(shí)間,重裝軟件用串口TC中斷、用串口TC標(biāo)志,都能正確的切換485讀寫(xiě)功能了...

前些天寫(xiě)程序時(shí),重視發(fā)現(xiàn)Tab鍵無(wú)法用空格替換,今天就重裝了軟件,然后原先不行的現(xiàn)在都沒(méi)問(wèn)題了。

前面不行的原因,一個(gè)是軟件可能有問(wèn)題,一個(gè)可能是用 If(Var == USART1)這種結(jié)構(gòu)體作為判斷非法以至于后面的程序執(zhí)行就出問(wèn)題了。

現(xiàn)在都是直接用 指針數(shù)組 來(lái)切換參數(shù)而不是用結(jié)構(gòu)體切換參數(shù),感覺(jué)立刻正常了。可以不用改板了頓時(shí)輕松了。

捕獲.PNG



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

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