This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28377D:关于 FFT

Guru**** 2347070 points
Other Parts Discussed in Thread: TMS320F28377D, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/593034/tms320f28377d-regarding-fft

器件型号:TMS320F28377D
Thread 中讨论的其他器件: controlSUITE

您好!

我们希望使用具有库 C28x_vcu2_library_fpu32.lib 的 TMS320f28377D 对256个实例数据(数组)执行正向和反向 FFT。

因此、我们一直在探索 controlSUITE 示例项目2837x_vcu2_rfft_256。

使用以下步骤完成正向 FFT:

//步骤1:初始化 CFFT 对象

CFFT.pInBuffer = buffer1Q15;

CFFT.pOutBuffer = buffer2Q15;

CFFT.init =(void (*)(void *)) CFFT_init128Pt

CFFT.run =(void (*)(void *)) CFFT_run128Pt

//步骤2:初始化句柄

handleCFFT =&CFFT;

//步骤3:调用 init()将设置 Twiddle 因子表

//并运行前向 FFT,然后运行解包例程

CFFT.init(handleCFFT);

CFFT.run(handleCFFT);

CFFT_UNPACK (handleCFFT);

该项目中没有逆向 FFT、因此我们将其包括在内、并执行以下步骤:

//步骤1:切换 CFFT 对象的输入和输出指针

pTemp = CFFT.pInBuffer;

CFFT.pInBuffer = CFFT.pOutBuffer;

CFFT.pOutBuffer = pTemp;

//步骤2:将 IFFT 函数分配给运行指针

CFFT.run =(void (*)(void *)) ICFFT_run128Pt

//步骤3:运行例程

CFFT_pack (handleCFFT);

CFFT.run(handleCFFT);

CFFT_conGATE (handleCFFT->pOutBuffer、handleCFFT->nSamples);

我们在同一示例中执行了正向和反向 FFT。

提供的输入阵列为256点。

在反向 FFT 之后获得的输出与输入不同。

输入(用于正向 FFT)和输出(来自 ICFFT_run128Pt)数组绘制如下:

输入:(+/- 4096 Vpk)

输出:(+/- 1000Vpk)失真。

ICFFT_run128Pt 的输出失真并按系数4缩小。

这个问题是否有任何解决方案?

如果我们出错、请提供指导。

 

此致、

Shashank.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shashankk、

    [引用 user="AMTECH"] ICFFT_run128Pt 的输出失真并按系数4缩小。

    答案可能与此查询有关: e2e.ti.com/.../2029513

    电池组功能进行4分频、这是为了防止溢出。 您可以在代码中对其进行调整、尽管您可能应该在 IFFT 之后进行扩展

    _CFFT_pack:
    CFFT_Context_SAVE
    VSETCPACK ;将 CPACK 位设置为1 [LO:HI]=[RE:IM]
    SETC SXM ;打开符号扩展模式
    ZAPA
    VSATON ;VSTATUS.SAT = 1
    VRNDON ;VSTATUS.RND = 1.
    VSETHR #17 ;VSTATUS.SHIFTR = Rright_shift,按4缩放
    VSETSHL #15 ;VSTATUS.SHIFTL = LEFT_SHIFT 

    如果您需要更高的精度(尽管速度较慢)、则应查看32位定点 DSP 库