你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407 音频输入输出时 IFFT 无法正常工作

[复制链接]
patch1582 提问时间:2026-6-2 13:59 / 未解决

我目前使用 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] 进行缩放处理,问题依然没有解决。

收藏 评论0 发布时间:2026-6-2 13:59

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版