0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【英飞凌PSoC 6 RTT开发板试用】语音识别之一:移植CMSIS-DSP库-FFT测试

嵌入式USB开发 来源:嵌入式USB开发 作者:嵌入式USB开发 2023-07-11 00:10 次阅读

一. 前言

后面会基于本开发板实现语音识别,需要使用到FFT等关键算法,所以先移植CMSIS-DSP库,并进行FFT的测试。

移植DSP算法库

添加代码

git clone https://github.com/ARM-software/CMSIS_5.git

CMSIS_5\\CMSIS\\DSP下是相关文件,Source下是源码

image.png

将DSP文件夹复制到自己的工程目录中,只保留

Include,PrivateInclude,Source三个文件夹

image.png

image.png

Source下的每个子文件夹都是一类算法,里面的每个c都对应一个计算函数,并且有一个总文件包括其中所有的单个.c,比如BasicMathFunctions.c中

image.png

删除这些总的.c,避免编译重复

删除以下文件和所有的非.c和.h文件

BasicMathFunctions:BasicMathFunctions.c,BasicMathFunctionsF16.c

BayesFunctions:BayesFunctions.c,BayesFunctionsF16.c

CommonTables:CommonTables.c,CommonTablesF16.c

ComplexMathFunctions:ComplexMathFunctions.c,ComplexMathFunctionsF16.c

ControllerFunctions:ControllerFunctions.c

DistanceFunctions:DistanceFunctions.c,DistanceFunctionsF16.c

FastMathFunctions:FastMathFunctions.c,FastMathFunctionsF16.c

FilteringFunctions:FilteringFunctions.c,FilteringFunctionsF16.c

InterpolationFunctions:InterpolationFunctions.c,InterpolationFunctionsF16.c

MatrixFunctions:MatrixFunctions.c,MatrixFunctionsF16.c

QuaternionMathFunctions:QuaternionMathFunctions.c

StatisticsFunctions:StatisticsFunctions.c,StatisticsFunctionsF16.c

SupportFunctions:SupportFunctions.c,SupportFunctionsF16.c

SVMFunctions:SVMFunctions.c,SVMFunctionsF16.c

TransformFunctions:TransformFunctions.c,TransformFunctionsF16.c,arm_bitreversal2.S

image.png

工程设置添加相关头文件包含路径

测试

复制CMSIS_5\\CMSIS\\DSP\\Examples\\ARM\\arm_fft_bin_example下的arm_fft_bin_data.c和arm_fft_bin_example_f32.c到自己的工程目录

arm_fft_bin_example_f32.c下的

int32_t main(void)改为int32_t ffttest_main(void)

并添加#define SEMIHOSTING以使能printf打印,我们已经重定向实现了printf打印到串口。

由于 arm_cfft_f32(&varInstCfftF32, testInput_f32_10khz, ifftFlag, doBitReverse);会修改testInput_f32_10khz的内容,所以添加一个缓存,以便能重复测试

float32_t testtmp_f32_10khz[2048];
  /* Process the data through the CFFT/CIFFT module */
  memcpy(testtmp_f32_10khz,testInput_f32_10khz,sizeof(testInput_f32_10khz));
  arm_cfft_f32(&varInstCfftF32, testtmp_f32_10khz, ifftFlag, doBitReverse);

  /* Process the data through the Complex Magnitude Module for
  calculating the magnitude at each bin */
  arm_cmplx_mag_f32(testtmp_f32_10khz, testOutput, fftSize);

在自己的main函数中申明并调用

int32_t ffttest_main(void);

    ffttest_main();

编译运行可以看到串口打印SUCCESS说明测试OK。

将输入输出数据打印

printf("SUCCESS\\\\\\\\n");
    for(int i=0; i  TEST_LENGTH_SAMPLES; i++)
    {
    	if(i  TEST_LENGTH_SAMPLES/2)
    	{
            printf("/*%f,%f*/\\\\\\\\r\\\\\\\\n", testInput_f32_10khz[i],testOutput[i]);
    	}
    	else
    	{
            printf("/*%f,%f*/\\\\\\\\r\\\\\\\\n", testInput_f32_10khz[i],0.0);
    	}

    }

使用serialstudio可视化显示,可以看到计算结果FFT频率明显的峰值

image.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英飞凌
    +关注

    关注

    66

    文章

    2147

    浏览量

    138351
  • dsp
    dsp
    +关注

    关注

    552

    文章

    7961

    浏览量

    348135
  • PSoC
    +关注

    关注

    12

    文章

    170

    浏览量

    91785
  • 语音识别
    +关注

    关注

    38

    文章

    1719

    浏览量

    112523
  • 开发板
    +关注

    关注

    25

    文章

    4928

    浏览量

    97143
  • RTT
    RTT
    +关注

    关注

    0

    文章

    65

    浏览量

    17079
