TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP432使用CMSIS函数库,arm_fir_q15函数,在使用该函数滤波时,为什么结果就是输入信号?有人用过该函数吗??可以指点一下吗

MSP432使用CMSIS函数库,arm_fir_q15函数,在使用该函数滤波器是,为什么结果就是输入信号?有人用过该函数吗??可以指点一下吗?

以下是我的是代码:

/* DriverLib Includes */
#include "driverlib.h"

/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
#include "arm_math.h"
#include "arm_const_structs.h"

#define TEST_LENGTH_SAMPLES 320 /* 采样点数 */
#define BLOCK_SIZE 320 /* 调用一次arm_fir_f32处理的采样点个数 */
#define NUM_TAPS 28 /* 滤波器系数个数 */

uint32_t blockSize = BLOCK_SIZE;
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; /* 需要调用arm_fir_f32的次数 */

static int16_t testInput_q15_50Hz_200Hz[TEST_LENGTH_SAMPLES]={0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40,0,40,38,7,0,32,61,45,0,-21,0,21,0,-45,-61,-32,0,-7,-38,-40}; /* 采样点 */
static int16_t testOutput[TEST_LENGTH_SAMPLES]; /* 滤波后的输出 */
static int16_t firStateF32[BLOCK_SIZE + NUM_TAPS -1]; /* 状态缓存,大小numTaps + blockSize – 1*/

/* 低通滤波器系数 通过fadtool获取*/
int16_t firCoeffs32LP[NUM_TAPS] = {0,0,0,1,1,1,-1,-3,-5,-3,4,14,24,31,31,24,14,4,-3,-5,-3,-1,1,1,1,0,0,0};

//int16_t firCoeffs32LP[NUM_TAPS]={0,0,0,0,0,0,0,-3,-5,-3,4,14,24,31,31,24,14,4,-3,-5,-3,-1,1,1,1,0,0,0};
/*
*********************************************************************************************************
* 函 数 名: arm_fir_f32_lp
* 功能说明: 调用函数arm_fir_f32_lp实现低通滤波器
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void arm_fir_q15_lp(void)
{
arm_fir_instance_q15 S;

/* 初始化结构体S */
arm_fir_init_q15(&S,NUM_TAPS, &firCoeffs32LP, &firStateF32, blockSize);

/* 实现FIR滤波 */
arm_fir_q15(&S,&testInput_q15_50Hz_200Hz,&testOutput, blockSize);
}

void main(void)
{
/* Stop Watchdog */
MAP_WDT_A_holdTimer();
arm_fir_q15_lp();
while(1);
}

对频率为50Hz和200Hz的正弦信号做低通滤波,fs=1000Hz,fc=125Hz。

输出结果就是不对,没有起到滤波作用。

灰小子:

没看出为什么。汗("^V^)

推荐使用针对ti的msp系列优化过的数学库

www.ti.com.cn/…/MSP-IQMATHLIB

Susan Yang:

建议您先读一下 DSP的 CMSIS Library内的相关说明,会有助于您理解arm_fir_q15

arm-software.github.io/…/group__FIRLPF.html

赞(0)
未经允许不得转载:TI中文支持网 » MSP432使用CMSIS函数库,arm_fir_q15函数,在使用该函数滤波时,为什么结果就是输入信号?有人用过该函数吗??可以指点一下吗
分享到: 更多 (0)