關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > STM32中采用DMA實(shí)現(xiàn)方波的產(chǎn)生和捕獲

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

作者: 時(shí)間:2011-11-05 來(lái)源:網(wǎng)絡(luò) 收藏

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

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

d.jpg


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

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

塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