主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
尊敬的同事:
我参考 F28379D 的示例程序编写了一个 FFT 操作、其 FFT 大小为2048。
断点之前的程序运行时没有任何问题。但是当程序运行 “CFFT_F32 (HND_CFFT)"时,它不会继续并报告错误。
此库函数是否可以执行2048 FFT 操作?
我不知道发生了什么、但一天之后、程序就可以运行了。
但是、FFT 的结果似乎不正确。
此致、
Hao
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.
工具/软件:Code Composer Studio
尊敬的同事:
我参考 F28379D 的示例程序编写了一个 FFT 操作、其 FFT 大小为2048。
断点之前的程序运行时没有任何问题。但是当程序运行 “CFFT_F32 (HND_CFFT)"时,它不会继续并报告错误。
此库函数是否可以执行2048 FFT 操作?
我不知道发生了什么、但一天之后、程序就可以运行了。
但是、FFT 的结果似乎不正确。
此致、
Hao
您好 Hao、
输入缓冲区大小必须是 FFT 大小的4倍。 由于您使用的是2048点 FFT,因此输入缓冲区大小必须为4*2048;
我可以在您所附的图片中看到、输入缓冲区大小为4096、这是预期大小的一半。
现在、 在链接器命令文件中、您还需要将"CFFT_alignment"宏更改为
--define CFFT_alignment=8192
如需更多信息、请查看~\c2000\C2000Ware_1_00_XX_00\libraries\DSP\FPU\c28\docs\FPU_SW_LIB_UG.pdf 中的第25页
我想在这里强调的另一点是、如果您使用内置的 Twiddle 因子表而不是计算 Twiddle 表、您的 CFFT 将得到更优化。 为此、您必须将 FFT 大小限制为1024。
请告诉我这是否能解决您的问题、或者您有任何其他疑问。
- Ritvik
Hao、
要使用这些表、必须先将 FFT 限制为1024点。 然后替换以下代码段:
HND_CFFT->CoefPtr = CFFTF32Coef; 使用 HND_CFFT->CoefPtr = CFFT_F32_TwidleFactors;
和
CFFT_F32 (HND_CFFT); 使用 CFFT_f32t (HND_CFFT);
您可以在以下位置找到完整示例:~\c2000Ware_1_00_XX_00\libraries\DSP\FPU\c28\examples\FFT\2837x_CFFT
-Ritvik