simomli 发表于 2017-10-20 10:27:39

求助!关于STM32官方DSP库中FFT函数中采样点幅值的使用问题

STM32官方的DSP库中FFT库函数的输入参数是一个long型的数组,高16位代表实部,低16位代表虚部,看到官方的例程中,如下:

void MygSin(long nfill, long Fs, long Freq1, long Freq2, long Ampli)
{
uint32_t i;
float fFs, fFreq1, fFreq2, fAmpli;
float fZ,fY;
fFs = (float) Fs;
fFreq1 = (float) Freq1;
fFreq2 = (float) Freq2;
fAmpli = (float) Ampli;
for (i=0; i < nfill; i++)
{
    fY = sin(PI2 * i * (fFreq1/fFs)) + sin(PI2 * i * (fFreq2/fFs));
    fZ = fAmpli * fY;
    lBUFIN= ((short)fZ) << 16 ;/* sine_cosine(cos=0x0) */
}
}
上述函数中,fY的值在-1.0到1.0之间的浮点数,fZ是fY和幅值的乘积,再讲fZ取short型后,左移16位,也就是实部是高16位,这里有个问题没搞明白,假如幅值 fAmpli为1,那么放fZ就是一个-1.0到1.0之间的浮点数,取short后,不是都变成0了吗? 这样还能正确计算fft吗?
跪求大神指点,谢谢!!

simomli 发表于 2017-10-20 15:12:23

在实际应用中,STM32 的AD采样计算FFT,是不是这样的,直接用AD采样的到的ADC值做FFT算法,然后求得对应频率点的模,将计算得到的模除以4096(12位AD)再乘以参考电压,就是实际的波形的幅值。

eric2013 发表于 2017-10-21 02:57:42

这个是定点FFT,Q15格式,范围-32768 - 32767对应浮点数的-1到1(0.99XXX),具体可以学习下我们DSP教程的ST官方汇编FFT章节。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=3886

simomli 发表于 2017-10-23 20:53:16

回 eric2013 的帖子

eric2013:这个是定点FFT,Q15格式,范围-32768 - 32767对应浮点数的-1到1(0.99XXX),具体可以学习下我们DSP教程的ST官方汇编FFT章节。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=3886 (2017-10-21 02:57) images/back.gif

再请教下,在实际应用中,ADC采样的到的是0~3.3V的信号,是不是就用Q13格式,范围-32768~32767对应浮点数的范围是-4~3.9998779??

simomli 发表于 2017-10-23 22:33:01

回 eric2013 的帖子

eric2013:这个是定点FFT,Q15格式,范围-32768 - 32767对应浮点数的-1到1(0.99XXX),具体可以学习下我们DSP教程的ST官方汇编FFT章节。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=3886 (2017-10-21 02:57) images/back.gif

用STM32F103芯片,对0~3.3V正弦波做的AD采样,打算用ST官方的DSP FFT算法,FFT算法的输入数据该怎么表示,看了你们DSP教程的ST官方汇编FFT章节,还不是很懂,希望你能再指导下,谢谢!

eric2013 发表于 2017-10-24 01:37:43

回 simomli 的帖子

simomli:再请教下,在实际应用中,ADC采样的到的是0~3.3V的信号,是不是就用Q13格式,范围-32768~32767对应浮点数的范围是-4~3.9998779?? (2017-10-23 20:53) images/back.gif

使用ST的这个库,不用考虑这些,你直接代入整形数据即可,不要超过16位数范围。比如STM32的ADC是12位的,你只需直接代入ADC实际数值即可。

simomli 发表于 2017-10-24 08:41:35

回 eric2013 的帖子

eric2013:使用ST的这个库,不用考虑这些,你直接代入整形数据即可,不要超过16位数范围。比如STM32的ADC是12位的,你只需直接代入ADC实际数值即可。 (2017-10-24 01:37) images/back.gif

非常感谢
页: [1]
查看完整版本: 求助!关于STM32官方DSP库中FFT函数中采样点幅值的使用问题