直接存儲器訪問(Direct Memory Access),簡稱DMA。DMA是CPU一個用于數據從一個地址空間到另一地址空間“搬運”(拷貝)的組件,數據拷貝過程不需CPU干預,數據拷貝結束則通知CPU處理。因此,大量數據拷貝時,使用DMA可以釋放CPU資源,相關文章推薦:詳解STM32中的DMA原理。
在STM32控制器中,芯片采用Cortex-M3架構,總線結構有了很大的優化,DMA占用另外的總線,并不會與CPU的系統總線發生沖突。也就是說,DMA的使用不會影響CPU的運行速度。
DMA數據拷貝過程,典型的有:
內存—>內存,內存間拷貝
內存—>外設,如uart、spi、i2c等總線發送數據過程
串口有必要使用DMA嗎
串口(UART)是一種低速的串行異步通信,適用于低速通信場景,通常使用的波特率小于或等于115200bps。PC與STM32單片機通信實例推薦:按下按鍵,通過串口發送數據實例。
對于小于或者等于115200bps波特率的,而且數據量不大的通信場景,一般沒必要使用DMA,或者說使用DMA并未能充分發揮出DMA的作用。
對于數量大,或者波特率提高時,必須使用DMA以釋放CPU資源,因為高波特率可能帶來CPU資源過度浪費的問題。
舉個例子
對于發送,使用循環發送,可能阻塞線程,需要消耗大量CPU資源“搬運”數據,浪費CPU。對于發送,使用中斷發送,不會阻塞線程,但需浪費大量中斷資源,CPU頻繁響應中斷。以115200bps波特率,1s大約傳輸11520字節,大約69us需響應一次中斷,如波特率再提高,將消耗更多CPU資源。
對于接收,如仍采用傳統的中斷模式接收,同樣會因為頻繁中斷導致消耗大量CPU資源。
因此,在高波特率傳輸場景下,串口非常有必要使用DMA。
原文標題:STM32串口收發數據為什么要使用DMA?
文章出處:【微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
芯片
+關注
關注
456文章
51140瀏覽量
426150 -
控制器
+關注
關注
112文章
16442瀏覽量
179017 -
STM32
+關注
關注
2270文章
10923瀏覽量
357035
原文標題:STM32串口收發數據為什么要使用DMA?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論