關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > STM32中采用DMA實現(xiàn)方波的產(chǎn)生和捕獲

STM32中采用DMA實現(xiàn)方波的產(chǎn)生和捕獲

作者: 時間:2011-11-05 來源:網(wǎng)絡 收藏

4 +TIMx多路
假設有一個需要記錄并分析。一種方案是設置CPU引腳在上升沿和下降沿中斷,然后在中斷中記錄該時刻。這種處理方式的實時性和效率會差一些,因為進出中斷本身就需要一定的指令周期(Cortex-M3為12+12或6+12個系統(tǒng)周期),而且需要考慮多個中斷同時發(fā)生的最壞情況,對可檢測的最大頻率有一定的限制。另一種方案是輪詢的方式不斷查詢該引腳的狀態(tài)并記錄上升沿和下降沿的時刻,這種方式下系統(tǒng)幾乎不能處理其他的任務了。
+TIMx的方式來上升沿和下降沿時刻,有利于提高系統(tǒng)的實時性和執(zhí)行效率。通過TIMx的功能將方波的電平跳變時刻記錄在比較/捕獲寄存器中,然后將該值自動傳輸?shù)絻?nèi)存,只有當DMA觸發(fā)半滿或全滿事件時CPU才需要進入中斷處理數(shù)據(jù)。通過記錄方波的上升沿和下降沿時刻,然后將兩個時刻相減,進而就能得到所有低沿和高沿的寬度,最后進行后續(xù)的分析處理。這種方式下中斷頻率僅為方波頻率的4/N(N為緩沖區(qū)大小)。
圖1為TIMx工作在捕獲模式下一個通道的示意圖。

本文引用地址:http://m.butianyuan.cn/article/161424.htm

d.jpg


其中TI1為CPU引腳的輸入,經(jīng)過濾波(新的電平必須保持一定時間才認為有效,以防止高頻噪聲的干擾)后進入后繼的邊沿極性選擇,最后經(jīng)過分頻作為捕獲信號的輸入。這里TI2F為相鄰通道經(jīng)過濾波后的信號,也就是說一個引腳的信號可作為TIMx兩個通道的輸入捕獲信號,這樣信號只需要接一個CPU引腳就可以觸發(fā)兩個時鐘通道了。
將輸入方波接到CPU一個引腳上,假設該引腳對應于圖上的TI1,設定其在下降沿觸發(fā)通道1的捕獲事件,而其在上升沿觸發(fā)通道2的捕獲事件,事件發(fā)生后申請DMA將捕獲的比較/捕獲寄存器的值保存起來。示例代碼如下:
c.jpg
其他部分與第3節(jié)中比較輸出的代碼基本一致。

5 總結(jié)
測試中系列微控制器工作在36 MHz,可出1路最高1.5 MHz的方波,可捕獲1 MHz的方波,而此時CPU的執(zhí)行幾乎不受影響。這里采用DMA來方波的和捕獲,極大地提高了系統(tǒng)的實時性和執(zhí)行效率,減少了中斷次數(shù),節(jié)省了寶貴的資源。這種方案也可以用來高效的模擬串口。
DMA的傳輸需要多個系統(tǒng)周期的,例如采用DMA實現(xiàn)內(nèi)存到內(nèi)存的搬移,每次傳輸需要5個系統(tǒng)周期,而內(nèi)存到外圍的一次傳輸需要2個APB周期+5個AHB周期。這樣用上述方法的方波最小沿(低沿或高沿)為14個周期(包括比較/捕獲寄存器到內(nèi)部影子寄存器的傳輸?shù)?。若有更高的需求,應考慮其他的實現(xiàn)方案。另外,若有多個DMA同時工作,應考慮最壞情況下DMA的響應時間,以避免錯誤發(fā)生。

塵埃粒子計數(shù)器相關文章:塵埃粒子計數(shù)器原理

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