国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32F103RCT6使用FFT運(yùn)算分析波形詳解(細(xì)致教學(xué))

這篇具有很好參考價(jià)值的文章主要介紹了stm32F103RCT6使用FFT運(yùn)算分析波形詳解(細(xì)致教學(xué))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近學(xué)校電賽隊(duì)伍招新,出的招新題就是低頻示波器的。之前一直沒有弄懂FFT,借著這次機(jī)會(huì)實(shí)現(xiàn)了一下,做了一個(gè)小示波器

  • FFT原理簡(jiǎn)述

FFT,就是快速傅里葉變換,這個(gè)操作能夠?qū)r(shí)域信號(hào)轉(zhuǎn)化成頻域信號(hào),然后對(duì)信號(hào)進(jìn)行分析

  這樣說可能有點(diǎn)抽象。講細(xì)點(diǎn)就是指能夠直觀的看出來目標(biāo)信號(hào)的頻率是多少。x軸坐標(biāo)本來是表示時(shí)間,F(xiàn)FT之后變成了表示頻率,就是這個(gè)意思

  對(duì)于信號(hào)處理,F(xiàn)FT之后的結(jié)果,波峰一般會(huì)出現(xiàn)在我們希望測(cè)得信號(hào)的頻率附近(十分相近)

  • 官方文件解釋

stm32官方給了幾個(gè)用于處理FFT的文件,如圖所示:

stm32f103 fft,stm32,stm32,單片機(jī),c語言

其中有兩個(gè)匯編文件兩個(gè)頭文件:匯編文件是定義了FFT的計(jì)算函數(shù),我們直接調(diào)用即可

cr4_fft_1024_stm32.s是包含了計(jì)算1024個(gè)點(diǎn)的FFT的函數(shù)的匯編文件,另一個(gè)匯編文件同理

stm32_dsp.h里面有關(guān)于FFT處理函數(shù)的聲明,我們包含了這個(gè)頭文件之后直接調(diào)用函數(shù)即可

補(bǔ)充:stm32_dsp.h當(dāng)中有一個(gè)include的頭文件,需要根據(jù)情況進(jìn)行修改,比如說用其他型號(hào)板子或者其他庫開發(fā)的記得要修改,不然編譯時(shí)會(huì)報(bào)錯(cuò)

  • 算法解釋
//進(jìn)行FFT運(yùn)算等操作
void FFT_Wave(void)
{
  u16 i;
  float mid_value;
  while(!ADC_flag)
  {
    LED1 = !LED1;
    delay_ms(100);
  }
  ADC_flag = 0;

  //獲取最大值最小值
  adc_value_max = adc_value_min = ADC_buff[1];
  for(i = 0;i < NPT;i++)
  {
    //尋找最大值最小值
    if(ADC_buff[i] >= adc_value_max)
    {
      adc_value_max = ADC_buff[i];
    }
    if(ADC_buff[i] <= adc_value_min)
    {
      adc_value_min = ADC_buff[i];
    }
    //先清空數(shù)組
    fftin[i] = 0;
    //移位,讓后面16位為虛部
    fftin[i] = ((s16)ADC_buff[i] << 16);
  }
  cr4_fft_1024_stm32(fftout,fftin,1024);//FFT
  GetPowerMag();
  //計(jì)算電壓值
  Vpp_true = (adc_value_max - adc_value_min) * 3.3 / 4096.0;//獲得Vpp值
  mid_value = (adc_value_max + adc_value_min) / 2;
  for(int i = 0;i < NPT;i++)
  {
    if(ADC_buff[i] > mid_value)
    {
      rect_duty++;
    }
  }
  rect_duty = rect_duty / 1024 * 100;
}

這是FFT的主體函數(shù)

第一步我們先要等待ADC采集完成,將數(shù)據(jù)存入數(shù)組當(dāng)中準(zhǔn)備進(jìn)行處理

第二步是在采樣值當(dāng)中尋找最大值和最小值(遍歷數(shù)組即可)

第三步是對(duì)數(shù)組進(jìn)行移位處理(前面的是實(shí)部,后面的是虛部,由于我們采集到的電壓都是實(shí)數(shù),所以虛部都置0)

第四步是使用ST官方提供的函數(shù)進(jìn)行FFT運(yùn)算,得到運(yùn)算之后的數(shù)組

第五步是根據(jù)頻譜查找我們信號(hào)所對(duì)應(yīng)的頻率,也就是對(duì)頻譜圖當(dāng)中所有的頻率進(jìn)行幅值的比較,找出幅值最大時(shí)所對(duì)應(yīng)的頻率,即為我們所需要測(cè)量的頻率,其他的都可以看作噪聲

在我們找到該頻率之后,不能立刻輸出,要與ADC的采樣率相乘再除以1024,之后才能得到我們想要的信號(hào)頻率

GetPowerMag函數(shù)定義如下:

