当前位置: 首页 > news >正文

STM32自带的DSP库的滤波初体验(一)

最近在弄STM32自带的DSP库里的滤波,记录一下:

arm_fir_instance_q15  instance_q15_S;
#define NUM_TAPS 			16				//滤波系数的个数
#define BLOCK_SIZE		32
q15_t firStateF32[BLOCK_SIZE + NUM_TAPS];
q15_t Fir_Coeff[NUM_TAPS] = {-79, -136, 312, 654, -1244, -2280, 4501, 14655, 14655, 4501, -2280, -1244, 654, 312, -136, -79};
q15_t firStateF32[BLOCK_SIZE + NUM_TAPS];//1、初始化S    
arm_fir_init_q15(&instance_q15_S,NUM_TAPS,(q15_t*)&Fir_Coeff[0],&firStateF32[0],BLOCK_SIZE);//2、用三角函数生成一个数组,
for (i = 0; i < SAMPLE_NUMBER; i++)
{f = 0.5 * arm_cos_f32(2 * 3.1415926f * 50 * i / SAMPLE_NUMBER) + 0.5 * arm_cos_f32(2 * 3.1415926f * 6000 * i / SAMPLE_NUMBER);arm_float_to_q15(&f, &testInput[i], 1); //f * 32768
}//3、滤波
for (i = 0; i < SAMPLE_NUMBER / BLOCK_SIZE; i++)
{arm_fir_q15(&instance_q15_S,   testInput + (i * BLOCK_SIZE),   testInput + (i * BLOCK_SIZE),  BLOCK_SIZE);
}

        整个滤波的过程比较简单,先是调用arm_fir_init_q15函数来初始化instance_q15_S,然后用三角函数生成一个50Hz+6000Hz的正弦数组,放在testInput数组中,最后调用arm_fir_q15函数来滤波。

        这个里面需要注意的是,滤波系数的个数,也就是NUM_TAPS必须是偶数。这个翻了些文档,都没讲,若是奇数的话一运行就进HARDFAULT。打开arm_fir_init_q15这个函数的原型,里面讲到了参数的设置。

下面是函数的路径:

用软件打开可以看到

    还有就是firStateF32这个数组,它的大小numTaps+blockSize,不要减一,因为我用的STM32F407的芯片,减一的话也会进hardfault。

 这里可以看到,内核是M4的话,数组大小是numTaps+blockSize;内核是M3的话,数组大小是numTaps+blockSize-1。

 

http://www.lryc.cn/news/122446.html

相关文章:

  • go kratos protobuf 接收动态JSON数据
  • Python学习笔记第五十四天(Pandas DataFrame)
  • Docker镜像查看下载删除镜像文件的相关命令
  • 1. VisionOS平台介绍
  • 【C#】设置有线网卡IP地址,子网掩码,网关,DNS
  • LVS-DR集群及NGINX负载均衡
  • React如何配置env环境变量
  • VR全景智慧文旅,用科技助力旅游业振兴
  • 系统架构设计专业技能 · 系统安全分析与设计(四)【加解密、数字信封、信息摘要、数字签名、数字书证、网络安全、信息安全】
  • 基于WebSocket的在线文字聊天室
  • VS Code中C++程序的调试(Debug)功能
  • C#四个字节十六进制与单精度浮点数互转
  • Springloc和aop的基础概念
  • 算法练习Day43|● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
  • 人类:我觉得1+1=956446,你觉得呢?大模型:啊对对对
  • Offset Explorer
  • 查看CentOS版本及系统位数与设置CentOS 7.9 2009 防火墙配置放开端口的命令与过程
  • 前端css高级
  • 华为OD真题--字符串中最小的整数和--带答案
  • 9月30日生效:微软官方服务协议更新,防止人工智能进行逆向工程
  • HarmonyOS教育类APP项目实战系列课结课考试答案(1-10讲)80分就合格
  • 为什么要学习Oracle技术?
  • ffmpeg+intel核显实现硬解码
  • 电脑开机出现Boot Device怎么办?
  • 面试题. 一次编辑
  • Unity悬浮显示提示内容
  • 变形金刚在图像识别方面比CNN更好吗?
  • 【Javascript】ES6新增之类的认识
  • C#随机法 双峰函数 求极值 避免落入局部最优解
  • JavaScript高级:常见设计模式