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

STM32多通道FFT运算异常

[复制链接]
BOEING777ER 提问时间:2025-5-9 17:19 / 未解决

问题报告:STM32多通道FFT运算异常

报告人:XXX 日期:2025年X月X日 硬件平台:STM32F407VGT6 开发环境:STM32CubeMX + Keil CMSIS-DSP库版本:(如使用)


一、问题描述

当前项目中,ADC采样率为 960kHz,共 16个通道。采样数据通过DMA搬运至内存,随后对每个通道数据进行FFT频谱分析。

实际测试中,只处理1个通道FFT时系统运行正常;但当尝试处理2个或以上通道FFT运算时系统卡死(如无响应、死循环或硬件Fault),初步怀疑可能与以下因素有关:

  • MCU性能瓶颈(计算资源或内存资源不足)
  • FFT调用过程中内存访问冲突(堆栈/heap溢出或DMA冲突)
  • 电源供电或EMC干扰导致运行异常(不排除硬件原因)

二、系统配置

  • 采样率:960 kHz
  • 通道数:16(ADC多通道扫描)
  • FFT点数:例如 512(请填写)
  • FFT调用方式:CMSIS-DSP arm_rfft_fast_f32
  • 内存分配:静态
  • DMA设置:ADC -> 内存,使用双缓冲

三、复现方法

  1. 系统启动后,DMA连续采集16通道数据至buffer。
  2. 在中断或主循环中,提取单通道数据进行FFT分析,运行正常。
  3. 尝试对多个通道依次进行FFT计算,系统立即无响应或卡死。

四、初步排查

  • 已验证FFT函数本身对单通道无误;
  • 增加 __attribute__((section(".ccmram"))) 将FFT用到的临时buffer移至CCM RAM,无明显改善;
  • 关闭中断尝试排除DMA竞争,无效;
  • 减少FFT点数测试,仍在2个通道左右出现卡死;
  • 怀疑为处理能力或内存瓶颈导致。

五、请求支持

  1. 是否为MCU处理能力不足导致的预期行为?
  2. 若为资源瓶颈,是否建议使用更高主频 / 更大RAM的芯片(如F7/H7)?
  3. 在CMSIS-DSP使用多次FFT时,是否需特别注意堆栈或缓存的分配方式?
  4. 是否有推荐的多通道FFT结构优化方式(如分时处理、DMA双缓冲配合FFT流水线等)?
收藏 评论0 发布时间:2025-5-9 17:19

举报

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