在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CKS32F4xx系列DSP功能介紹

中科芯MCU ? 來源:中科芯MCU ? 2024-03-04 13:43 ? 次閱讀

CKS32F4xx系列DSP功能

CKS32F4xx系列使用高性能的32位內核,支持浮點運算單元(FPU),同時還支持DSP指令以及存儲保護(MPU)用來加強應用的安全性。

DSP介紹

CKS32F4xx系列擁有兩個DSP指令:MAC指令(32位乘法累加)和SIMD指令。32位乘法累加(MAC)單元包括新的指令集,能夠在單周期內完成一個32×32+64→64的操作或兩個16×16的操作。而SIMD指令與硬件乘法器一起工作(MAC),使所有這些指令都能在單個周期內執行。受益于SIMD指令的支持,CKS32F4xx系列能在單周期內完成高達32×32+64→64的運算,為其他任務釋放處理器的帶寬,而不是被乘法和加法消耗運算資源。

DSP源碼庫具有以下功能:

BasicMathFunctions

提供浮點數的各種基本運算函數,如向量加減乘除等運算。

CommonTables

arm_common_tables.c文件提供位翻轉或相關參數表。

ComplexMathFunctions

復雜數學功能,如向量處理,求模運算的。

ControllerFunctions

控制功能函數。包括正弦余弦,PID電機控制,矢量Clarke變換,矢量Clarke逆變換等。

FastMathFunctions

快速數學功能函數。提供了一種快速的近似正弦,余弦和平方根等,相比CMSIS計算庫要快的數學函數。

FilteringFunctions

濾波函數功能,主要為FIR和LMS(最小均方根)等濾波函數。

MatrixFunctions

矩陣處理函數。包括矩陣加法、矩陣初始化、矩陣反、矩陣乘法、矩陣規模、矩陣減法、矩陣轉置等函數。

StatisticsFunctions

統計功能函數。如求平均值、最大值、最小值、計算均方根RMS、計算方差/標準差等。

SupportFunctions

支持功能函數,如數據拷貝,Q格式和浮點格式相互轉換,Q任意格式相互轉換。

TransformFunctions

變換功能。包括復數FFT(CFFT)/復數FFT逆運算(CIFFT)、實數FFT(RFFT)/實數FFT逆運算(RIFFT)、和DCT(離散余弦變換)和配套的初始化函數。

DSP庫運行環境搭建

接下來我們講解如何搭建DSP庫運行環境,只要運行環境搭建好了,使用DSP庫里面的函數來做相關處理就非常簡單了。在MDK里面搭建CKS32F4xx系列的DSP運行環境(使用.lib方式)是很簡單的,分為3個步驟:

1

添加文件

首先,我們在例程工程目錄下新建DSP_LIB文件夾,存放我們將要添加的相關文件,如圖1所示:

1a9a21f0-d87f-11ee-a297-92fbcf53809c.png

然后,打開工程,新建DSP_LIB分組,并將.lib文件添加到工程里面,如圖2所示:

1ab3a6ca-d87f-11ee-a297-92fbcf53809c.png

2

添加頭文件包含路徑

添加好.lib文件后,我們要添加頭文件包含路徑,將第一步拷貝的Include文件夾和DSP_LIB文件夾加入頭文件包含路徑,如圖3所示:

1ac51586-d87f-11ee-a297-92fbcf53809c.png

3

添加全局宏定義

最后,為了使用DSP庫的所有功能,我們還需要添加幾個全局宏定義:

1,__FPU_USED

2,__FPU_PRESENT

3,ARM_MATH_CM4

4,__CC_ARM

5,ARM_MATH_MATRIX_CHECK

6,ARM_MATH_ROUNDING

添加方法:點擊魔法棒→C/C++選項卡,然后在Define里面進行設置,如圖4所示:

1ae4dda8-d87f-11ee-a297-92fbcf53809c.png

這里,兩個宏之間用“,”隔開。并且,上面的全局宏里面,我們沒有添加__FPU_USED,因為這個宏定義在Target選項卡設置Code Generation的時候選擇了:Use FPU(如果沒有設置Use FPU,則必須設置!!),故MDK會自動添加這個全局宏,因此不需要我們手動添加了。這樣,在Define處要輸入的所有宏為:

CKS32F40_41xxx,USE_STDPERIPH_DRIVER,ARM_MATH_CM4,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING 共6個。

至此,CKS32F4xx系列的DSP庫運行環境就搭建完成了。為了方便調試,本章例程我們將MDK的優化設置為-O0優化,以得到最好的調試效果。

