|
问题报告:STM32多通道FFT运算异常 报告人:XXX 日期:2025年X月X日 硬件平台:STM32F407VGT6 开发环境:STM32CubeMX + Keil CMSIS-DSP库版本:(如使用) 一、问题描述当前项目中,ADC采样率为 960kHz,共 16个通道。采样数据通过DMA搬运至内存,随后对每个通道数据进行FFT频谱分析。 实际测试中,只处理1个通道FFT时系统运行正常;但当尝试处理2个或以上通道FFT运算时系统卡死(如无响应、死循环或硬件Fault),初步怀疑可能与以下因素有关:
二、系统配置
三、复现方法
四、初步排查
五、请求支持
|
在擦除flash时 同时挂起中断 是否会造成卡死以及相关的卡死机制
STM32F407VET6,使用cubeIDE下载跑不起来
FLASH擦除轮询等待时CPU真的会轮询吗
STM32F417 RTC读取亚秒寄存器
STM32F405ZGT6 批次22+ 问下这颗料,60度烘烤12小时后,出现鼓包,是怎么回事? 原厂有标准的烘烤温度范围 跟时长范围吗?
非官方开发板第一次下载成功,之后就各种失败
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
ST TOF问题请教
STM32F4的SPI端口,如何实现多通道输入?
STM32F4标准库USB例程CDC_HID_Composite问题:第一次识别成功,后续插入电脑均识别失败
微信公众号
手机版
应该是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的使用也需要合理规划,否则肯定溢出了。