TI论坛
直播中

kasdlak

9年用户 1309经验值
擅长:光电显示
私信 关注
[问答]

想利用msp430进行数位滤波的动作,怎么实现?


  • 我已成功利用msp430从ads1292r读取到正确的心电与呼吸讯号,
    接下来想要再利用msp430进行数位滤波的动作。

    因为我有买ti的ads1292r开发板
    所以有看到韧体原始码,包括数位滤波的部份;
    本来想直接套用的(包括FIR係数),
    但我所设计的取样频率为125SPS,而该原始码只针对500SPS进行滤波,
    所以无法直接利用。

    后来我利用matlab的FDATool直接生成整数係数来使用,
    模拟结果发现滤波效果是有的,但振幅加大非常多,
    也就是没办法拿来使用;
    只有小数係数的滤波与振幅都正常,唯小数无法被mcu所用。

    想请教是否有工具可以设计FIR的整数係数的?
    或是有什麽解决方法?
    感谢!

回帖(2)

崔丽

2025-2-7 09:33:58
 1. 500SPS滤波后,4倍抽取,用FDAtool做一个抽取滤波器出来,是否可行?
2. FDATool综合出来的所谓“整数系数”,应该是带“小数”部分的吧?就是用整数去表示小数部分,实际还是有小数的。如果振幅增大很多,我怀疑可能你把滤波器的系数处理错了。举个例子,滤波器系数是1234,那搞不好实际代表的是12.34,但是你在MCU里认为1234是个整数,直接按照整数处理,结果最终输出可能会大100倍。你可以检查一下你的算法,是不是有类似的问题。
举报

张华

2025-2-7 16:49:43
根据您的需求,您需要为MSP430设计一个适用于125SPS采样频率的FIR滤波器。以下是一些建议和步骤,帮助您实现这个目标:

1. 选择合适的滤波器设计工具:您提到已经使用MATLAB的FDATool生成了FIR滤波器的系数。这是一个非常好的选择,因为它可以帮助您设计和验证滤波器的性能。您可以尝试使用其他工具,如Python的SciPy库,它也提供了FIR滤波器设计的功能。

2. 设计FIR滤波器:使用您选择的工具,设计一个适用于125SPS采样频率的FIR滤波器。您需要确定滤波器的阶数、截止频率和其他参数。这些参数将影响滤波器的性能,例如滤波效果和振幅变化。

3. 将浮点系数转换为整数系数:由于MSP430不支持浮点运算,您需要将FIR滤波器的浮点系数转换为整数系数。这可以通过乘以一个适当的缩放因子来实现。例如,如果您的浮点系数范围在-1到1之间,您可以将它们乘以2^15(32768),然后将结果四舍五入到最近的整数。这样,您的整数系数范围将在-32768到32767之间。

4. 实现FIR滤波器:将整数系数导入到您的MSP430代码中,并实现FIR滤波器。您可以使用循环来实现FIR滤波器,例如:

```c
int filter_output = 0;
for (int i = 0; i < filter_order; i++) {
    filter_output += input_samples[i] * filter_coefficients[i];
}
```

5. 测试和验证:在MSP430上运行您的代码,并测试FIR滤波器的性能。您可以通过比较滤波前后的信号来验证滤波效果和振幅变化。如果需要,您可以调整滤波器参数以获得更好的性能。

总之,您可以通过选择合适的滤波器设计工具、设计适用于125SPS采样频率的FIR滤波器、将浮点系数转换为整数系数,并在MSP430上实现FIR滤波器来实现数位滤波。希望这些建议对您有所帮助!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分