999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STM32中采用DMA實現方波的產生和捕獲

2011-06-25 02:45:36閆建國孫克怡
單片機與嵌入式系統應用 2011年10期

閆建國,孫克怡

(青島東軟載波科技股份有限公司,青島 266023)

閆建國,主要研究方向為單片機控制和代碼設計;孫克怡(教授),主要研究方向為遠程抄表和儀器儀表自動化。

1 STM32微控制器介紹

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

2 DMA和TIMx簡介

STM32系列微控制器均含有DMA和通用時鐘TIMx模塊。其低端型號中僅包含DMA1,支持7個通道;高端型號還包括DMA2,支持5個通道。它的每個通道可任意指定工作模式,如內存到內存、內存到外設或外設到內存等。當涉及到外設時,一般是由外設來觸發DMA的一次傳輸,如串口收到數據的標志位可觸發DMA。

DMA的每次傳輸都分為4個階段:申請仲裁、地址計算、總線存取和應答。除總線存取階段,其他3個階段都只需要一個系統周期,并且不占用總線,可在DMA控制器內部并發地執行。總線存取階段,每個字(4字節)的傳輸需要3個系統周期。DMA和CPU工作在交替方式下,不會相互阻塞。DMA各個通道可獨立設置優先級,當訪問同一資源時高優先級通道先獲得資源。

DMA的使用比較簡單,每路DMA僅包括4個寄存器,用于指定DMA的工作模式、源地址、目標地址和傳輸次數。ST公司提供了很好的驅動庫,簡化了外設的使用,方便閱讀和移植。本文采用庫函數來展示功能。

其通用時鐘是很有特色的外圍模塊,可實現多種復雜的功能。時鐘模塊內部主要包含一個計數器和4個通道的比較/捕獲寄存器。時鐘可工作在捕獲或比較模式。在捕獲模式下,若有對應的觸發信號,計數器的值會保存到比較/捕獲寄存器,并觸發中斷或DMA;在比較模式下,若計數器的值與比較/捕獲寄存器的值相等,則對外輸出預選設定好的信號,如高電平、低電平或電平反轉等。

3 采用DMA+TIMx實現多路方波的產生

采用時鐘的4個比較/捕獲通道加DMA可以產生出4路不同頻率和占空比的方波。這里為簡化篇幅,只列出了產生一路方波的代碼。基本原理是:將時鐘的4個通道設置為反轉模式(即計數器與比較捕獲寄存器相等時,其對應的CPU引腳電平發生反轉),設置計數器為向上計數到0xFFFF的模式;然后預先計算好需要引腳反轉的時刻,并使能對應通道的DMA請求。這樣,當計數器與比較/捕獲寄存器的值相等時,由DMA將下一個需要引腳電平反轉的時刻送入到比較/捕獲寄存器。

這里將DMA設置為從內存到外設的半字(2個字節)環形傳輸。開啟DMA全滿和半滿中斷,在中斷處理函數中不斷填充新的時刻值,即可保證產生的波形不間斷。假設存放時刻值的緩沖長度為N,則每N/2個點才中斷一次,這樣CPU就不需要頻繁進入中斷,執行效率比較高。由此也可以看出,緩沖越大,對中斷響應的實時性要求也越低,當然這時中斷的處理時間也越長。以下為示例代碼:

需要注意的是,比較/捕獲寄存器的預加載功能必須禁止掉。我們需要的是寫入比較/捕獲寄存器的值立即與計數器相比較輸出,而無需等待一個更新事件。

4 采用DMA+TIMx實現多路方波的捕獲

假設有一個方波需要記錄并分析。一種方案是設置CPU引腳在上升沿和下降沿中斷,然后在中斷中記錄該時刻。這種處理方式的實時性和效率會差一些,因為進出中斷本身就需要一定的指令周期(Cortex-M3為12+12或6+12個系統周期),而且需要考慮多個中斷同時發生的最壞情況,對可檢測方波的最大頻率有一定的限制。另一種方案是采用輪詢的方式不斷查詢該引腳的狀態并記錄上升沿和下降沿的時刻,這種方式下系統幾乎不能處理其他的任務了。

采用DMA+TIMx的方式來捕獲上升沿和下降沿時刻,有利于提高系統的實時性和執行效率。通過TIMx的捕獲功能將方波的電平跳變時刻記錄在比較/捕獲寄存器中,然后DMA將該值自動傳輸到內存,只有當DMA觸發半滿或全滿事件時CPU才需要進入中斷處理數據。通過記錄方波的上升沿和下降沿時刻,然后將兩個時刻相減,進而就能得到所有低沿和高沿的寬度,最后進行后續的分析處理。這種方式下中斷頻率僅為方波頻率的4/N(N為緩沖區大小)。

圖1為TIMx工作在捕獲模式下一個通道的示意圖。

