你好!
我用TMS320C5517做一个项目,使用它的hwafft功能。
为何我调用hwafft_1024pts函数做fft运算之后,scratch_data中的结果总是全0啊?
查了很多资料,貌似都不管用。
以下是执行fft运算的代码:
volatile COMPLEX_T src_data[1024];
volatile COMPLEX_T scratch_data[1024];
/* Bit-Reverse 1024-point data, Store into data_br, data_br aligned to 12-least significant binary zeros*/
hwafft_br((Int32*) src_data, (Int32*) br_data, DATA_LEN_1024); /* bit-reverse input data, Destination buffer aligned */
if (OUT_SEL_DATA == data_sel) {
fftResult = (COMPLEX_T *) &br_data[0];
}else {
fftResult = (COMPLEX_T *) &scratch_data[0];
}
三个缓冲区:src_data、br_data、scratch_data的定义与地址分配如下。
这是CMD文件中的片段:
PAGE 0: /* ---- Unified Program/Data Address Space ---- */
MMR (RWIX): origin = 0x000000, length = 0x0000c0 /* MMRs */
DARAM0 (RWIX): origin = 0x0000c0, length = 0x007f40 /* 32KB - MMRs */
DARAM1 (RWIX) : origin = 0008000h length = 002000h /* on-chip DARAM 1 */
DARAM2 (RWIX) : origin = 000a000h length = 002000h /* on-chip DARAM 2 */
DARAM3 (RWIX) : origin = 000c000h length = 002000h /* on-chip DARAM 3 */
DARAM4 (RWIX) : origin = 000e000h length = 002000h /* on-chip DARAM 4 */
....
.src_buf > DARAM2
.br_buf > DARAM3 /* output data of bit reverse */
.scratch_buf > DARAM4 /* output data of scratch */
结构体COMPLEX的定义如下:
Int16 imag;
Int16 real;
}COMPLEX_T, *pCOMPLEX_T;