《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > STM32微控制器中采用DMA實現方波的產生和捕獲
STM32微控制器中采用DMA實現方波的產生和捕獲
摘要: STM32系列微控制器是ST公司基于Cortex-M3內核的高集成度的微控制器。它在性能、價格、功耗和實時性方面樹立了一個新的標桿,集成了Cortex-M3內核,以及雙ADC、多用途的通用時鐘TIMx、RTC、I2C、SPI、UART、CAN、DMA、USB等豐富的外設。
Abstract:
Key words :

  1 STM32微控制器介紹

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

 

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

 

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

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

 

  示例代碼

 

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

 

  5 總結

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

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

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美在线91| 欧美三日本三级三级在线播放| 国产亚洲欧美一区| 亚洲午夜国产一区99re久久| 午夜影院日韩| 欧美在线视频在线播放完整版免费观看| 亚洲欧美精品suv| 亚洲电影中文字幕| 欧美黑人在线观看| 最新国产拍偷乱拍精品| 免费成人网www| 国产精品捆绑调教| 欧美午夜视频网站| 欧美成人一区二区在线| 国产精品久久一区二区三区| 亚洲国产美国国产综合一区二区| 亚洲欧美一区二区激情| 一区二区三区高清在线| 尤物九九久久国产精品的特点| 久久av一区二区三区亚洲| 欧美日韩在线观看视频| 国产精品久久久久久一区二区三区| 国产精品热久久久久夜色精品三区| 国产精品区一区| 国产精品蜜臀在线观看| 91久久久久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 一二美女精品欧洲| 久久久久久**毛片大全| 久久综合一区| 国产精品永久免费视频| 亚洲欧洲一区二区在线播放| 一区久久精品| 国产综合久久久久影院| 国产精品免费网站| 午夜国产不卡在线观看视频| 免费91麻豆精品国产自产在线观看| 久久久人人人| 国产欧美日韩一区二区三区在线| 亚洲国产精品久久精品怡红院| 国产精品一区二区久久国产| 国产精品热久久久久夜色精品三区| 久久久激情视频| 久久国产一区二区三区| 亚洲国产91精品在线观看| 羞羞答答国产精品www一本| 亚洲精品一区二区在线观看| 久久精品视频播放| 欧美激情一区二区三区不卡| 亚洲三级影片| 国产一区二区在线免费观看| 在线观看一区二区精品视频| 99精品视频一区| 久久久久久亚洲综合影院红桃| 国语自产精品视频在线看抢先版结局| 欧美午夜视频一区二区| 欧美性猛片xxxx免费看久爱| 狠狠色综合网| 亚洲一区二区免费在线| 亚洲一区欧美一区| 欧美国产视频日韩| 欧美—级高清免费播放| 免费成人av在线看| 久久精品视频99| 在线成人免费视频| 亚洲精品免费在线观看| 欧美日韩成人在线视频| 欧美国产一区二区在线观看| 亚洲欧美精品在线| 欧美日韩中文在线观看| 欧美11—12娇小xxxx| 中日韩视频在线观看| 欧美在线视频观看免费网站| 亚洲一区精彩视频| 久久久九九九九| 亚洲亚洲精品三区日韩精品在线视频| 国产精品久久久久婷婷| 国产一区二区观看| 亚洲激情成人在线| 久久久久国产精品一区三寸| 国产精品久久久久久久久久免费看| 又紧又大又爽精品一区二区| 亚洲国产另类 国产精品国产免费| 羞羞答答国产精品www一本| 最近中文字幕日韩精品| 国产精品一区毛片| 日韩一级精品视频在线观看| 午夜激情久久久| 欧美国产日本高清在线| 免费观看亚洲视频大全| 亚洲专区一二三| 国产精品99久久不卡二区| 欧美午夜精品理论片a级按摩| 欧美大学生性色视频| 欧美精品在线免费观看| 国产午夜精品一区二区三区欧美| 亚洲国产va精品久久久不卡综合| 免费观看日韩| 国产精品高潮久久| 在线看片欧美| 在线视频成人| 国一区二区在线观看| 亚洲人成在线观看网站高清| 狠狠色丁香久久婷婷综合丁香| 老巨人导航500精品| 久久精品日产第一区二区三区| 国产精品欧美久久| 欧美午夜理伦三级在线观看| 国产精品久久久久免费a∨大胸| 亚洲一区国产视频| 久久国产福利国产秒拍| 国内精品久久国产| 久久精品天堂| 亚洲国产精品成人va在线观看| 欧美色精品天天在线观看视频| 国产偷国产偷亚洲高清97cao| 欧美成人精品高清在线播放| 国产麻豆日韩欧美久久| 亚洲电影免费在线| 99re6这里只有精品视频在线观看| 欧美成人一区二区三区片免费| 黄色日韩精品| 亚洲一区二区三区中文字幕在线| 午夜影视日本亚洲欧洲精品| 欧美一区二区三区四区在线观看地址| 国产丝袜一区二区| 国产三级欧美三级| 欧美伊人久久久久久久久影院| 国产精品极品美女粉嫩高清在线| 国产美女精品视频| 国产日韩欧美一区在线| 欧美激情亚洲一区| 欧美精品三区| 国产精品成人一区二区三区夜夜夜| 欧美极品在线视频| 尤物99国产成人精品视频| 在线高清一区| 国产色视频一区| 国产精品99久久久久久久女警| 国产精品视频精品| 精品va天堂亚洲国产| 国外精品视频| 久久久久久久97| 国产精品网曝门| 欧美在线精品免播放器视频| 黄色亚洲大片免费在线观看| 国产日韩欧美综合在线| 狠狠色狠狠色综合日日91app| 99精品国产在热久久婷婷| 欧美破处大片在线视频| 亚洲一区二区伦理| 国产精品一区二区三区乱码| 亚洲国产一二三| 在线综合+亚洲+欧美中文字幕| 巨胸喷奶水www久久久免费动漫| 亚洲成色www久久网站| 欧美一级淫片播放口| 国产精品麻豆欧美日韩ww| 欧美日韩一区在线视频| 国产欧美一区视频| 黄色亚洲网站| 樱花yy私人影院亚洲| 欧美成人黄色小视频| 亚洲精品美女在线| 亚洲人线精品午夜| 亚洲人成小说网站色在线| 麻豆九一精品爱看视频在线观看免费| 国产精品99久久不卡二区| 99国产精品久久久久久久成人热| 久久精品91久久香蕉加勒比| 91久久精品日日躁夜夜躁国产| 亚洲精品乱码久久久久久久久| 国产日韩在线看片| 亚洲国产精品ⅴa在线观看| 久久天天躁夜夜躁狠狠躁2022| 亚洲精品国产视频| 一区二区高清在线观看| 久久久久久免费| 免费欧美电影| 亚洲人成小说网站色在线| 亚洲欧美日韩精品久久| 欧美护士18xxxxhd| 亚洲最新中文字幕| 久久久久久久一区二区| 99re热这里只有精品免费视频| 欧美自拍偷拍午夜视频| 国外成人在线视频| 一本色道88久久加勒比精品| 夜夜嗨av色一区二区不卡| 欧美小视频在线| 欧美视频在线一区二区三区| 久久综合国产精品台湾中文娱乐网| 一区二区三区在线视频播放| 久久久久成人网| 快播亚洲色图| 亚洲午夜激情网站| 午夜精品av| 国产美女精品免费电影| 欧美激情片在线观看| 日韩一级黄色片| 亚洲五月婷婷| 欧美成人一区二区三区在线观看| 久久久久久久久久久久久久一区| 在线观看不卡av| 一区二区三区|亚洲午夜| 香蕉久久夜色精品国产使用方法| 国产乱码精品一区二区三区不卡| 一区二区三区欧美视频| 国产欧美日韩在线观看| 欧美激情在线免费观看| 在线免费观看一区二区三区| 欧美大色视频| 欧美成人亚洲成人| 国内视频一区| 黄色日韩在线| 欧美午夜理伦三级在线观看| 91久久精品www人人做人人爽| 亚洲国内精品| 国产在线精品一区二区中文| 在线免费观看视频一区| 欧美凹凸一区二区三区视频| 亚洲成色999久久网站| 国产精品久久久久久久久久免费看| 亚洲精品欧美一区二区三区| 国产精品va在线播放| 欧美日本一道本| 国产精品热久久久久夜色精品三区| 欧美激情日韩| 免费在线观看日韩欧美| 亚洲欧美影音先锋| 欧美日韩亚洲一区二| 亚洲午夜国产成人av电影男同| 欧美精品色一区二区三区| 国产精品乱码一区二区三区| 久久精品视频免费播放| 国内精品久久久久久久影视麻豆| 欧美精品日韩www.p站| 免费观看一级特黄欧美大片| 欧美精品日韩| 国产日韩精品久久久| 午夜精品久久久久久99热软件| 亚洲欧美另类中文字幕| 亚洲素人在线| 亚洲欧洲一区二区三区| 日韩天堂在线观看| 免费日韩精品中文字幕视频在线| 欧美精品在线一区二区三区| 亚洲一区二区少妇| 国产午夜精品美女毛片视频| 亚洲欧美一区在线| 一区二区三区无毛| 国产精品女主播| 在线免费观看日本欧美| 欧美日韩调教| 一区二区三区国产在线观看| 性欧美暴力猛交69hd| 久久艳片www.17c.com| 蜜臀av在线播放一区二区三区| 一区二区免费在线视频| 一区二区三区 在线观看视频| 欧美精品一区二区三区高清aⅴ| 免费观看不卡av| 99精品视频一区二区三区| 亚洲欧美日韩国产成人| 亚洲精品欧美激情| 久久综合网hezyo| 欧美黄色网络| 欧美精品久久久久久久| 久久精品99国产精品酒店日本| 亚洲级视频在线观看免费1级| 最近看过的日韩成人| 国产欧美日韩一区二区三区| 亚洲最新视频在线播放| 老司机午夜精品视频在线观看| 免费在线观看一区二区| 欧美成人精品| 亚洲欧美国产不卡| 久久久久网址| 国产日韩欧美视频| 在线日韩精品视频| 国产一区二区三区观看| 亚洲二区在线视频| 久久久精品tv| 欧美日韩精品三区| 免费国产一区二区| 欧美欧美全黄| 欧美一区亚洲二区| 久久综合五月天婷婷伊人| 欧美日韩亚洲一区在线观看| 国产一区二区欧美| 久热综合在线亚洲精品| 亚洲毛片在线免费观看| 国产精品嫩草影院一区二区| 国产日韩欧美中文在线播放| 欧美中文字幕在线观看| 亚洲永久在线观看| 激情综合中文娱乐网| 久久免费偷拍视频| 亚洲电影专区| 欧美二区在线播放| 国产区二精品视| 国产精品久久久久久久久久直播| 欧美护士18xxxxhd| 亚洲欧洲视频| 亚洲欧美在线一区二区| 欧美欧美午夜aⅴ在线观看| 亚洲小说区图片区| 国产精品电影在线观看| 亚洲国产精品久久久久婷婷老年| 欧美区高清在线| 亚洲一区二区毛片| 好吊视频一区二区三区四区| 欧美日韩中文字幕在线视频| 亚洲免费av观看| 韩国一区二区在线观看| 亚洲欧美日韩网| 亚洲欧美激情视频在线观看一区二区三区| 激情五月综合色婷婷一区二区| 亚洲欧美国内爽妇网| 99热精品在线| 国内外成人在线视频| 欧美亚洲一区二区在线| 欧美日韩免费在线视频| 国户精品久久久久久久久久久不卡| 国产一区二区三区在线观看免费| 亚洲精品少妇30p| 国产一区二区三区日韩| 夜夜夜久久久|