void GetPowerMag(void)
{
  s16 lX,lY;
  u32 i;
  float maxmag;
  for(i = 0;i < NPT / 2;i++)
  {
    lX = (fftout[i] << 16) >> 16;
    lY = (fftout[i] >> 16);
    float X = 1024 * ((float)lX) / 32768;
    float Y = 1024 * ((float)lY) / 32768;
    float mag = sqrt(X * X + Y * Y) / 1024;
    FFT_Mag[i] = (u32)(mag * 65536);
  }
  FFT_Mag[0] >>= 1;//頻譜圖第一個(gè)是直流分量,無需乘2
  for(int i = 0;i < NPT / 2;i++)
  {
    if((maxmag < FFT_Mag[i]) && (i != 0))
    {
      maxmag = FFT_Mag[i];
      temp = i;
    }
  }
  F_hz = temp * sampling_rate / 1024.0;
}

至此,我們就得到了我們所需信號(hào)的頻率

鑒于本小白能力有限,如果有紕漏或改進(jìn)之處,歡迎指正

特別提醒:ADC采樣率應(yīng)遵循奈奎斯特采樣定理!采樣率不是越高越好(因?yàn)椴蓸勇侍邥?huì)降低采樣的精度,采樣率太低會(huì)導(dǎo)致高頻信號(hào)發(fā)生混疊現(xiàn)象)!

這個(gè)是上面用到的匯編文件的百度盤分享鏈接,失效了可以私聊cue我更新

鏈接:https://pan.baidu.com/s/1n8Hl09SmLhp963-vYbA2iw?pwd=1234?
提取碼:1234?
文章來源地址http://www.zghlxwxcb.cn/news/detail-632220.html

