完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、需要工具
1. 一方面下载一个STM32的内核板(这里我用的野火的stm32f429igt6核心板) 2.matlab 二、测试步骤 1.移植ST官方DSP库 (1)首先在官网上DSP库(这里是f4的DSP库,f1的有点不一样,f1移植的时候可以参考富莱的DSP教程) 下不下来就用我这个版本的(可能不是最新版的) (2) 首先要带着库模板,然后将下面两个文件复制到工程的库(也放放库的文件下,实际上什么时候放都没有提到,只要编译器能找到就行) 这两个文件在下载的ST官方DSP库文件里面: 然后在中 最终效果图: 然后像工程一直保持蓝色一直使用Single Precision(这样有一点坏处就是所有的小数与小数之间)的智力编译器默认会变成双型,所以在精确要求不高的前提下,在小数加一个,这样就不会出现警告) 然后添加头路径 在定义添加:__FPU_PRESENT=1,__TARGET_FPU_VFP ,ARM_MATH_CM4,__CC_ARM 最后再包含#include “arm_math.h” 然后测试一下是否可以用 可以清晰的看到当打下臂时,出现了DSP库里面的函数,然后通知移植成功 2.用matlab设计低通软件 (1)这里将演示如何使用DSP库,采样频率设计成45K,到最后频率为6K,并用matlab生成1K与15K的正弦波数据,将可以用数据1excel中并形成表 可见K的正弦波中夹杂着15K的谐波 (2)matlab的fdatool工具设计 设计设计后:电机Targets,然后生成C头, 然后将生成文件的数据复制到工程的数组里面(这里用的ST官方示例程序完成) 注意:这里的工程是移植完成DSP库的工程,没有移植这些模块函数是无法使用的 3.工程代码(只贴了一部分): #define TEST_LENGTH_SAMPLES 320 #define BLOCK_SIZE 32 #define NUM_TAPS 29 /* -------------------- ----------------------------------------------- * 输入信号和参考输出(用 MATLAB 计算) * 在 arm_fir_lpf_data.c 中外部定义。 * ------------------------------------------------- ------------------ */ extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]; /* ------------------------------------------------ ----------- * 声明测试输出缓冲区 * ------------------------- ------------------------------------------ */ 静态 float32_t testOutput[TEST_LENGTH_SAMPLES] ; /* ------------------------------------------------ ------------------- * 声明大小为 (numTaps + blockSize - 1) 的状态缓冲区 * ----------------- -------------------------------------------------- */ 静态 float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; /* ------------------------------------------------ --------------- ** FIR 系数缓冲区使用 fir1() MATLAB 函数生成。 ** fir1(28, 6/24) ** --------------------------------- ----------------------------- */ const float32_t firCoeffs32[NUM_TAPS] = { -0.001355670276,-0.002235466149,-0.001963305054, 0.001088276156, 0.00700009428, 0.01148389559,0.007103286684,-0.01001676917,-0.03250513598,-0.04089481756, -0.01371958014,0.05627118424,0.1515145153,0.2345061451,0.2674467266, 0.2345061451,0.1515145153,0.05627118424,-0.01371958014,-0.04089481756, -0.03250513598,-0.01001676917,0.007103286684,0.01148389559,0.00700009428, 0.001088276156,-0.001963305054,-0.002235466149,-0.001355670276 }; /* ------------------------------------------------ ------------------ * FIR LPF 示例的全局变量 * ------------------------ ------------------------------------------- */ uint32_t blockSize = BLOCK_SIZE; uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; float32_t snr; /* ------------------------------------------------ ---------------------- * FIR LPF 示例 * ----------------------- ---------------------------------------------------- */ int32_t main(void ) { uint32_t i; 浮动最小值,最大值; arm_fir_instance_f32 S; // arm_status 状态; float32_t *inputF32, *outputF32; /* 初始化输入和输出缓冲区指针 */ inputF32 = &testInput_f32_1kHz_15kHz[0]; outputF32 = &testOutput[0]; /* 调用FIR init函数初始化实例结构。*/ arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize); Debug_USART_Config(); /* ------------------------------------------------ -------------- ** 为每个 blockSize 样本调用 FIR 处理函数 ** --------------- -------------------------------------------------- -- */ for(i=0; i 《 numBlocks; i++) { arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize); } for(i=0;i《TEST_LENGTH_SAMPLES;i++) { printf(“%frn”,testOutput ); } 通过串口打印出来的数据在excel中表格描点绘制出来 而且是可以清楚看到一个周期45个点,只剩下1K的正弦波(瑕疵是几个点必须舍去) 三、同样方法得到的案例 下面是用100K的采样频率输出的信号,1K的信号表面夹杂高次谐波 通过增加的阶数,降低后的信号为 遗憾,很可能造成信号的损失 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1750 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1608 浏览 1 评论
1049 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1665 浏览 2 评论
1924浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
709浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
559浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:08 , Processed in 0.919094 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号