本人对FIR滤波是小白一个,现求一个完整的STM32运算FIR滤波程序
信号来源:
1)AD数据16-24位,精度要求较高,需要采用浮点数运算;
2)AD速率10~500次/秒;
输出要求:
1)输出速率跟随输入同步变化,输入一个新数据,经过滤波输出一个同步数据(时间上因滤波肯定滞后,这个正常,无须理会);
2)输出滤波深度可设置(FIR滤波好像是叫滤波阶数);
代码要求:STM32工程,使用ST的外设库,但是FIR滤波代码,特别是输入输出部分要带详细中文注释,方便实际调用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个不难的
这个目录下没有你想要的?
arm_fir_xxx.c
500次采样的话,才2ms,直接硬算都行吧···
这是我以前在电脑上写的,没试过STM32里行不···
- #define FIRSTAGE 10
- float firbuf[FIRSTAGE];
- float datbuf[FIRSTAGE];
- int curpos;
- void Init(float *initfir)
- {
- u8 i;
- for(i=0;i<FIRSTAGE;i++)
- {
- firbuf[i]=initfir[i];
- datbuf[i]=0;
- }
- curpos=0;
- }
- float AddDat(float newdat)
- {
- float ret=0;
- u8 i=curpos;
- u8 j=0;
-
- datbuf[curpos]=newdat;
- do
- {
- ret+=datbuf[i]*firbuf[j];
- i--;
- j++;
- if(i==0xff)
- {
- i=FIRSTAGE-1;
- }
- }while(i!=curpos);
- curpos++;
- if(curpos==FIRSTAGE)
- {
- curpos=0;
- }
- return ret;
- }
复制代码一周热门 更多>