
问题报告:STM32多通道FFT运算异常 报告人:XXX 日期:2025年X月X日 硬件平台:STM32F407VGT6 开发环境:STM32CubeMX + Keil CMSIS-DSP库版本:(如使用) 一、问题描述当前项目中,ADC采样率为 960kHz,共 16个通道。采样数据通过DMA搬运至内存,随后对每个通道数据进行FFT频谱分析。 实际测试中,只处理1个通道FFT时系统运行正常;但当尝试处理2个或以上通道FFT运算时系统卡死(如无响应、死循环或硬件Fault),初步怀疑可能与以下因素有关:
二、系统配置
三、复现方法
四、初步排查
五、请求支持
|
有STM32F4倒车雷达响应例程吗?
STM32F429I倒车雷达响应
在其他电脑上编译成功没有错误并且能够烧录,换了电脑之后编译出现一堆错误,并且不能烧录程序
SD卡初始化第一次初始化后再次初始化时会失败。
串口重定向接收不同
关于三轴陀螺仪 I3G4250D
经过光耦之后,脉冲计数功能为啥不能实现?
STM32F407 ADC Dual regular simultaneous only 模式下最高采样率仅 96 kHz,960 kHz 无法工作,求助!
STM32 F407骄阳电机版用DMA双缓存接收串口数据时,上电第一次接收区是memory1而不是memory0?
STM32F407骄阳版用DMA双缓存区接收串口数据,上电第一次接收到的数据在memory1而不是memory0
应该是RAM溢出了,假设256点FFT,每个float数据占用4Byte,则:
(FFT输入256×4Byte=1024)+(FFT输出256×4Byte=1024)+(ADC缓存16×256×2Byte=8192)。
转换一个通道的FFT需要10240ByteRAM.
而FFT如果不是分时共用FFT的RAM,而是每个通道独占,RAM是不够用的。
另外上面假设的256点FFT大概已经是很低的转换点数了,如果使用1024点,就更不够了。
启用浮点后,每次压栈增加不少内存消耗。
还有个可能就是DMA方面的问题,当你ADC通道很多时,相应的DMA通道也多起来了。低优先级的DMA可能没
法得到足够传输机会导致ADC结果无法及时提取而导致一些代码逻辑方面的问题。
采样速度太高,加上多通道,已经接近CPU的负荷上限,加上FFT就更大了。
所以建议采用64点或128点FFT,以减小CPU负荷,当然,RAM的使用也需要合理规划,否则肯定溢出了。