收藏 人收藏

    评论

    相关推荐

    英飞凌PSoC 6 RTT开发板试用】信号处理前端之滤波

    CMSIS-DSP提供直接I型IIR支持Q7,Q15,Q31和浮点四种数据类型。其中Q15和Q31提供了快速版本。
    的头像 发表于 07-14 00:09 3494次阅读
    【<b class='flag-5'>英飞凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b><b class='flag-5'>开发板</b><b class='flag-5'>试用</b>】信号处理前端之滤波

    英飞凌PSoC 6】新建RTT工程

    介绍英飞凌PSoC 6 RTT开发板环境创建
    的头像 发表于 04-24 15:29 1878次阅读
    【<b class='flag-5'>英飞凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b>】新建<b class='flag-5'>RTT</b>工程

    如何使用CMSIS-DSP进行FFT运算

    、开启FPU功能点这个麻将牌四筒,展开CMSIS,把DSP勾了。点开后然后点这个锤子No Auto Includes的勾不要打,让它自动include,因为CMSIS-DSP
    发表于 12-06 08:24

    如何将CMSIS-DSP加载到基于LPC55S69的工程中?

    的 Powerquad 示例:&#039; 但是如果客户想要使用CMSIS-DSP实现基于Cortex-CM33的DSP功能,而不是Powerquad模块,客户不能导入SDK示例,他必须新建
    发表于 04-06 08:40

    【新品发布】英飞凌PSoC 6 RTT物联网开发板内容详解

    4月12日,英飞凌联合 RT-Thread 发布PSoC™ 62 with CAPSENSE™ evaluation kit开发板 (以下简称PSoC
    发表于 04-13 13:46

    【新品试用英飞凌PSoC 6 RTT开发板试用活动

    概述、软件调试、硬件接入、视频演示,不少于500字+2张图片。 2)报告形式:标题格式 【评测活动标题+自拟标题】示例: 【英飞凌PSoC 6 RTT
    发表于 04-13 15:26

    英飞凌PSoC 6 RTT开发板试用】+开箱测试

    英飞凌PSoC 6 RTT开发板试用】+开箱测试
    发表于 06-05 01:06

    如何使用Arm CMSIS-DSP实现经典机器学习

    的使用CMSIS-DSP开源中的其他技术。 CMSIS-DSP是Arm针对各种Arm优化的丰富的DSP函数集合Cortex-M处理器,如
    发表于 08-02 07:12

    使用CMSIS-DSP和Keil RTX5开发模拟输入信号的数字滤波器

    本申请说明描述了使用CMSIS-DSP和Keil RTX5开发模拟输入信号的数字滤波器。该应用程序是为NXP LPC1768设备设计的,可以使用µVision模拟功能进行测试。事件记
    发表于 09-04 06:26

    MQX CMSIS-DSP算法应用

    MQX CMSIS-DSP算法应用
    发表于 09-29 16:47 20次下载
    MQX <b class='flag-5'>CMSIS-DSP</b>算法应用

    基于MQX CMSIS-DSP算法应用

    基于MQX CMSIS-DSP算法应用
    发表于 10-09 08:56 11次下载
    基于MQX <b class='flag-5'>CMSIS-DSP</b>算法应用

    HT32 CMSIS-DSP Library使用指南

    HT32 CMSIS-DSP Library使用指南
    发表于 06-26 10:19 4次下载
    HT32 <b class='flag-5'>CMSIS-DSP</b> Library使用指南

    英飞凌联合 RT-Thread 发布 PSoC™ 62 with CAPSENSE ™ evaluation kit开发板

    近日,RT-Thread 社区团队打造了新品开发板英飞凌联合 RT-Thread 发布  PSoC 62 with CAPSENSE evaluation kit开发板 (以下简称
    的头像 发表于 04-13 01:35 1789次阅读

    英飞凌开发板模块评测任务大挑战-SPI驱动测试

    使用PSoC™ 62 with CAPSENSE™ evaluation kit开发板适配的RTT SPI驱动,做显示测试
    发表于 08-10 15:44 675次阅读
    <b class='flag-5'>英飞凌</b><b class='flag-5'>开发板</b>模块评测任务大挑战-SPI驱动<b class='flag-5'>测试</b>

    玩转PSoC 6 RTT积木式开发套件,实现毫米波雷达等实用功能

    Jenson起玩转这款灵活易用、玩法多样的MCU套件吧!PSoC6RTT开发板款供广大开发者在评估和
    的头像 发表于 03-20 08:35 855次阅读
    玩转<b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b>积木式<b class='flag-5'>开发</b>套件,实现毫米波雷达等实用功能