你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何提高ADC采集信号后做数字滤波的速度

[复制链接]
思行一 提问时间:2018-3-16 16:15 /
本帖最后由 思行一 于 2018-3-19 14:15 编辑

       我现在使用的芯片是STM32F746,遇到的问题是我ADC采集到信号后要做一次FFT,但是我想在加窗之后,做FFT之前加一个数字滤波,由于我的数据量有点大,又希望能尽量的快,而我自己写的滤波函数无法达到要求。
       所以我想请教下,ST是否有成熟的数字滤波的库函数可以直接调用?
收藏 评论7 发布时间:2018-3-16 16:15

举报

7个回答
す疯Ⅱ恒す 回答时间:2018-3-16 18:03:36
请问你想怎么样滤波?你现在的ADC采样速率是多少?间隔多久?或者是一直全速采集?
思行一 回答时间:2018-3-17 10:46:28
す疯Ⅱ恒す 发表于 2018-3-16 18:03
请问你想怎么样滤波?你现在的ADC采样速率是多少?间隔多久?或者是一直全速采集? ...

采样率是1.8M,就是想做一个低通数字滤波
す疯Ⅱ恒す 回答时间:2018-3-17 11:02:38
思行一 发表于 2018-3-17 10:46
采样率是1.8M,就是想做一个低通数字滤波

直接软件计算不就得了。
比如你是一直以1.8M速度采集不停,可以设置DMA保存ADC数据,比如设置DMA的缓冲为100,开传输过半中断,即采集了50个数据之后进入中断,逐个处理滤波,同时不影响后50个数据的采集与保存。然后全部传输完了之后再滤波处理一下后50个数据。
保证所有的数据流并行走,用F7应该是来得及的。注意优化一下计算,移位代替除法提高速度。

评分

参与人数 2ST金币 +2 蝴蝶豆 +3 收起 理由
思行一 + 2 赞一个!
zero99 + 3

查看全部评分

思行一 回答时间:2018-3-17 14:12:14
す疯Ⅱ恒す 发表于 2018-3-17 11:02
直接软件计算不就得了。
比如你是一直以1.8M速度采集不停,可以设置DMA保存ADC数据,比如设置DMA的缓冲为 ...

嗯,我这个有点特别啊,是ADC要一步采64个点的数据,然后对这64个数据进行去直流加窗滤波做FFT,中间是不能断的,需要连续的。目前使用的是DSP库里面的FIR滤波函数,开了优化先验证下。
思行一 回答时间:2018-3-19 14:09:28
经过两天的测试,使用DSP库里面的FIR滤波稍好一点,但是对于简单的低通滤波,建议自己将滤波系数分开采用移位和加法来进行计算,这样比DSP库的还要快一点。over
思行一 回答时间:2018-3-19 14:15:26
问题将将就就就这样吧,结贴吧。
ruanbing 回答时间:2018-7-30 16:51:19
楼主,能请教你一些问题吗

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版