主题中讨论的其他器件:BOOSTXL-AUDIO、
工具/软件:Code Composer Studio
您好!
我正在学习 BOOSTXL-AUDIO_430BOOST-SHARPLCD_FFT_FIR_LEA_MSP430FR5994中的项目代码以了解 FFT。 示例代码显示了如何执行256点 FFT。 但我需要实现512或1024点 FFT。 如何更改代码? 我在下面复制粘贴 FFT 函数。 我目前的理解是、更改此 runFftWithLea 中调用的某些库函数应该可以完成该工作。 谢谢。
void runFftWithLea (void) { MSP_STATUS 状态; uint16_t i; int16_t * currentAdcBuffer; //初始化刷新显示的次数 refreshDisp = 2; //首先清除屏幕 graphics_clearDisplay (&g_sContext); //绘制基本结构 GrStringDraw (&g_sContext、"0"、 AUTO_STRING_LENGTH、1、LCD_Vertical _MAX-10、 Transparent_text); GrStringDraw (&g_sContext、"FS 2"、 AUTO_STRING_LENGTH、70、LCD_Vertical _MAX-10、 Transparent_text); GrLineDrawH (&g_sContext、0、LCD_Horizontale_MAX、LCD_Vertical _MAX-12); //画标题一次 GrStringDraw (&g_sContext、"FFT w/LEA"、 AUTO_STRING_LENGTH、0、0、 图形不透明文本); //将缓冲器刷新到 LCD graphics_flushBuffer (&g_sContext); //初始化 LEA 模块 initFft(); keepAppRunning = true; while (keepAppRunning) { _bis_SR_register (LPM3_bits + GIE); //获取要复制的最新缓冲区指针 currentAdcBuffer = Audio_getActiveBuffer (&gAudioConfig); //将记录的 ADC 数据复制到 LEA RAM 缓冲器以进行 FFT 处理 for (i = 0;i <(vector_size);i++) { (((int32_t *) leaMemoryStartAdd.fftDataParam.fftInputOutput)[i]= currentAdcBuffer[i]& 0x0000FFFF; } resetBenchmark(); startBenchmark(); //调用固定缩放 FFT 函数。 状态= MSP_cmplx_FFT_fixed_q15 (&sqFftParams、 leaMemoryStartAdd.fftDataParam.fftInputOutput); //检查状态标志。 if (status!= MSP_SUCCESS) { //错误! __no_operation(); } stopBenchmark(); //计算正频域的幅度 for (i = 0;i <(vector_size / 2);i++) { Real = leaMemoryStartAdd.fftDataParam.fftInputOutput[2 * i]; Imag = leaMemoryStartAdd.fftDataParam.fftInputOutput[2 * I + 1]; if (实数< 0) { Real_Abs =~Real + 1; } 其他 { Real_Abs = Real; } if (imag < 0) { Imag_abs =~μ s imag + 1; } 其他 { Imag_abs = imag; } if (REAL_ABS >= imag_abs) { MAX = REAL_ABS; 最小值= imag_abs; } 其他 { Max = imag_abs; 最小值= REALL_ABS; } MAG =最大值+ 3 *(最小值>> 3); FFT_DATA[i]= MAG; }