女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CKS32F4xx系列DSP功能介紹

中科芯MCU ? 來源:中科芯MCU ? 2024-03-04 13:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CKS32F4xx系列DSP功能

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

DSP介紹

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

DSP源碼庫具有以下功能:

BasicMathFunctions

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

CommonTables

arm_common_tables.c文件提供位翻轉(zhuǎn)或相關(guān)參數(shù)表。

ComplexMathFunctions

復(fù)雜數(shù)學(xué)功能,如向量處理,求模運算的。

ControllerFunctions

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

FastMathFunctions

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

FilteringFunctions

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

MatrixFunctions

矩陣處理函數(shù)。包括矩陣加法、矩陣初始化、矩陣反、矩陣乘法、矩陣規(guī)模、矩陣減法、矩陣轉(zhuǎn)置等函數(shù)。

StatisticsFunctions

統(tǒng)計功能函數(shù)。如求平均值、最大值、最小值、計算均方根RMS、計算方差/標(biāo)準(zhǔn)差等。

SupportFunctions

支持功能函數(shù),如數(shù)據(jù)拷貝,Q格式和浮點格式相互轉(zhuǎn)換,Q任意格式相互轉(zhuǎn)換。

TransformFunctions

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

DSP庫運行環(huán)境搭建

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

1

添加文件

首先,我們在例程工程目錄下新建DSP_LIB文件夾,存放我們將要添加的相關(guān)文件,如圖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里面進行設(shè)置,如圖4所示:

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

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

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

至此,CKS32F4xx系列的DSP庫運行環(huán)境就搭建完成了。為了方便調(diào)試,本章例程我們將MDK的優(yōu)化設(shè)置為-O0優(yōu)化,以得到最好的調(diào)試效果。

DSP FFT測試

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

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

FFT變換用到的函數(shù)

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運算相關(guān)參數(shù),其中:fftLen用于指定 FFT長度(16/64/256/1024/4096),本章設(shè)置為1024;ifftFlag用于指定是傅里葉變換(0)還是反傅里葉變換(1),本章設(shè)置為0;bitReverseFlag用于設(shè)置是否按位取反,本章設(shè)置為1;最后,所有這些參數(shù)存儲在一個 arm_cfft_radix4_instance_f32結(jié)構(gòu)體指針S里面。

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

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

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

主函數(shù)

int main(void)

{

arm_cfft_radix4_instance_f32 scfft;

float time;

u8 buf[50];

u16 i;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2

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

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

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

arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft結(jié)構(gòu)體,設(shè)定FFT相關(guān)參數(shù)

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);//重設(shè)TIM3定時器的計數(shù)器值

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);

}

}

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


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19852

    瀏覽量

    234196
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    556

    文章

    8153

    瀏覽量

    356295
  • MPU
    MPU
    +關(guān)注

    關(guān)注

    0

    文章

    410

    瀏覽量

    49787
  • 浮點運算
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    11328

原文標(biāo)題:MCU微課堂|CKS32F4xx系列DSP功能

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CKS32F4xx系列ETH通信詳解

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

    CKS32F4xx系列I2S功能介紹

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

    CKS32F4xx系列產(chǎn)品串口DMA傳輸

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

    CKS32F4xx系列RNG功能設(shè)置

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

    CKS32F4xx系列DAC功能

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

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

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

    CKS32F4xx系列ADC單通道電壓采集

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

    CKS32F4xx系列低功耗模式STANDBY模式

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

    CKS32F4xx系列低功耗模式SLEEP模式

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

    CKS32F4xx系列低功耗模式STOP模式

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

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-比較輸出

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

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時操作

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

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信

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

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置

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

    CKS32F4xx系列FSMC功能簡介

    本課講為大家講解CKS32F4xx系列產(chǎn)品的FSMC應(yīng)用實例,F(xiàn)SMC全稱是Flexible Static Memory Controller,讀作靈活的靜態(tài)存儲控制器,顧名思義,MCU可以通過FSMC擴展靜態(tài)內(nèi)存
    的頭像 發(fā)表于 04-14 15:06 ?1451次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC<b class='flag-5'>功能</b>簡介