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