STM32
直播中

凤毛麟角

8年用户 915经验值
私信 关注
[问答]

STM32F407读取挂在FSMC上的外部ADC数据,开启DMA的Mem to Mem模式时只能读取一次FSMC数据,为什么?

大家好,我现在使用STM32F407,想要读取挂在FSMC上的外部ADC的数据,我利用NOE产生一个时钟信号给ADC。

现在的问题是,当我开启DMA的Mem to Mem 模式时,只能读取一次FSMC数据,我明白Mem to Mem 模式不能循环读取,因此我的方式是手动在DMA完成中断中再次开启读取,但是debug发现没有进入DMA完成中断。现在很困惑,希望有高手可以指点迷津。

回帖(1)

醉清歌

2024-5-29 16:41:43
以下是一些建议和可能的原因:

1. 确保DMA配置正确:请检查您的DMA配置,确保源地址、目标地址、数据大小、传输方向等参数设置正确。

2. DMA中断配置:请确保您已经正确配置了DMA中断,并在NVIC中启用了DMA中断。同时,检查您的中断服务函数是否正确实现了重新启动DMA传输的功能。

3. 检查FSMC配置:请确保FSMC配置正确,包括时钟、地址映射、控制寄存器等。如果FSMC配置不正确,可能会导致无法正常读取数据。

4. 检查ADC时钟信号:您提到使用NOE产生时钟信号给ADC,请确保时钟信号的频率和相位与ADC的要求相匹配。

5. 检查代码逻辑:请检查您的代码逻辑,确保在DMA传输完成后,正确地重新配置DMA并启动下一次传输。

6. 使用调试工具:如果可能,请使用调试工具(如ST-Link)逐步跟踪代码执行过程,以便找到问题所在。

7. 考虑使用其他DMA模式:如果Mem to Mem模式仍然无法解决问题,您可以考虑使用其他DMA模式,例如Mem to Periph或Periph to Mem模式。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分