找回密码
 立即注册
楼主: 梁工

FFT频谱分析-视频讲解, USB-CDC虚拟串口送电脑显示

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-07-11 10:30:04

4

主题

2

回帖

46

积分

新手上路

积分
46
发表于 2023-8-3 21:34:29 | 显示全部楼层
请问32f可以改成1024个采样点数的fft吗?

点评

可以,但是要注意,1024点的计算量多了好几倍。  详情 回复 发表于 2023-8-3 23:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-8-3 23:12:42 | 显示全部楼层
stel*** 发表于 2023-8-3 21:34
请问32f可以改成1024个采样点数的fft吗?

可以,但是要注意,1024点的计算量多了好几倍。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-8-3 23:19:53 | 显示全部楼层
本帖最后由 梁工 于 2023-8-3 23:40 编辑
lzp0*** 发表于 2023-8-3 17:13
梁工,fft的例程如何获取频谱对应实际频率和他对应的幅值啊

例子中,实部平方+虚部平方,然后开方,就是对应的幅度(峰值),频率是线性的,比如例子用25.6KHz采样,则12点频率就是0HZ(直流)、100Hz、200Hz、300Hz。。。。12700Hz,一共128点频率。
计算幅值:
for(i=0; i<LENGTH/2; i++)
{
        FFT_A = sqrt((long)FFT_Real*(long)FFT_Real + (long)FFT_Image*(long)FFT_Image);   //计算模值, STC32F @52MHz 加载硬件浮点库+整数库, 打开Cache: 455us.
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-8-3 23:40:24 | 显示全部楼层
lzp0*** 发表于 2023-8-3 17:21
梁工,在15kHz下输入正弦波,他的频谱是往右移动,但超过15kHz后,增大频率频谱会向左移动,这是为什么 ...

根据采样定理,25.6KHz采样只能输入12.7KHz以下的频率,超过则发生频谱更迭。
由于傅里叶变换的共轭对称性,所以会出现对称的两半频谱值,我们值显示低128点就可以了,高128点是对于fs/2对称的。
回复 支持 反对

使用道具 举报 送花

0

主题

5

回帖

26

积分

新手上路

积分
26
发表于 2023-8-4 01:10:24 | 显示全部楼层
梁*** 发表于 2023-8-3 23:40
根据采样定理,25.6KHz采样只能输入12.7KHz以下的频率,超过则发生频谱更迭。
由于傅里叶变换的共轭对称 ...

那我如果要修改ad采样频率的话直接修改SAMPLE_RATE就可以吗

点评

是的,只要是256点的FFT,只需改动SAMPLE_RATE,就可以得到你想要的任何采样率,但能保证连续计算的最高采样率是25.6KHz,再高的话,计算时间将超过采样时间。  详情 回复 发表于 2023-8-4 12:05
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-8-4 12:05:22 | 显示全部楼层
lzp0*** 发表于 2023-8-4 01:10
那我如果要修改ad采样频率的话直接修改SAMPLE_RATE就可以吗

是的,只要是256点的FFT,只需改动SAMPLE_RATE,就可以得到你想要的任何采样率,但能保证连续计算的最高采样率是25.6KHz,再高的话,计算时间将超过采样时间。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-8-5 15:36:25 | 显示全部楼层
1.png

梁工在另外一个帖子中的STC32G12K128实现FFT:
我改成STC32G的了,主频30MHz,先发程序,使用说明还没来得及改。
MCU:STC32G12K128,例子使用实验箱9.61验证。
主频:30MHz。
FFT:  256点采样,128点频谱显示,USB-CDC传给STC-ISP里的示波器界面显示频谱。
采样频率最高25.6KHz,下面的程序已按楼主要求用12.8KHz采样,分辨率50Hz。

https://www.stcaimcu.com/forum.p ... ptid=3556&pid=23489

实验箱9.61-STC32G-256点FFT-CDC-虚拟示波器界面显示.rar

304.17 KB, 下载次数: 198

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:412
  • 最近打卡:2025-05-01 03:39:21

2

主题

144

回帖

3012

积分

论坛元老

积分
3012
发表于 2023-9-11 01:34:09 | 显示全部楼层
请问有STC8H8K64U的FFT的例程么?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:412
  • 最近打卡:2025-05-01 03:39:21

2

主题

144

回帖

3012

积分

论坛元老

积分
3012
发表于 2023-9-11 01:35:57 | 显示全部楼层
请问梁工,有移植STC8H8K64U 的FFT例程么?

点评

这个没有,因为STC8H计算太耗时间,所以没移植。  详情 回复 发表于 2023-9-11 10:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-9-11 10:07:50 | 显示全部楼层
hu_ji*** 发表于 2023-9-11 01:35
请问梁工,有移植STC8H8K64U 的FFT例程么?

这个没有,因为STC8H计算太耗时间,所以没移植。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:37 , Processed in 0.290067 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表