到了這里,關(guān)于stm32F103RCT6使用FFT運(yùn)算分析波形詳解(細(xì)致教學(xué))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • stm32f103rct6引腳功能表格

    腳號(hào) 引腳名稱 主功能 默認(rèn)復(fù)用 重定義 備注 1?????????? ? VBAT VBAT -- -- 說明1 2?????????? ? PC13-TAMPER-RTC PC13 TAMPER-RTC -- 說明3 3?????????? ? PC14-OSC32_IN PC14 OSC32_IN -- 說明3 4?????????? ? PC15-OSC32_OUT PC15 OSC32_OUT -- 說明3 5?????????? ? OSC_IN OSC_IN -- CAN_RX 晶振

    2024年02月06日
    瀏覽(34)
  • STM32F103RCT6——定時(shí)器簡(jiǎn)單用法

    STM32F103RCT6——定時(shí)器簡(jiǎn)單用法

    STM32F10xx參考手冊(cè)英文和中文版 百度網(wǎng)盤:https://pan.baidu.com/s/1Z2nB0WVJIxvm3VOI9MQiiw 提取碼:lxlx STM32F103RCT6數(shù)據(jù)手冊(cè) 鏈接:https://pan.baidu.com/s/1tRchgf-5C1MN4W58vQ9zPg 提取碼:lxlx STM32F103RCT6包括,高級(jí)控制定時(shí)器TIM1和TIM8,通用定時(shí)器TIM2-5,基本定時(shí)器TIM6和TIM7. 高級(jí)控制定時(shí)器TIM1,TI

    2024年02月08日
    瀏覽(99)
  • 從零開始制作STM32F103RCT6小車(一)

    從零開始制作STM32F103RCT6小車(一)

    ? ? ? ? 僅以此系列給實(shí)驗(yàn)室的學(xué)弟學(xué)妹作為小車制作教程來使用,后續(xù)的內(nèi)容我會(huì)在這個(gè)暑假陸續(xù)更新出來,本篇的內(nèi)容是新建一個(gè)適用于STM32F103RCT6的工程 ? ? ? ? 接下來的操作幾乎是基于STM32F1xx系列的固件庫,這里我給大家列出鏈接 STM32F1xx系列固件庫? ? ? ? ? ? ? ?

    2023年04月08日
    瀏覽(108)
  • STM32F103RCT6電路設(shè)計(jì)及繪制方法和學(xué)習(xí)體會(huì)

    STM32F103RCT6電路設(shè)計(jì)及繪制方法和學(xué)習(xí)體會(huì)

    目錄 1電路圖各部分原理分析 1.1通信-下載板塊接口電路 1.1.1 通信模塊 1.1.2 顯示燈 1.2電源轉(zhuǎn)化電路 1.2.1 電源轉(zhuǎn)化 1.3晶振電路 1.4 OLED顯示屏接口電路 1.5 獨(dú)立按鍵電路 1.6 JTAG/SWD調(diào)試接口電路 1.7 STM32微控制器電路 1.7.1 副芯片原理 1.7.2 主芯片原理 1.8 外擴(kuò)引腳 1.9 顯示燈 2圖紙的

    2024年02月14日
    瀏覽(84)
  • STM32F103RCT6驅(qū)動(dòng)SG90舵機(jī)-完成正反轉(zhuǎn)角度控制

    STM32F103RCT6驅(qū)動(dòng)SG90舵機(jī)-完成正反轉(zhuǎn)角度控制

    SG90是一種微型舵機(jī),也被稱為伺服電機(jī)。它是一種小型、低成本的直流電機(jī),通常用于模型和機(jī)器人控制等應(yīng)用中。SG90舵機(jī)可以通過電子信號(hào)來控制其精確的位置和速度。它具有體積小、重量輕、響應(yīng)快等特點(diǎn),因此在各種小型機(jī)械設(shè)備上得到了廣泛應(yīng)用。 SG90舵機(jī)通常用于

    2024年02月03日
    瀏覽(106)
  • STM32F103RCT6 -- 基于FreeRTOS 的USART1 串口通訊

    使用 FreeRTOS 提供的隊(duì)列(Queue)機(jī)制來實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送 TX - PA9 RX - PA10 波特率:9600 數(shù)據(jù)位:8bit 校驗(yàn)位:無 停止位:1bit 數(shù)據(jù)格式: RX: 55 AA 06 00 06 31 02 24 01 FC 80 TX: 55 AA 06 00 06 32 01 24 01 B8 70 55 AA – 幀頭 06 - 數(shù)據(jù)字節(jié)數(shù),不包括幀頭,不包括校驗(yàn)位 00 06 – 模塊 31 02 24

    2024年02月16日
    瀏覽(91)
  • 設(shè)計(jì)分享 | STM32F103RCT6利用ULN2003驅(qū)動(dòng)步進(jìn)電機(jī)正反轉(zhuǎn)

    設(shè)計(jì)分享 | STM32F103RCT6利用ULN2003驅(qū)動(dòng)步進(jìn)電機(jī)正反轉(zhuǎn)

    https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484170idx=1sn=3fa68d0fbf30cf614e8779abf38c3e2bchksm=cf430652f8348f44e4b95bb7b22ce7f9f5a86e13f421741aefd08cedb169708309c79566ab1ftoken=1923877603lang=zh_CN#rd https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484170idx=1sn=3fa68d0fbf30cf614e8779abf38c3e2bchksm=cf430652f8348f44e4b95bb7b22ce7f9f5a8

    2023年04月17日
    瀏覽(88)
  • RFID課程設(shè)計(jì)--基于STM32F103RCT6的智能門禁系統(tǒng),STM32RCT6+RC522+OLED+DHT11+4*4矩陣鍵盤

    RFID課程設(shè)計(jì)--基于STM32F103RCT6的智能門禁系統(tǒng),STM32RCT6+RC522+OLED+DHT11+4*4矩陣鍵盤

    ??本次課程設(shè)計(jì)要求如下,我們團(tuán)隊(duì)兩人完成了90%的功能。 ??其中我們?cè)O(shè)置的是刷卡錯(cuò)誤3次不報(bào)警,密碼輸入錯(cuò)3次報(bào)警(原理相同,大家根據(jù)需要自行修改) ??然后暫時(shí)只能顯示卡號(hào)和卡是第幾個(gè)錄入到系統(tǒng)中的,想到身份證號(hào)和電話(身份信息)輸進(jìn)去有點(diǎn)長(zhǎng)就沒

    2024年01月16日
    瀏覽(114)
  • STM32F103RCT6開發(fā)板M3單片機(jī)教程06--定時(shí)器中斷

    STM32F103RCT6開發(fā)板M3單片機(jī)教程06--定時(shí)器中斷

    除非特別說明,本章節(jié)描述的模塊應(yīng)用于整個(gè) STM32F103xx 微控制器系列,因?yàn)槲覀兪褂檬?STM32F103RCT6開發(fā)板是mini最小系統(tǒng)板。 本教程使用是( 光明谷SUN_STM32mini開發(fā)板 ) ? 首先了解一下是STM32F10X定時(shí)器(Timer) ? 注: 小容量產(chǎn)品是指閃存存儲(chǔ)器容量在16K至32K字節(jié)之間的STM32F101

    2024年02月04日
    瀏覽(99)
  • 基于STM32F103RCT6之手把手教你寫智能家居項(xiàng)目(2)

    基于STM32F103RCT6之手把手教你寫智能家居項(xiàng)目(2)

    ??????? 上一節(jié)我們簡(jiǎn)述了智能家居項(xiàng)目,實(shí)現(xiàn)了點(diǎn)燈的相關(guān)代碼編寫,還有WIFI模塊的固件燒錄。 連接什么平臺(tái): ??????? 我們想要遠(yuǎn)程控制家具的開關(guān)和獲取家中的狀態(tài),少不了一個(gè)可以傳輸數(shù)據(jù)的云平臺(tái)。我認(rèn)為易監(jiān)控是一個(gè)簡(jiǎn)單好用的云平臺(tái)。 怎么連接平臺(tái):

    2024年02月20日
    瀏覽(909)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包