Microchip
直播中

田爽

7年用户 144经验值
私信 关注
[问答]

使用正弦发生器怎么检查它是如何工作的

大家好!我是Android开发者,MCU只是我的爱好。我有DSIC30F3012,我正在尝试实现音频信号的FFT。我的采样率是2048赫兹,样品的数量是128。我使用正弦发生器来检查它是如何工作的。我有个问题。如果信号频率是例如92Hz,那么我在第六十二和第六十六带得到峰值-这是可以的。但如果信号频率为1088 Hz,则在第六十和第六十八带处得到峰值。但我希望在这种情况下都是零。甚至更多。如果频率为2016 Hz,则峰值为第二和第一百二十六。接着,如果频率为2112 Hz,则峰值为第四和第一百二十四。等等。6688 Hz将在第三十四和第九十四处达到峰值。你能辨别出什么毛病吗?我使用的是标准DSP LIB(DSP,H)和Hamming窗口的FFT。在我的代码中没有特殊的。变量和初始化:ADC部分:FFT部分:谢谢!

回帖(10)

康根

2019-9-18 09:54:24
嗨,阿肯,祝贺你完美地实现了FFT。没有错误,硬件和软件如果按预期工作,我检查了所有的结果与计算。但是…您似乎没有应用“别名过滤器”。在输入端或信号处理端应该有一个(硬件)滤波器,注意不要将采样频率(Fs/2)的一半以上馈入ADC。你不能重建比FS/2更高频率的信号(没有额外信息)。这就是为什么音频的采样频率经常是例如44100Hz,因为有**总是**一个抗混叠滤波器,它试图抑制任何高于22050Hz的频率。参见维基百科的“奈奎斯特-香农采样定理”或“抗混叠滤波器”。祝你好运。
举报

杜元晓

2019-9-18 10:10:14
BITRealSeCopSuffle()对象的数据不应该对齐吗?例如:比特反转复模需要模对齐。我怀疑它是由DATAYCONTXX2字节还是DATAAQuiTX4对齐的?
举报

励黎

2019-9-18 10:21:02
谢谢您!我读过这个定理和反别名过滤器,发现这应该是我的问题。但不幸的是,我不能以更高的速率进行采样,因为在这种情况下,我需要增加样本数量。我不能这样做,因为内存限制。只有2K的RAM。将尝试实现反别名过滤器。
举报

励黎

2019-9-18 10:29:31
BITRealSeCopSuffle()对象的数据不应该对齐吗?例如:比特反转复模需要模对齐。我怀疑它是由DATAYCONTXX2字节还是DATAAQuiTX4对齐的?谢谢!我来查一下!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分