其中TI1為CPU引腳的輸入,經過濾波(新的電平必須保持一定時間才認為有效,以防止高頻噪聲的干擾)后進入后繼的邊沿極性選擇,最后經過分頻作為捕獲信號的輸入。這里TI2F為相鄰通道經過濾波后的信號,也就是說一個引腳的信號可作為TIMx兩個通道的輸入捕獲信號,這樣信號只需要接一個CPU引腳就可以觸發兩個時鐘通道了。

將輸入方波接到CPU一個引腳上,假設該引腳對應于圖上的TI1,設定其在下降沿觸發通道1的捕獲事件,而其在上升沿觸發通道2的捕獲事件,事件發生后申請DMA將捕獲的比較/捕獲寄存器的值保存起來。示例代碼如下:

其他部分與第3節中比較輸出的代碼基本一致。

5 總 結

測試中STM32系列微控制器工作在36MHz,可產生出1路最高1.5MHz的方波,可捕獲1MHz的方波,而此時CPU的執行幾乎不受影響。這里采用DMA來實現方波的產生和捕獲,極大地提高了系統的實時性和執行效率,減少了中斷次數,節省了寶貴的資源。這種方案也可以用來實現高效的模擬串口。

圖1 TIMx工作在捕獲模式下一個通道的示意圖

DMA的傳輸需要多個系統周期的,例如采用DMA實現內存到內存的搬移,每次傳輸需要5個系統周期,而內存到外圍的一次傳輸需要2個APB周期+5個AHB周期。這樣用上述方法產生的方波最小沿(低沿或高沿)為14個周期(包括比較/捕獲寄存器到內部影子寄存器的傳輸等)。若有更高的需求,應考慮其他的實現方案。另外,若有多個DMA同時工作,應考慮最壞情況下DMA的響應時間,以避免錯誤發生。

[1]ARM.Cortex-M3Technical Reference Manual,2006.

[2]ARM.ARMv7-M Application Level Architecture ReferenceManual,2007.

[3]Elsevier Inc.The Definitive Guide to the ARM Cortex M3,2007.

[4]Hitex(UK)Ltd.The Insider’s Guide To The STM32ARM Based Microcontroller,2009.

主站蜘蛛池模板: AV在线天堂进入| 在线欧美国产| 91日本在线观看亚洲精品| 久久精品一卡日本电影| 久996视频精品免费观看| 成人在线欧美| 欧美一区二区三区欧美日韩亚洲 | 国产尤物在线播放| 欧美va亚洲va香蕉在线| 国产一区三区二区中文在线| 欧美日一级片| 精品无码国产自产野外拍在线| 亚洲精品福利视频| 国产剧情一区二区| 欧美国产综合色视频| 中文字幕在线日本| 99在线视频免费观看| 国产成熟女人性满足视频| 69av免费视频| 国产91透明丝袜美腿在线| 四虎永久在线精品国产免费| 中文无码毛片又爽又刺激| 国产精品九九视频| 婷婷六月综合网| 伊人久久大香线蕉影院| 经典三级久久| 免费精品一区二区h| 在线亚洲精品福利网址导航| 午夜福利免费视频| 四虎影视国产精品| 国产亚洲精品97在线观看| 国产在线八区| 国产欧美视频在线| 国产精品免费福利久久播放| 亚洲无码熟妇人妻AV在线| 精品99在线观看| 2020久久国产综合精品swag| 欧洲日本亚洲中文字幕| 国产欧美综合在线观看第七页| 亚洲狠狠婷婷综合久久久久| 亚洲日韩高清无码| 中文字幕波多野不卡一区| 国产一区二区精品福利| 免费人成视频在线观看网站| 2020精品极品国产色在线观看 | 网友自拍视频精品区| 亚洲中文字幕23页在线| 国产真实自在自线免费精品| 国产国语一级毛片在线视频| 四虎影视库国产精品一区| 成人综合网址| 免费无码又爽又刺激高| 三区在线视频| 在线欧美一区| 亚洲毛片在线看| 免费女人18毛片a级毛片视频| 国产女人18毛片水真多1| 国产黄色片在线看| 久久这里只有精品8| 国产尤物视频网址导航| 97se亚洲综合在线| 狠狠色丁婷婷综合久久| 自拍偷拍一区| 青青草原偷拍视频| 亚洲国产中文综合专区在| 免费又黄又爽又猛大片午夜| 99久久亚洲综合精品TS| 国产精品一老牛影视频| 欧美日韩中文字幕二区三区| www.日韩三级| 再看日本中文字幕在线观看| 精品人妻系列无码专区久久| 97国产精品视频自在拍| 亚洲中文字幕久久无码精品A| 996免费视频国产在线播放| 免费国产无遮挡又黄又爽| 欧美午夜性视频| 精品国产香蕉伊思人在线| 亚洲综合婷婷激情| 欧美激情视频一区二区三区免费| 国产欧美在线| 啦啦啦网站在线观看a毛片|