小编Ted*_*Ted的帖子

已解决:FFT频率仓和PIC32

我试图使用可用于PIC32MZ2064DAB176的FFT库导出音频信号的频率。

我正在使用MPLAB Harmony进行配置。

为了进行测试,使用了两个频率为1002 Hz和750 Hz的正弦波。这是借助在线音调生成器工具完成的。我在一个浏览器窗口上有1002 Hz,在另一个浏览器窗口上有750 Hz。直流偏置后,音频O / P插孔的输出被馈送到微控制器ADC。

在执行1.6 V的DC偏置后,信号被发送到12位ADC。我期望的最大电压是3 V PP,因此我猜想DC偏置为1.6 V就足够了。

信号以48 kHz采样,因为我将需要读取高达20 kHz的频率。

FFT是1024点FFT。

我能够在频率档的第0个索引中获得DC值。

用于从仓中获取频率值的公式为:频率=索引*采样频率/ FFT点数

但是,对于任何输入频率值,我总是在第一和第二频率仓中得到很高的幅值。根据我的理解,对于1002 Hz,振幅应在频率仓的第21个索引附近较高,而对于750 Hz信号,该振幅应在第16个索引附近较高。

我附上我的代码,ADC Harmony配置屏幕截图,结果屏幕截图和信号输入屏幕截图。

在代码中,用于频点的阵列是“ singleSidedFFT”

我们非常感谢您提供正确的频率值的任何帮助。

    /* FFT */
#define N 1024// Also change the log2N variable below!!
#define SAMPLE_FREQ 48000
#define PI 3.14

// Section: Global Data Definitions
APP_DATA appData;

/* ADC */
long count = 0;

/* FFT */
int16c  fftCoefs[N];
int16c *fftc;
int log2N = 10; 
extern const int16c twiddleFactors[];
long int freqVector[N]; …
Run Code Online (Sandbox Code Playgroud)

c embedded signal-processing fft

5
推荐指数
1
解决办法
199
查看次数

标签 统计

c ×1

embedded ×1

fft ×1

signal-processing ×1