• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    STM32的頻率采集方法在實時操作系統(tǒng)的應用

    2021-03-11 03:34:18呂新張博劉志堅王瑞闞京波
    電子技術與軟件工程 2021年21期
    關鍵詞:中斷計數(shù)精度

    呂新 張博 劉志堅 王瑞 闞京波

    (中車大連機車研究所有限公司 遼寧省大連市 116000)

    STM32F4 系列是意法公司基于arm 內(nèi)核的中端產(chǎn)品,擁有數(shù)量較多的通用定時器[1],及DMA 通道。針對捕獲頻率方法,通用定時器擁有豐富的配置方案。

    工控系統(tǒng)中,頻率采集是一項基本功能。頻率輸入量一般為PWM 波或者正弦波樣式,通過硬件光耦轉(zhuǎn)換為高低電平。軟件計算頻率方法根據(jù)ST 系統(tǒng)配置模式的不同,會稍有區(qū)別。但為了精度要求,都要滿足奈奎斯特采樣定律,在大于10 倍采樣頻率才會有較高的精度[2]。對于一般捕獲模式及計頻方法,通過電平變化時間差,計算頻率;對與PWM 輸入捕獲模式,只需要設置定時器采樣頻率,計數(shù)上升沿或者下降沿數(shù)量,可計算出頻率,通過DMA模式,不中斷實時系統(tǒng)的任務,很大程度減輕系統(tǒng)的工作量。

    1 控制方案

    1.1 捕獲采樣

    配置定時器模式為捕獲模式,捕獲上升、下降沿時間,若捕獲周期過低,則會存在N 次溢出,就需要對可能溢出次數(shù)預估,做出判斷。如圖1所示,若定時器周期為T,t1 時刻計數(shù)值CNT1,t2 時刻捕獲值為CNT2,兩次捕獲值相減,需要注意,加上溢出次數(shù),否則會丟失頻率。若預分頻設為0,自動重裝值設為T,計算公式為CNT1>CNT2 時,(CNT1-CNT2) * N*T,若CNT1<CNT2 時,計算公式為N*T-CNT2 +CNT1。

    圖1:捕獲采樣原理

    捕獲采樣面臨的問題是,定時器的周期設置不能過小,否則采樣精度會下降。此時中斷會對系統(tǒng)任務有很大影響,尤其當多通道采集頻率時,實時任務響應不及時的現(xiàn)象時有發(fā)生,CPU 占用率高。

    1.2 計頻方式

    計頻模式是利用STM32 自帶的ETR 引腳計算脈沖數(shù),捕獲步驟如圖2所示,設置為向上計數(shù)器,分頻一般設置為0 即可,濾波器在這里設置為5 次濾波,設置為外部計數(shù)模式2。

    圖2:計頻方式時鐘原理圖

    可以利用實時系統(tǒng)時間鉤子函數(shù),每隔N 毫秒中斷一次并讀取計數(shù),兩次相減即為N 毫秒的計數(shù)值cnt,再算出次數(shù)cout = 1000/N,頻率即為cnt * cout。

    捕獲模式的問題是,為了采集精度,計數(shù)值計算需要頻繁中斷累加計數(shù)值,頻率采集和實時系統(tǒng)會互相影響,CPU 占用率高。

    1.3 PWM輸入捕獲DMA方法

    DMA 是直接通過外設到內(nèi)存的處理模式,廣泛應用于高速信號處理相關領域[3],在本方法中主要發(fā)生在捕獲采樣階段,通過FIFO 不斷刷新內(nèi)存緩沖數(shù)組中的數(shù)據(jù),避免了CPU 被占用過多的資源,PWM 輸入捕獲以定時器1 通道為例,如圖3所示,通過濾波器,設置為5 次,邊沿檢測通過配置設置,一般設置為上升沿,本次利用從控制器的捕獲控制。一般PWM 輸入捕獲有兩個通道,分別為TI1FP1 和TI2FP2,利用其中一個計算頻率,另一個計算占空比。通過定時器DMA 相應通道傳輸數(shù)據(jù)。捕獲計數(shù)為cnt,根據(jù)PWM 輸入捕獲的模式方法,與捕獲方法的最大不同為,每一個新周期cnt 重新清零。定時器時鐘周期為F,則頻率為F/cnt。

    圖3:PWM 輸入捕獲方法模塊原理圖

    PWM 輸入捕獲獲DMA 傳輸方法的問題是,數(shù)據(jù)DMA 中采集有一定波動,需要利用中值濾波進行濾波。

    2 方案的具體實施

    2.1 捕獲采樣的實現(xiàn)

    利用通用定時器配置計數(shù)周期,根據(jù)引腳外圍定義設置IC 通道,設置相關的IC 捕獲屬性。同時配置NVIC 中斷管理器相關優(yōu)先級,使能定時器的捕獲中斷配置信息。在中斷中計算兩次上升沿計數(shù)差值,在實時系統(tǒng)fi 任務中對頻率量作中值濾波[4]。計算頻率具體核心配置代碼如下:

    TIMx_ICInitStructure.TIM_Channex = TIM_Channel_x;

    TIMx_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

    TIMx_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

    TIMx_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

    TIMx_ICInitStructure.TIM_ICFilter = 0x00;

    TIM_ICInit(TIMx, &TIMx_ICInitStructure);

    2.2 計頻方式的實現(xiàn)

    根據(jù)引腳定義,初始化相關引腳為外部捕獲引腳,系統(tǒng)設置定時器參數(shù),預分頻設置為0,周期設置為0xffff,模式為外部時鐘模式2.需根據(jù)采樣精度需要設置定時器中斷,本設計中利用系統(tǒng)自帶時間鉤子函數(shù),在鉤子函數(shù)中對外部捕獲(時鐘)信息計數(shù),精度精確到1HZ。在實時系統(tǒng)fi 任務中對相鄰的兩次計數(shù)值相減,對此值累加1000 次,即為周期數(shù)。

    2.3 PWM輸入捕獲DMA方法

    PWM 輸入捕獲是一種特殊的捕獲方式,也可以說是一種簡化的捕獲方案。定時器配置方案與捕獲采樣基本相同,只需要多配置一個模式選擇,同時根據(jù)圖3配置相應時鐘從模式相應參數(shù),如下代碼所示。重點需要考慮DMA 的相關配置。

    (1)DMA 配置基本信息;DMA 通道、DMA 外設基準地址、DMA 內(nèi)存基準地址、DMA 傳輸方向、DMA 傳輸數(shù)組大小、數(shù)據(jù)格式等;

    (2)DMA 模式設置為循環(huán)模式、FIFO 模式禁止。

    (3)使能DMA。

    (4)使能相應定時器DMA 請求。

    TIM_PWMIConfig(TIMx, &TIMx_ICInitStructure); // 使能PWM 捕獲模式

    TIM_SelectInputTrigger(TIMx, TIM_TS_TI1FP1); //選擇輸入捕獲的觸發(fā)信號

    TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);// PWM 輸入模式時,從模式必須工作在復位模式,當捕獲開始時,計數(shù)器CNT 被復位清零;

    TIM_SelectMasterSlaveMode(TIM2,TIM_MasterSlaveMode_Enable);

    根據(jù)系統(tǒng)的采樣精度要求,系統(tǒng)采樣頻率上限為5000HZ,那么若一個DMA 緩沖區(qū)數(shù)據(jù)長度設置為10,在實時系統(tǒng)fi 任務中周期設置為10ms,讀取一次DMA 的傳輸結(jié)果的在一個任務周期中會有50 個周期,若一個fi 任務中周期設置為100ms,讀取一次DMA的傳輸結(jié)果的在一個任務周期中會有500 個周期,并在任務中作中值濾波,基本滿足性能要求。

    3 實驗驗證

    3.1 實時系統(tǒng)CPU占用率及所??臻g實驗

    在實時系統(tǒng)中分別建立不同的功能任務,且主要邏輯任務為motor_task,motor_another_task,實時任務在系統(tǒng)運行過程中處于不同的三種狀態(tài)[5],在這些任務中調(diào)用了fi/fi_detect_task 中的頻率頻率采集值,系統(tǒng)中分別多次調(diào)用三種采集方式,為了保證實驗的準確性,剩余部分代碼未變化,計算系統(tǒng)信息參數(shù)配置相同。如圖4所示,觀察CPU 剩余堆棧及占用率及變化,可以得到以下結(jié)果:

    圖4

    (1)主要實時主要邏輯任務motor_task 對應上述三種采集方式所剩堆棧數(shù)量,可以得到采用中斷捕獲中任務處于阻塞態(tài),剩余堆棧數(shù)179;采用計頻方法,任務處于運行態(tài),剩余堆棧數(shù)179;采用PWM 輸入捕獲DMA 方式,任務處于運行態(tài),剩余堆棧數(shù)187;另一個實時任務motor_another_task,對應上述三種方式,分別為阻塞態(tài),運行態(tài),運行態(tài)。所剩堆棧數(shù)分別為168,179,187。

    (2)主要實時主要邏輯任務motor_task 對應上述三種采集方式運行計數(shù)值,可以得到采用中斷捕獲中任務處于阻塞態(tài),任務運行計數(shù)為6228;采用計頻方法,任務處于運行態(tài),任務運行計數(shù)為3450;采用PWM 輸入捕獲DMA 方式,任務處于運行態(tài),任務運行計數(shù)為357;另一個實時任務motor_another_task,對應上述三種方式,分別為阻塞態(tài),運行態(tài),運行態(tài)。任務運行計數(shù)分別為15276,72941,310。

    從上述數(shù)據(jù)可以看出,使用捕獲采樣中斷方式對CPU 的運行效率影響是最大的,第二是計頻采集方式,對CPU 影響最小的是PWM 輸入捕獲DMA 方法。

    3.2 頻率精度實驗

    使用頻率信號發(fā)生器對三種采樣方式在實時系統(tǒng)中測量分析,數(shù)據(jù)對比表如表1所示。

    表1:頻率測量對比

    從表1可以看出,基于PWM 輸入捕獲DMA 采樣值在1kHz以內(nèi),相比其他兩種方法有更高的精度,當大于1kHz 小于3kHz 時,小于等于1Hz 的誤差,也基本滿足一般條件工況的測量精度要求,當大約3kHz 時,誤差逐步增大,精度下降。

    4 結(jié)論

    本文提出的PWM 輸入捕獲DMA 方法配合實時系統(tǒng)應用,能夠很大程度的減輕實時系統(tǒng)中對CPU 的資源的占用,提高了系統(tǒng)的實時性響應性,提升了軟件的執(zhí)行效率;且在一般應用條件下滿足對頻率采集的精度要求。不額外增加頻率采樣器件,減少了額外的硬件成本。

    猜你喜歡
    中斷計數(shù)精度
    古人計數(shù)
    遞歸計數(shù)的六種方式
    古代的計數(shù)方法
    基于DSPIC33F微處理器的采集精度的提高
    電子制作(2018年11期)2018-08-04 03:25:38
    這樣“計數(shù)”不惱人
    跟蹤導練(二)(5)
    千里移防,衛(wèi)勤保障不中斷
    解放軍健康(2017年5期)2017-08-01 06:27:44
    GPS/GLONASS/BDS組合PPP精度分析
    改進的Goldschmidt雙精度浮點除法器
    巧用磨耗提高機械加工精度
    河南科技(2014年14期)2014-02-27 14:11:53
    镇江市| 安达市| 江华| 中超| 启东市| 乌鲁木齐县| 高青县| 西吉县| 沙田区| 定结县| 冀州市| 当涂县| 辽中县| 宁夏| 烟台市| 七台河市| 秀山| 两当县| 昌吉市| 金华市| 安国市| 金阳县| 新疆| 渝中区| 阿巴嘎旗| 普定县| 萨迦县| 阳高县| 长寿区| 巴楚县| 资源县| 阳江市| 海口市| 永川市| 凭祥市| 罗山县| 景德镇市| 台南县| 博客| 舒城县| 琼海市|