微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于STM32AD采样后进行FFT计算的问题

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

时间:10-02 整理:3721RD 点击:
我有一个频率为20k的信号,要得到它的频谱。主要思路就是:先进行AD转换,采样率设为50khz,然后进行FFT运算,如果我计算1024点的FFT,那么是不是从1s中测得的50k个点中找出1024个点进行FFT运算?如果是这样的话,从50k个点中选取1024个,概率也太小了,肯定影响计算机过吧?不知道我理解的FFT是不是这个意思,哪位大侠知道的话帮我分析分析,感激不尽。

根据香农定律,采样两倍。也就是说,你想采集到20kHz的频率,就要有超过40kHz的采样速度。同时计算FFT,其实是对某一段波形进行分析。假设你是以40kHz采样频率,最低需要采集50Hz的数据,那么你就采集时长为20ms的数据,20ms里以40kHz采集了多少点,就用这么多个点来分析,在按照事先算好的频率间距,就可以知道每个点分析得出的频率幅值(如果你的FFT函数还带有相位计算的还可以得到相位),我是做成功过的,51和STM32都可以,希望可以帮组到你。

怎么没人回复?自己帮顶

对于小编这个信号频率,(在对运算时间要求不高的条件下)fft的点数尽可能的多吧,比如做2048或者4096,然后等分取点每隔20点取一个或者50点取一个,尽量减少误差吧,我最近做的是一个低频信号的fft,2hz左右,用的20hz来采集的,取了512点,还原信号频率还不错

请问你说的等分取点具体是什么意思?比如说计算2048点的FFT,就在那50k个点中每隔50个点取一个,直到取了2048个点就进行一次计算,思路对不?前辈

不知道问题解决没有,思路就是你说的这样,但是要注意的是,这样处理完之后,fft计算信号频率时,你的fs已经不是50khz了,应该除以你的等分值,我觉得是这样,我也是刚刚学习的菜鸟,共同进步吧

请问小编搞定没,用stm32f103做进行fft计算要怎么搞,需要引用浮点库库吗

你好,请问你有stm32的fft的代码吗,想参考学习学习。那如果用锁相倍频电路,每个周期采样256个点,即50Hz采样点为50x256,这和你所说的香农定律是一样的吗

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

不是很清楚诶!

感觉用FPGA做FFT算法应该更好一些吧

FPGA确实是好,可是成本直接要加一个STM的钱啊

请问小编,你的问题解决了吗?
最近也是在做这个,求解答。
我AD采集时钟频率64kHz,采集50Hz正弦波,即1s钟采集128000个点。但是我FPGA中FFT采集时钟频率为2048Hz,做2048点运算。应该如何解决这两个的模块的匹配问题呢

好资料。感谢分享

前辈,用FFT测量相位差怎么分析,刚接触FFT,不知道怎么下手,有资料推荐吗?

50K采样速率和1024点运算不是一个概念。简单来说,50K采样是FFT运算输入需要的数据量,而1024点是FFT输出的频段数相关。两者不要混淆,即一个数输入,一个是输出

关于这个问题。也很想学习学习。

关于这个问题。也很想学习学习。

加油。。

懂了一点点。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top