ARM中基于DMA的高效UART通訊及其應用
5、試驗及結論
為了驗證基于DMA的通訊的有效性,筆者做了對比試驗。把負責軌跡插補的定時中斷優先級設計成最高(中斷時間間隔50毫秒,中斷服務程序執行時間約需要30毫秒),然后一個機器人采用中斷方式接收上位機連續發送的100組命令,另一個采用基于DMA的方式接收上位機連續發送的100組命令。然后在機器人主程序中通過讀取UART的狀態寄存器判斷出現錯誤(主要是數據溢出錯誤,即緩沖區有接收數據而沒有及時讀取,被新的數據覆蓋)的次數。軟件采用C語言,用ADS1.2編譯調試。試驗結果如表2。實驗證明了第二種方式的有效性。
表2:對比試驗結果
本文作者的創新點在于:在UART通訊中,通過采取DMA方式,直接將UART接收的數據轉移到設定好的RAM區,然后設置相應的全局標志,通知主程序數據可用就可以了。開發人員不需要到UART的緩沖區中讀取數據,直接讀RAM就可以了。與采用中斷方式或者查詢方式的串行口通訊方式相比較,不僅僅可以節省CPU通訊時用于接收數據的時間,同時可以防止UART接收的數據由于沒有及時被讀取而丟失,提高了通訊的可靠性。
參考文獻:
(1)嵌入式系統開發與應用,田澤編著,北京航空航天大學出版社,2005年5月第一版;
(2)S3C44B0X RISC MICROPROCESSOR ,SAMSUNG ElECTRONICS
(3)ARM微控制器基礎與實戰,周立功等編著,北京航空航天大學出版社,2003年11月第1版.
(4) 魏永清 萬寶年,具有軟件模擬FIFO緩沖區的串口通信模塊設計,微計算機信息 2006年第7-2期:64-66
評論