DSP FFT測試

關于FFT這里就不再詳細介紹。如果我們要自己實現FFT算法,對于不懂數字信號處理的人來說,是比較難的,不過,DSP庫里面就有FFT函數給我們調用,因此我們只需要知道如何使用這些函數,就可以迅速的完成FFT計算。DSP庫里面提供了定點和浮點 FFT 實現方式,并且有基4的也有基2的,大家可以根據需要自由選擇實現方式。

注意:對于基4的FFT輸入點數必須是4n,而基2的FFT 輸入點數則必須是2n,并且基4的FFT算法要比基2的快。本章我們將采用DSP庫里面的基4浮點FFT算法來實現FFT變換,并計算每個點的模值,所用到的函數有:

FFT變換用到的函數

arm_status arm_cfft_radix4_init_f32( arm_cfft_radix4_instance_f32 * S, uint16_t fftLen,uint8_t ifftFlag,uint8_t bitReverseFlag)

void arm_cfft_radix4_f32(const arm_cfft_radix4_instance_f32 * S,float32_t * pSrc)

void arm_cmplx_mag_f32(float32_t * pSrc,float32_t * pDst,uint32_t numSamples)

arm_cfft_radix4_init_f32用于初始化FFT運算相關參數,其中:fftLen用于指定 FFT長度(16/64/256/1024/4096),本章設置為1024;ifftFlag用于指定是傅里葉變換(0)還是反傅里葉變換(1),本章設置為0;bitReverseFlag用于設置是否按位取反,本章設置為1;最后,所有這些參數存儲在一個 arm_cfft_radix4_instance_f32結構體指針S里面。

arm_cfft_radix4_f32就是執行基4浮點FFT運算的,pSrc傳入采集到的輸入信號數據(實部+虛部形式),同時FFT變換后的數據,也按順序存放在pSrc里面,pSrc必須大于等于 2倍fftLen長度。另外,S結構體指針參數是先由arm_cfft_radix4_init_f32函數設置好,然后傳入該函數的。

arm_cmplx_mag_f32用于計算復數模值,可以對FFT變換后的結果數據,執行取模操作。pSrc為復數輸入數組(大小為 2*numSamples)指針,指向FFT變換后的結果;pDst 為輸出數組(大小為 numSamples)指針,存儲取模后的值;numSamples就是總共有多少個數據需要取模。

通過這三個函數,我們便可以完成 FFT 計算,并取模值。

主函數

int main(void)

