isg888 发表于 2025-7-18 16:10:11

求教FFT_A直接打印的结果绘图和MATLAB结果除了0Hz完全不符

由于手中没有试验箱,
使用串口将生成的正弦波曲线的FFT结果, FFT_A 打印后绘图,
结果频率幅值和MATLAB结果差距较大,
求教是哪里的问题

DebugLab 发表于 2025-7-18 18:11:56

使用的是梁工的例程吗?
https://www.stcaimcu.com/thread-10324-1-1.html
https://www.stcaimcu.com/thread-2808-1-1.html

isg888 发表于 2025-7-18 18:46:28

DebugLab 发表于 2025-7-18 18:11
使用的是梁工的例程吗?
https://www.stcaimcu.com/thread-10324-1-1.html
https://www.stcaimcu.com/threa ...

是梁工发的例程 ai8051u的 但是没用上位机显示频谱那个软件 而是用一个正弦波测试 把结果fft_a通过串口打印然后自己绘图

DebugLab 发表于 2025-7-18 19:04:05

isg888 发表于 2025-7-18 18:46
是梁工发的例程 ai8051u的 但是没用上位机显示频谱那个软件 而是用一个正弦波测试 把结果fft_a通过串口打 ...
以下是FFT例程的协议,检查一下是否是移植过程中有问题

FFT(快速傅立叶)绘图接口

数据意义:
0(00H)~250(FAH)为数据。
251(FBH)为帧数据头,后面是128/64/32个字节的Y轴数据。
255(FFH)为数据结束标志。

数据传输协议:

功能FB: 单片机上传数据(128个点的数据)
命令格式: FBH DAT0 DAT1 ..... DAT127 FFH
命令说明:  
1字节: 命令头(帧数据)
2~129字节: 128个Y轴数据(数值为0~250),字节序号0~127就是X轴
130字节: 命令结束(固定为FFH)
示例: FBH xxH xxH ... xxH FFH

功能FB: 单片机上传数据(64个点的数据)
命令格式: FBH DAT0 DAT1 ..... DAT63 FFH
命令说明:  
1字节: 命令头(帧数据)
2~129字节: 128个Y轴数据(数值为0~250),字节序号0~63就是X轴
130字节: 命令结束(固定为FFH)
示例: FBH xxH xxH ... xxH FFH

功能FB: 单片机上传数据(32个点的数据)
命令格式: FBH DAT0 DAT1 ..... DAT31 FFH
命令说明:  
1字节: 命令头(帧数据)
2~129字节: 128个Y轴数据(数值为0~250),字节序号0~31就是X轴
130字节: 命令结束(固定为FFH)
示例: FBH xxH xxH ... xxH FFH

DebugLab 发表于 2025-7-18 19:06:09

isg888 发表于 2025-7-18 18:46
是梁工发的例程 ai8051u的 但是没用上位机显示频谱那个软件 而是用一个正弦波测试 把结果fft_a通过串口打 ...

示波器观察一下外部输入的正弦波信号是否有问题

isg888 发表于 2025-7-18 19:50:47

DebugLab 发表于 2025-7-18 19:06
示波器观察一下外部输入的正弦波信号是否有问题

好的 谢谢

isg888 发表于 2025-7-19 15:01:31

DebugLab 发表于 2025-7-18 19:06
示波器观察一下外部输入的正弦波信号是否有问题

感谢大大回复 问题解决了 忘记了将生成正弦信号按反序十进制排序
页: [1]
查看完整版本: 求教FFT_A直接打印的结果绘图和MATLAB结果除了0Hz完全不符