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

审核编辑:汤梓红

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

    关注

    65

    文章

    1903

    浏览量

    136909
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7682

    浏览量

    344361
  • PSoC
    +关注

    关注

    12

    文章

    167

    浏览量

    91110
  • 语音识别
    +关注

    关注

    37

    文章

    1635

    浏览量

    111833
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93991
  • RTT
    RTT
    +关注

    关注

    0

    文章

    63

    浏览量

    16881
收藏 人收藏

    评论

    相关推荐

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

    CMSIS-DSP提供直接I型IIR库支持Q7,Q15,Q31和浮点四种数据类型。其中Q15和Q31提供了快速版本。
    的头像 发表于 07-14 00:09 1659次阅读
    【<b class='flag-5'>英飞凌</b><b class='flag-5'>PSoC</b> 6 <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 1456次阅读
    【<b class='flag-5'>英飞凌</b><b class='flag-5'>PSoC</b> 6】新建<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

    求分享LPC55S69 EVK的预编译CMSIS-DSP

    为了比较 CM33 和 PowerQuad 之间的数学处理性能, 我正在寻找 CMSIS-DSP 预编译文件 (.a) 可用于 LPC55S69EVK 的 MCUXpresso, 但我无法在任
    发表于 04-06 08:21

    【新品发布】英飞凌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开发板试用

    单周期乘法和MPU,可以充分发挥 PSoC6 双核芯片性能。 该开发板核心 板载资源 如下: MCU:CY8C624ABZI-S2D44,Cortex-M4主频 150MHz,Cortex-M0主频
    发表于 05-30 20:47

    英飞凌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 2次下载
    HT32 <b class='flag-5'>CMSIS-DSP</b> Library使用指南

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

    本期英飞凌手工课,将由来自英飞凌的工程师Jenson给大家带来PSoC62withCAPSENSEevaluationkit(下称PSoC6RTT
    的头像 发表于 03-20 08:35 237次阅读
    玩转<b class='flag-5'>PSoC</b> 6 <b class='flag-5'>RTT</b>积木式<b class='flag-5'>开发</b>套件,实现毫米波雷达等实用功能