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

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

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

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

举报

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

采样率是1.8M,就是想做一个低通数字滤波
疯de_恒 回答时间: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
楼主,能请教你一些问题吗
zxcasdqwe1121 回答时间:2020-11-3 17:10:45
楼主,我也想用stm32f7对ad采集后的信号滤波后做fft,请问可以把源程序发我借鉴一下吗

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版