關 閉

新聞中心

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

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

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

1 微控制器介紹
系列微控制器是ST公司基于Cortex-M3內核的高集成度的微控制器。它在性能、價格、功耗和實時性方面樹立了一個新的標桿,集成了Cortex-M3內核,以及雙ADC、多用途的通用時鐘TIMx、RTC、I2C、SPI、UART、CAN、、USB等豐富的外設。其功耗在全速72MHz所有模塊都打開時也僅僅為36 mA,在低功耗模式下其功耗僅為2μA。

2 和TIMx簡介
系列微控制器均含有和通用時鐘TIMx模塊。其低端型號中僅包含DMA1,支持7個通道;高端型號還包括DMA2,支持5個通道。它的每個通道可任意指定工作模式,如內存到內存、內存到外設或外設到內存等。當涉及到外設時,一般是由外設來觸發(fā)DMA的一次傳輸,如串口收到數(shù)據(jù)的標志位可觸發(fā)DMA。
DMA的每次傳輸都分為4個階段:申請仲裁、地址計算、總線存取和應答。除總線存取階段,其他3個階段都只需要一個系統(tǒng)周期,并且不占用總線,可在DMA控制器內部并發(fā)地執(zhí)行??偩€存取階段,每個字(4字節(jié))的傳輸需要3個系統(tǒng)周期。DMA和CPU工作在交替方式下,不會相互阻塞。DMA各個通道可獨立設置優(yōu)先級,當訪問同一資源時高優(yōu)先級通道先獲得資源。
DMA的使用比較簡單,每路DMA僅包括4個寄存器,用于指定DMA的工作模式、源地址、目標地址和傳輸次數(shù)。ST公司提供了很好的驅動庫,簡化了外設的使用,方便閱讀和移植。本文庫函數(shù)來展示功能。
其通用時鐘是很有特色的外圍模塊,可多種復雜的功能。時鐘模塊內部主要包含一個計數(shù)器和4個通道的比較/寄存器。時鐘可工作在或比較模式。在模式下,若有對應的觸發(fā)信號,計數(shù)器的值會保存到比較/捕獲寄存器,并觸發(fā)中斷或DMA;在比較模式下,若計數(shù)器的值與比較/捕獲寄存器的值相等,則對外輸出預選設定好的信號,如高電平、低電平或電平反轉等。

3 DMA+TIMx多路
時鐘的4個比較/捕獲通道加DMA可以出4路不同頻率和占空比的。這里為簡化篇幅,只列出了一路的代碼?;驹硎牵簩r鐘的4個通道設置為反轉模式(即計數(shù)器與比較捕獲寄存器相等時,其對應的CPU引腳電平發(fā)生反轉),設置計數(shù)器為向上計數(shù)到0xFFFF的模式;然后預先計算好需要引腳反轉的時刻,并使能對應通道的DMA請求。這樣,當計數(shù)器與比較/捕獲寄存器的值相等時,由DMA將下一個需要引腳電平反轉的時刻送入到比較/捕獲寄存器。
這里將DMA設置為從內存到外設的半字(2個字節(jié))環(huán)形傳輸。開啟DMA全滿和半滿中斷,在中斷處理函數(shù)中不斷填充新的時刻值,即可保證產生的波形不間斷。假設存放時刻值的緩沖長度為N,則每N/2個點才中斷一次,這樣CPU就不需要頻繁進入中斷,執(zhí)行效率比較高。由此也可以看出,緩沖越大,對中斷響應的實時性要求也越低,當然這時中斷的處理時間也越長。以下為示例代碼:
a.jpg
b.jpg
需要注意的是,比較/捕獲寄存器的預加載功能必須禁止掉。我們需要的是寫入比較/捕獲寄存器的值立即與計數(shù)器相比較輸出,而無需等待一個更新事件。

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

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