|
我目前使用 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] 进行缩放处理,问题依然没有解决。 |
中断服务程序抖动
STM32L562DK探索板——如何启用蓝牙功能?
自己写驱动深入学习与调用Hal库的取舍
stm32 f411偶发性无法启动大神求助
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
STM32 上同时跑 LWIP 的 TCP 与 UDP 连接
在擦除flash时 同时挂起中断 是否会造成卡死以及相关的卡死机制
STM32F407VET6,使用cubeIDE下载跑不起来
FLASH擦除轮询等待时CPU真的会轮询吗
STM32F417 RTC读取亚秒寄存器
微信公众号
手机版
不懂,
是否声道错了,声音是串过来的?
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; // 低位字节
试试。