|
我目前使用 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] 进行缩放处理,问题依然没有解决。 |
非官方开发板第一次下载成功,之后就各种失败
STM32F407VGT6 开发板Beak at address "0x0" with no debug information our outside
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
BootLoader 与 DFU 模式的区别
调度器原子变量相关问题
运行到 WRITE_REG (FLASH->OPTKEYR, FLASH_OPTKEY1)跳转 HardFaultHandler
ST TOF问题请教
STM32F417IG 单端外部时钟旁路HSE Bypass问题
STM32F4的SPI端口,如何实现多通道输入?
STM32L4A6 SDMMC 无法使用 1.8V IO 驱动 microSD 卡
微信公众号
手机版
不懂,
是否声道错了,声音是串过来的?
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; // 低位字节
试试。