亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2011-06-25 02:45:36閆建國(guó)孫克怡
        關(guān)鍵詞:外設(shè)方波計(jì)數(shù)器

        閆建國(guó),孫克怡

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

        閆建國(guó),主要研究方向?yàn)閱纹瑱C(jī)控制和代碼設(shè)計(jì);孫克怡(教授),主要研究方向?yàn)檫h(yuǎn)程抄表和儀器儀表自動(dòng)化。

        1 STM32微控制器介紹

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

        2 DMA和TIMx簡(jiǎn)介

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

        DMA的每次傳輸都分為4個(gè)階段:申請(qǐng)仲裁、地址計(jì)算、總線(xiàn)存取和應(yīng)答。除總線(xiàn)存取階段,其他3個(gè)階段都只需要一個(gè)系統(tǒng)周期,并且不占用總線(xiàn),可在DMA控制器內(nèi)部并發(fā)地執(zhí)行??偩€(xiàn)存取階段,每個(gè)字(4字節(jié))的傳輸需要3個(gè)系統(tǒng)周期。DMA和CPU工作在交替方式下,不會(huì)相互阻塞。DMA各個(gè)通道可獨(dú)立設(shè)置優(yōu)先級(jí),當(dāng)訪(fǎng)問(wèn)同一資源時(shí)高優(yōu)先級(jí)通道先獲得資源。

        DMA的使用比較簡(jiǎn)單,每路DMA僅包括4個(gè)寄存器,用于指定DMA的工作模式、源地址、目標(biāo)地址和傳輸次數(shù)。ST公司提供了很好的驅(qū)動(dòng)庫(kù),簡(jiǎn)化了外設(shè)的使用,方便閱讀和移植。本文采用庫(kù)函數(shù)來(lái)展示功能。

        其通用時(shí)鐘是很有特色的外圍模塊,可實(shí)現(xiàn)多種復(fù)雜的功能。時(shí)鐘模塊內(nèi)部主要包含一個(gè)計(jì)數(shù)器和4個(gè)通道的比較/捕獲寄存器。時(shí)鐘可工作在捕獲或比較模式。在捕獲模式下,若有對(duì)應(yīng)的觸發(fā)信號(hào),計(jì)數(shù)器的值會(huì)保存到比較/捕獲寄存器,并觸發(fā)中斷或DMA;在比較模式下,若計(jì)數(shù)器的值與比較/捕獲寄存器的值相等,則對(duì)外輸出預(yù)選設(shè)定好的信號(hào),如高電平、低電平或電平反轉(zhuǎn)等。

        3 采用DMA+TIMx實(shí)現(xiàn)多路方波的產(chǎn)生

        采用時(shí)鐘的4個(gè)比較/捕獲通道加DMA可以產(chǎn)生出4路不同頻率和占空比的方波。這里為簡(jiǎn)化篇幅,只列出了產(chǎn)生一路方波的代碼?;驹硎牵簩r(shí)鐘的4個(gè)通道設(shè)置為反轉(zhuǎn)模式(即計(jì)數(shù)器與比較捕獲寄存器相等時(shí),其對(duì)應(yīng)的CPU引腳電平發(fā)生反轉(zhuǎn)),設(shè)置計(jì)數(shù)器為向上計(jì)數(shù)到0xFFFF的模式;然后預(yù)先計(jì)算好需要引腳反轉(zhuǎn)的時(shí)刻,并使能對(duì)應(yīng)通道的DMA請(qǐng)求。這樣,當(dāng)計(jì)數(shù)器與比較/捕獲寄存器的值相等時(shí),由DMA將下一個(gè)需要引腳電平反轉(zhuǎn)的時(shí)刻送入到比較/捕獲寄存器。

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

        需要注意的是,比較/捕獲寄存器的預(yù)加載功能必須禁止掉。我們需要的是寫(xiě)入比較/捕獲寄存器的值立即與計(jì)數(shù)器相比較輸出,而無(wú)需等待一個(gè)更新事件。

        4 采用DMA+TIMx實(shí)現(xiàn)多路方波的捕獲

        假設(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è)方波的最大頻率有一定的限制。另一種方案是采用輪詢(xún)的方式不斷查詢(xún)?cè)撘_的狀態(tài)并記錄上升沿和下降沿的時(shí)刻,這種方式下系統(tǒng)幾乎不能處理其他的任務(wù)了。

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

        圖1為T(mén)IMx工作在捕獲模式下一個(gè)通道的示意圖。

        其中TI1為CPU引腳的輸入,經(jīng)過(guò)濾波(新的電平必須保持一定時(shí)間才認(rèn)為有效,以防止高頻噪聲的干擾)后進(jìn)入后繼的邊沿極性選擇,最后經(jīng)過(guò)分頻作為捕獲信號(hào)的輸入。這里TI2F為相鄰?fù)ǖ澜?jīng)過(guò)濾波后的信號(hào),也就是說(shuō)一個(gè)引腳的信號(hào)可作為T(mén)IMx兩個(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)。示例代碼如下:

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

        5 總 結(jié)

        測(cè)試中STM32系列微控制器工作在36MHz,可產(chǎn)生出1路最高1.5MHz的方波,可捕獲1MHz的方波,而此時(shí)CPU的執(zhí)行幾乎不受影響。這里采用DMA來(lái)實(shí)現(xiàn)方波的產(chǎn)生和捕獲,極大地提高了系統(tǒng)的實(shí)時(shí)性和執(zhí)行效率,減少了中斷次數(shù),節(jié)省了寶貴的資源。這種方案也可以用來(lái)實(shí)現(xiàn)高效的模擬串口。

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

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

        [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.

        猜你喜歡
        外設(shè)方波計(jì)數(shù)器
        煤氣與熱力(2022年2期)2022-03-09 06:29:30
        碳納米管方波電沉積鉑催化劑的制備及其催化性能研究
        計(jì)數(shù)器競(jìng)爭(zhēng)冒險(xiǎn)及其處理的仿真分析
        方波外場(chǎng)下有限維量子系統(tǒng)的控制協(xié)議
        基于Matlab的方波分解與合成仿真實(shí)驗(yàn)設(shè)計(jì)
        任意N進(jìn)制計(jì)數(shù)器的設(shè)計(jì)方法
        河南科技(2014年10期)2014-02-27 14:09:30
        Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線(xiàn)
        基于單片機(jī)的仰臥起坐計(jì)數(shù)器
        一種幅頻可調(diào)的高頻高壓方波電源的研制
        貼身呵護(hù) 必不可少的PSP外設(shè)
        麻豆国产VA免费精品高清在线 | av中国av一区二区三区av| 中文字幕本久久精品一区| 国产激情无码视频在线播放性色| 午夜毛片不卡免费观看视频| 国产精品视频二区不卡| 图图国产亚洲综合网站| 成美女黄网站18禁免费| 精品国产乱子伦一区二区三| 国产精品偷窥熟女精品视频| 国产成人无码精品久久二区三区 | 日本一区二区久久精品亚洲中文无| 最新中文字幕亚洲一区| 午夜熟女插插xx免费视频| 国产精品无码a∨精品影院| 中文亚洲日韩欧美| 91热爆在线精品| 成人爽a毛片在线播放| 亚洲av高清一区二区三| 国产一区二区三区乱码| 亚洲日本va中文字幕久久| 亚洲九九夜夜| 东京热日本道免费高清| 日韩乱码人妻无码系列中文字幕| 中文字幕亚洲欧美日韩2019| 中文字幕天天躁日日躁狠狠| 成人大片在线观看视频| 国产色在线 | 日韩| 秋霞午夜无码鲁丝片午夜精品| 激情五月天俺也去综合网| 激情五月天色婷婷久久| 97日日碰曰曰摸日日澡| 国产乱人伦精品一区二区| 亚洲av无码片在线播放| 日本女优中文字幕有码| 婷婷四虎东京热无码群交双飞视频| 亚洲 自拍 另类 欧美 综合| 亚洲中文字幕女同一区二区三区| 最新中文字幕日韩精品| 国产婷婷色综合av蜜臀av| 国产一区二区三区在线观看精品|