{

arm_cfft_radix4_instance_f32 scfft;

float time;

u8 buf[50];

u16 i;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2

delay_init(168); //初始化延時函數

Debug_USART_Config(); //初始化串口波特率為115200

TIM3_Int_Init(65535,84-1); //1Mhz計數頻率,最大計時65ms左右超出

arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft結構體,設定FFT相關參數

while(1)

{

for(i=0;i

{

fft_inputbuf[2*i]=100+10*arm_sin_f32(2*PI*i/FFT_LENGTH)+30*arm_sin_f32(2*PI*i*4/FFT_LENGTH)+50*arm_cos_f32(2*PI*i*8/FFT_LENGTH); //生成輸入信號實部

fft_inputbuf[2*i+1]=0;//虛部全部為0

}

TIM_SetCounter(TIM3,0);//重設TIM3定時器的計數器值

timeout=0;

arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT計算(基4)

time=TIM_GetCounter(TIM3)+(u32)timeout*65536;

sprintf((char*)buf,"%0.3fms ",time/1000);

printf(" FFT基4運算運行時間為: %s", buf);

arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH);

printf(" %d point FFT runtime:%0.3fms ",FFT_LENGTH,time/1000);

printf("FFT Result: ");

for(i=0;i

{

printf("fft_outputbuf[%d]:%f ",i,fft_outputbuf[i]);

}

delay_ms(2000);

delay_ms(2000);

delay_ms(2000);

}

}

主函數里面通過我們前面介紹的三個函數:arm_cfft_radix4_init_f32、 arm_cfft_radix4_f32和arm_cmplx_mag_f32來執行FFT變換并取模值。每隔6秒就會重新生成一個輸入信號序列,并執行一次FFT計算,將 arm_cfft_radix4_f32 所用時間統計出來,同時將取模后的模值通過串口打印出來。


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19286

    瀏覽量

    229842
  • dsp
    dsp
    +關注

    關注

    553

    文章

    7998

    瀏覽量

    348925
  • MPU
    MPU
    +關注

    關注

    0

    文章

    359

    瀏覽量

    48797
  • 浮點運算
    +關注

    關注

    0

    文章

    19

    瀏覽量

    11168

原文標題:MCU微課堂|CKS32F4xx系列DSP功能

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CKS32F4xx系列ETH通信詳解

    CKS32F4xx系列芯片自帶以太網模塊,該模塊包括帶專用DMA控制器的MAC 802.3(介質訪問控制)控制器
    的頭像 發表于 11-10 11:13 ?1008次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信詳解

    CKS32F4xx系列I2S功能介紹

    CKS32F4xx系列使用高性能的32位內核,支持浮點運算單元(FPU),同時還支持DSP指令以及存儲保護(MPU)用來加強應用的安全性。
    的頭像 發表于 03-17 09:40 ?1221次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>I2S<b class='flag-5'>功能</b><b class='flag-5'>介紹</b>

    CKS32F4xx系列產品串口DMA傳輸

    在上一講,我們講過CKS32F4xx系列的6個串口都支持DMA傳輸。因此本節我們對CKS32F4xx系列的DMA進行介紹,同時利用DMA對串
    的頭像 發表于 04-10 11:18 ?1043次閱讀

    CKS32F4xx系列RNG功能設置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機數發生器簡介 ? ? CKS32F4xx系列自帶了硬件隨機數發生器(RNG),RNG處理器是一個以連續模擬噪聲為基礎的隨機
    的頭像 發表于 09-08 10:01 ?609次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG<b class='flag-5'>功能</b>設置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發表于 11-06 16:56 ?854次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC<b class='flag-5'>功能</b>

    CKS32F4xx系列ADC多通道DMA電壓采集

    CKS32F4xx系列ADC多通道DMA電壓采集
    的頭像 發表于 11-06 16:53 ?1103次閱讀

    CKS32F4xx系列ADC單通道電壓采集

    CKS32F4xx系列ADC單通道電壓采集
    的頭像 發表于 11-06 16:54 ?991次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ADC單通道電壓采集

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的頭像 發表于 11-06 16:57 ?480次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的頭像 發表于 11-06 16:59 ?682次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的頭像 發表于 11-06 17:08 ?627次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式STOP模式

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-比較輸出
    的頭像 發表于 11-09 17:39 ?859次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產品Timer的基本使用方法-定時操作

    CKS32F4xx系列產品Timer的基本使用方法-定時操作
    的頭像 發表于 11-09 17:41 ?622次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品Timer的基本使用方法-定時操作

    MCU微課堂 | CKS32F4xx系列產品SPI通信

    MCU微課堂 | CKS32F4xx系列產品SPI通信
    的頭像 發表于 10-24 17:12 ?708次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品SPI通信

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置
    的頭像 發表于 10-24 15:14 ?787次閱讀
    MCU微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產品GPIO口配置

    CKS32F4xx系列FSMC功能簡介

    本課講為大家講解CKS32F4xx系列產品的FSMC應用實例,FSMC全稱是Flexible Static Memory Controller,讀作靈活的靜態存儲控制器,顧名思義,MCU可以通過FSMC擴展靜態內存
    的頭像 發表于 04-14 15:06 ?948次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC<b class='flag-5'>功能</b>簡介
    主站蜘蛛池模板: 性猛交毛片| 黄色免费在线视频| 色视频免费观看| 四虎永久在线观看免费网站网址| 六月婷婷久久| 日本污污视频| 国产福利午夜| 亚洲综合区图片小说区| 在线播放黄色| 色天天综合| 爱爱的免费视频| 日本污视频| 国产精品久久在线观看| 四虎永久免费地址| 1024国产高清精品推荐| 久久国产视频网站| 一级特色黄色片| 欧美日韩精品一区二区另类| 国内自拍网红在综合图区| 久久在草| 琪琪see色原在线20| 欧美色a电影精品aaaa| 不卡精品国产_亚洲人成在线| 2020天天操| 亚洲国产成人成上人色| 免费看 s色| 午夜视频精品| 欧美特黄三级在线观看| 色在线视频观看| 午夜在线观看免费高清在线播放| 制服丝袜在线一区| 四虎最新网址| 午夜小视频在线观看| 久久久婷婷| 国产乱辈通伦影片在线播放亚洲| 久久最新精品| 无遮挡很爽很污很黄很色的网站| 久久99免费| 西西午夜影院| 男人的天堂在线免费视频| 天天爽夜夜爽夜夜爽|