|
我目前使用 STM32F407G-DISC1 开发板,通过 PMOD I2S2 接口采集音频输入。已经完成了多个示例测试,硬件工作正常,示例代码如下: 。。。。。。。。。 for (int i=0; i<BUFFER_LENGTH*4; i=i+4) { txBuf[i] = rxBuf[i]; txBuf[i+1] = rxBuf[i+1]; txBuf[i+2] = 0; txBuf[i+3] = 0; } 。。。。。。 现在我想对输入的音频缓冲区执行 FFT,对频域数据进行处理,首要目标是实现音高变换算法,然后再执行 IFFT。 编写了如下代码: .... for (int i=0; i<BUFFER_LENGTH*4; i=i+4) { fft_in_buf[fft_in_ptr] = (float) ((int) (rxBuf[i]<<16)|rxBuf[i+1]); fft_in_ptr++; } arm_rfft_fast_f32(&fft_handler, fft_in_buf, fft_out_buf, 0); arm_rfft_fast_f32(&fft_handler, fft_out_buf, fft_in_buf, 1); fft_in_ptr = 0; for (int i=0; i<BUFFER_LENGTH*4; i=i+4) { txBuf[i] = (fft_in_buf[fft_in_ptr] >> 16) & 0xFF; // 高位字节 txBuf[i + 1] = fft_in_buf[fft_in_ptr] & 0xFF; // 低位字节 txBuf[i + 2] = 0; txBuf[i + 3] = 0; fft_in_ptr++; } ......... 在主程序初始化部分,我也调用了: arm_rfft_fast_init_f32(&fft_handler, BUFFER_LENGTH); 问题是使用上述代码后,音频输出音量极小,几乎听不见。 我怀疑是缩放 / 增益问题,但即使对 fft_in_buf[fft_in_ptr] 进行缩放处理,问题依然没有解决。 |
终于找到了STM32C542RC开发板的官方实例
使用我自己写的 IAP 跳转到 FLASH 应用程序时,串口上出现无关字节
说说我今天使用CUBEMX2的感受
STM32F429 跑起来了
Error[Lp015]: section placement failure内容占用溢出
STM32F7由USB FS读写QSPI flash
寻求 资源互换
STM8L050J3使用SWIM下载方式,无法下载,总是报错
用SDRAM刷ltdc有白线会出现是啥情况
在keil中仿真程序时,结构体变量出现错乱
微信公众号
手机版
不懂,
是否声道错了,声音是串过来的?
txBuf[i] = 0;
txBuf[i + 1] = 0;
txBuf[i + 2] = (fft_in_buf[fft_in_ptr] >> 16) & 0xFF; // 高位字节
txBuf[i + 3] = fft_in_buf[fft_in_ptr] & 0xFF; // 低位字节
试试。