串口通信的三種方式(查詢、中斷、DMA) 之dma

由於UART串行口的廣泛應用,在傳統的8位和16位的處理器以及32位處理器中,一般都帶有UART串行口。傳統的基於UART的數據通訊中,採用的方式一般有兩種,查詢式和中斷式。查詢方式下CPU的負擔較重,浪費了處理器的能力,不能夠很好的處理其他的事件;中斷方式可以在接收到信息或需要發送數據時產生中斷,在中斷服務程序中完成數據的接收與發送。相對於查詢方式,中斷方式的CPU利用率要高。在CPU任務簡單的系統中,使用中斷方式確實是一種好方法。但是在複雜的系統中,比如移動機器人,處理器需要處理串行口通信,多個傳感器數據的採集以及處理,實時軌跡的生成,運動軌跡插補以及位置閉環控制等等任務,牽扯到多箇中斷的優先級分配問題。爲了保證數據發送與接收的可靠性,需要把UART的中斷優先級設計較高,但是系統可能還有其他的需要更高優先級的中斷,必須保證其定時的準確,這樣就有可能造成串行通訊的中斷不能及時響應,從而造成數據丟失。 爲了保證串行通訊的數據及時可靠的接收,同時兼顧其它任務不受影響,採用了基於DMA和中斷方式相結合的UART串行通信方式。DMA是 Direct Memory Access的縮寫,意思是“存儲器直接訪問”,它是一種高速的數據傳輸操作,允許在外部設備和存儲器之間直接讀/寫數據,即不通過CPU,也不需要 CPU干預。整個數據傳輸操作是在一個稱作DMA控制器的控制下進行的。CPU除了在數據傳輸開始和結束時做一點處理外,在傳輸過程中可以進行其他的工作。這樣,在大部分時間裏,CPU和輸入/輸出設備都處於並行的操作狀態。其基本原理可以查閱教科書,此處不贅述。


摘抄自:

ARM中DMA的UART通訊及其應用
http://embed.chinaitlab.com/arm/896035.html

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