STM32 SPI接口 DMA normal 和circual區別

 

DMA有normal和circular兩種模式。

circular模式:

就調用這個函數一次就可以了,DMA一直開啓,一幀數據發送完畢之後裏面發送下一幀,中間沒有停頓。這樣確實是快了,也釋放了CPU,各路的數據採集因爲缺少了等待串口發送的時間,所以就間接提高的了數據更新速率。但有個致命缺陷:數據採集和數據發送各玩各的,就是他倆時序對不上,數據採集到一半,一個完整幀數據只更新了一部分,就被DMA挪走了,這樣就把新舊數據一塊發送出去了,circular模式的DMA纔不管數據有沒有完整更新,只管發。

normal模式:

就是每發一次就開啓一次DMA,這樣就可以等一幀數據更新完畢之後,再開啓DMA發送,同樣不會佔用CPU,在DMA發送數據的時間裏CPU可以開啓下一輪的數據採集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章