CH32V303CBT6使用DMA方式發(fā)送SPI數(shù)據(jù)時異常

程序使用SPI和別的芯片通訊,開始沒使用DMA時,數(shù)據(jù)正常,數(shù)據(jù)一個一個發(fā)送,每次都是先檢查寄存器,ran后發(fā)送一個數(shù)據(jù)。


后來改用DMA方式結(jié)果就異常了。現(xiàn)象是連續(xù)發(fā)送數(shù)據(jù)時編碼亂掉了,不清楚什么原因。測試如下圖:測試內(nèi)容是使用DMA方式連續(xù)發(fā)送4個0xaa,在發(fā)送第一個字節(jié)最后一個bit時時鐘和數(shù)據(jù)信號沖突了。

image.png

image.png

image.png



您好,建議你可以按照下方法試一下,DMA傳輸程序配置時,可以加上一段代碼,在使能DMA傳輸之后,可以使用查詢方式等待DMA傳輸完成,然后關(guān)閉DMA,清除對應標志,在開啟新的傳輸時再開啟DMA。此外在DMA初始化配置時,建議可以先清除一下對應的標志位。若方便,可將你的代碼發(fā)至我的郵箱(lzs@wch.cn),這邊可以具體看一下并基于你的代碼修改測試一下,后續(xù)的問題也可以通過郵箱和我溝通。


我的測試代碼內(nèi)就是在死循環(huán)內(nèi)調(diào)用上面那個測試函數(shù),然后延時10ms再次循環(huán)。? ?


在正式代碼內(nèi)是檢測發(fā)送完成標志的,但發(fā)送數(shù)據(jù)不正常,具體現(xiàn)象是連續(xù)收發(fā)51個字節(jié),但其中前3個后最后一個很容易誤碼。


晚上我將我的代碼整理下發(fā)你郵箱


我疑惑的是時鐘信號和數(shù)據(jù)信號的沖突,感覺是中間SPI的配置變化了一樣



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

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