打印
[DemoCode下载]

快速傅立叶变换将ADC采样后转换至频域

[复制链接]
593|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EC_NUC121_FFT_Demo_V1.00 (1).zip (1.36 MB)
快速傅立叶变换,用于将时间域的离散讯号转换至频率域表示,用户得以观察该讯号的频率组成成分与分布情形,是常见的讯号分析手段。此范例将示范如何透过 ADC 与 TIMER 的搭配使用,取样出一段离散讯号,并进行快速傅立叶变换,最后观察频谱的数值分布是否符合原始输入讯号的特性。支持三种讯号长度范例,分别为 128 取样点,256取样点,以及512取样点。

原理
此范例采用 TIMER trigger ADC 的功能进行实作。首先利用波形产生器输出频率固定为 60 Hz 的正弦波,模拟一般应用情境下欲分析的讯号来源,给予微控制器使用 ADC 进行取样。使用者可根据应用上的需求自行调整取样频率,注意其数值会直接影响频谱的带宽与分辨率。每次的 TIMER 逾时事件,硬件便会自动触发 ADC 进行一次取样动作,软件则须于 ADC 转换完毕后的中断服务内,将数据以位反转的排序写入缓冲区当中。
本范例程序提供必要参数的查表数值,可简化微处理机的运算量,包含傅立叶变换过程所需要的旋转因子常数,以及 Decimate-in-time 作法所需的位反转排序,开发者已经事前计算完毕并定义在头文件当中。由于寻找表的内容会根据讯号长度的不同而有异,不同长度设定的寻找表无法共享,使用者必须于头文件中选择范例提供的指定长度参数编译,流程主要可分为五个部分:
1. 指定讯号长度以及取样频率
2. 系统与周边硬件初始化
3. ADC取样至指定数量为止
4. 执行傅立叶变换
5. 后置处理,显示频谱信息


下图为执行傅立叶变换后得出的局部频谱,显示内容分为四栏,由左至右。第一栏为数据索引,第二栏为该点所表示的频率,第三栏为原讯号含有该频率讯号的成份大小,由频率域数据实数部分与虚数部分的平方和求得,单位可先忽略不计。最后一栏则表示该频率成份于此频谱占有的强度百分比。藉由观察第四栏可看出该讯号的组成成分几乎正好落在60 Hz 的频率点上,符合波形产生器给予的 60 Hz 正弦波频率。

使用特权

评论回复
沙发
玛尼玛尼哄|  楼主 | 2024-9-12 17:11 | 只看该作者
转换效果

使用特权

评论回复
板凳
玛尼玛尼哄|  楼主 | 2024-9-12 17:12 | 只看该作者
细节看附件。

使用特权

评论回复
地板
LEDyyds| | 2024-9-13 10:36 | 只看该作者
反傅里叶有吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

3053

帖子

2

粉丝