|
我目前使用 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] 进行缩放处理,问题依然没有解决。 |
STM32L4P5xx 系统内 Bootloader:RAM3 能否用作栈指针内存?
STM32F4的SPI端口,如何实现多通道输入?
STM32F4标准库USB例程CDC_HID_Composite问题:第一次识别成功,后续插入电脑均识别失败
在 STM32CubeIDE 中生成 ioc 配置文件
CAN 总线多节点环境下进行固件升级
在 Bootloader 运行期间保持 GPIO 引脚电平状态不变
把 MCO1 时钟源选为 PLLCLK会怎样
STM32F407 Flash 故障
STM32F407使用LAN8720A进行网口通信
I2C 错误代码含义
微信公众号
手机版
不懂,
是否声道错了,声音是串过来的?
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; // 低位字节
试试。