当前位置:网站首页>【嵌入式】Cortex M4F DSP库
【嵌入式】Cortex M4F DSP库
2022-07-06 08:40:00 【好奇宝宝·权】
使用CM4内核自带的FPU需要在编译的时候添加编译选项:--cpu Cortex-M4.fp,以使能FPU指令集,否则使用的是普通Thumb2指令实现的DSP函数。同时还需添加宏定义:ARM_MATH_CM4,这在CMSIS DSP Library的arm_math.h里面用到。CMSIS DSP Library可以在ARM的官网找到:https://developer.arm.com/tools-and-software/embedded/cmsishttps://developer.arm.com/tools-and-software/embedded/cmsis
如果使用MDK的话,直接在Runtime Environment管理器里面添加DSP库,Floating Point Hardware选择Single Precision,预定义宏加上ARM_MATH_CM4,这样工程自动添加了DSP库:
上面那个库是使用FPU指令集生成的DSP库,下面的是没有使用FPU指令集......
DSP库测试:
static float sin_out[256];
static float fft_mag[256];
static float fft_out[256];
static void DSP_Test()
{
#define FFT_LENGTH 256
arm_rfft_fast_instance_f32 S;
// 创建一个t=2S钟之内的采样数据,采样点数FFT_LENGTH,采样周期T=t/FFT_LENGTH,采样频率F=1/T
for(uint16_t i = 0; i < FFT_LENGTH; i++)
{
sin_out[i] = arm_sin_f32(i*2*3.1416f/128) + 0.3f*arm_sin_f32(i*2*3.1416f/16); //
}
for(uint16_t i = 0; i < FFT_LENGTH; i++)
{
LOGI("%.4f\r\n",sin_out[i]);
DDL_DelayUS(1000);
}
arm_rfft_fast_init_f32(&S, FFT_LENGTH); //初始化1024点FFT参数
arm_rfft_fast_f32(&S,sin_out,fft_out,0); //计算FFT
arm_cmplx_mag_f32(fft_out,fft_mag, FFT_LENGTH); //计算模值
for(uint16_t i = 0; i < FFT_LENGTH / 2; i++)
{
LOGI("%4d %4.4f %4.4f\r\n", i, (float)i * 128 / FFT_LENGTH, fft_mag[i]);//frequency = N * sample frequency / FFT length
DDL_DelayUS(1000);
}
}
结果在Excel上画图,采样点图像(1Hz正弦波和8Hz正弦波叠加):
FFT计算结果:
两个波峰分别对应1Hz和8Hz,和采样点的频率一致。
边栏推荐
- 个人电脑好用必备软件(使用过)
- 2022.02.13 - NC004. Print number of loops
- 角色动画(Character Animation)的现状与趋势
- LDAP應用篇(4)Jenkins接入
- POI add write excel file
- Roguelike游戏成破解重灾区,如何破局?
- Research Report on supply and demand and development prospects of China's high purity aluminum market (2022 Edition)
- sys. argv
- How to conduct interface test? What are the precautions? Nanny level interpretation
- The network model established by torch is displayed by torch viz
猜你喜欢
Charging interface docking tutorial of enterprise and micro service provider platform
704 binary search
egg. JS project deployment online server
[MySQL] lock
marathon-envs项目环境配置(强化学习模仿参考动作)
广州推进儿童友好城市建设,将探索学校周边200米设安全区域
Delay initialization and sealing classes
个人电脑好用必备软件(使用过)
Crash problem of Chrome browser
After PCD is converted to ply, it cannot be opened in meshlab, prompting error details: ignored EOF
随机推荐
Synchronized solves problems caused by sharing
[luatos-air551g] 6.2 repair: restart caused by line drawing
VMware virtualization cluster
堆排序详解
How to conduct interface test? What are the precautions? Nanny level interpretation
PLT in Matplotlib tight_ layout()
ROS compilation calls the third-party dynamic library (xxx.so)
Precise query of tree tree
sublime text中conda环境中plt.show无法弹出显示图片的问题
JS pure function
pytorch训练好的模型在加载和保存过程中的问题
JS inheritance method
Research Report on Market Research and investment strategy of microcrystalline graphite materials in China (2022 Edition)
个人电脑好用必备软件(使用过)
Deep analysis of C language data storage in memory
软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
深度剖析C语言数据在内存中的存储
Beijing invitation media
JVM quick start
企微服务商平台收费接口对接教程