关于STM32AD采样后进行FFT计算的问题

2019-07-14 23:15发布

我有一个频率为20k的信号,要得到它的频谱。主要思路就是:先进行AD转换,采样率设为50khz,然后进行FFT运算,如果我计算1024点的FFT,那么是不是从1s中测得的50k个点中找出1024个点进行FFT运算?如果是这样的话,从50k个点中选取1024个,概率也太小了,肯定影响计算机过吧?不知道我理解的FFT是不是这个意思,哪位大侠知道的话帮我分析分析,感激不尽。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
ccking
1楼-- · 2019-07-15 08:39
对于楼主这个信号频率,(在对运算时间要求不高的条件下)fft的点数尽可能的多吧,比如做2048或者4096,然后等分取点每隔20点取一个或者50点取一个,尽量减少误差吧,我最近做的是一个低频信号的fft,2hz左右,用的20hz来采集的,取了512点,还原信号频率还不错
123456lll123
2楼-- · 2019-07-15 10:50
 精彩回答 2  元偷偷看……
ccking
3楼-- · 2019-07-15 12:33
不知道问题解决没有,思路就是你说的这样,但是要注意的是,这样处理完之后,fft计算信号频率时,你的fs已经不是50khz了,应该除以你的等分值,我觉得是这样,我也是刚刚学习的菜鸟,共同进步吧
光电飞月
4楼-- · 2019-07-15 13:31
请问楼主搞定没,用stm32f103做进行fft计算要怎么搞,需要引用浮点库库吗
bowenduosi
5楼-- · 2019-07-15 13:35
aa9527 发表于 2014-12-4 19:55
根据香农定律,采样两倍。也就是说,你想采集到20kHz的频率,就要有超过40kHz的采样速度。同时计算FFT,其实是对某一段波形进行分析。假设你是以40kHz采样频率,最低需要采集50Hz的数据,那么你就采集时长为20ms的数据,20ms里以40kHz采集了多少点,就用这么多个点来分析,在按照事先算好的频率间距,就可以知道每个点分析 ...

你好,请问你有stm32的fft的代码吗,想参考学习学习。那如果用锁相倍频电路,每个周期采样256个点,即50Hz采样点为50x256,这和你所说的香农定律是一样的吗
andy_wsj
6楼-- · 2019-07-15 15:28
我描述信号采样之外的一些问题
根据香农定理,采样频率大于2倍才能采集到正确的信号。那么就需要使用至少40K的采样频率,也就是说每隔25us进行一次采样,AD的转换速度应该问题不大。
stm32f103的主频最高是72M,也就是说,14ns可以执行一条单周期指令,那么在25us的周期内可以执行1785条单周期指令,转换为C语言,至少要考虑80%的编译消耗,就是说25us大约可以执行1428条C代码,但实际的情况还会更少。所以采样代码要更短,如果使用定时器中断采样,那么考虑中断切换的时间与中断函数的处理时间,越短越好,否则所有算法正确的情况下,也只得到失真的采样值。同样,如果要提高采样频率,请仔细考虑主频与采样周期的关系。
至于FFT算法,翻翻数字信号处理的书,理论上面很清楚了,真的明白理论,转换为代码应该不难。

一周热门 更多>