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

技术笔记分享:STM32H7 DMA传输异常案例分析

[复制链接]
eefishing 发布时间:2019-12-20 00:25
前言
利用ST提供的辅助开发工具STM32CubeMX,可以快速开发STM32应用。在本文中讨论的ADC应用,同样是建立在STM32CubeMX生成工程的基础上。具体为在STM32H743ZI上,利用DMA自动实现ADC数据周期采集和转移,在采集指定数量的采样值后产生中断,对数据进行处理。
文中仅对上述实现过程中出现的一种异常,进行介绍和分析。不涉及具体的ADC采集和处理实现的介绍。
一、实验环境
硬件平台:Nucleo-H743ZI
STM32CubeMX 版本:v4.28.0
STM32CubeH7 版本:v1.2.0
IDE: MDK-ARM v5.25.2.0 (优化级别 Level3)
首先利用STM32CubeMX生成ADC应用的初始化工程,涉及的配置如下所示:
1.png
然后在工程中增加对ADC周期采集和DMA传输实现的命令,如下所示。并且增加回调函数内容,本文中实现仅添加了空指令。在调试过程中,在空指令处增加断点,判断ADC DMA传输半完成和传输完成中断是否正常进入。
2.png
二、异常现象
在运行过程中,无法进入
HAL_ADC_ConvHalfCpltCallback
和HAL_ADC_ConvCpltCallback
回调函数(分别对应DMA传输半完成和传输完成回调函数)。
跟踪中断服务函数,发现在首次DMA1传输后,DMA_LISR寄存器值为0x8。即TEIF0置位,Stream 0 出现传输错误。

" J- Q3 I# Y! w! w
三、原因分析
根据错误信息,问题可能与DMA 1传输错误有关。重点围绕DMA1传输配置, 进行检查,并没有发现异常。
不过,同样的初始化配置和执行命令,放置在ADC例程(路径:
STM32Cube_FW_H7_V1.2.0\Projects\STM32H743ZI-Nucleo\Examples\ADC\ADC_DMA_Transfer),进行编译链接后,能够正常执行。
比对两者间的工程配置,发现在RAM分配上存在差异。下图为STM32CubeMX生成工程中,对应的RAM分配情况。 与此对应,例程中RAM分配至IRAM2 (0x24000000)。
3.png
打开.map文件可以看到:
44.png
而aADCxConvertedData数组设置为DMA目标地址。问题定位为DMA目标地址引起的异常。
aADCxConvertedData数组都分配在RAM中,RAM区域情况如下表所示。
4.png
STM32H7内部包含三个域,每个区域中含有总线矩阵,具有不同的DMA主设备支持。不同区域DMA主设备能够访问的空间不同,如下表所示(下表摘自RM0433,更多详细介绍请参考RM0433)。其中,红色框中表示DMA1不支持对DTCM区域的访问。绿色框中,表示DMA1支持对SRAM1/2/3/4,后备SRAM和AXI SRAM的访问。
上述不同的工程配置,分别将aADCxConvertedData分配至DMA1不能访问的DTCM区域和DMA1能够访问的AXI SRAM区域。 从而出现描述的现象。
5.png

9 ^. U$ ]6 ^+ V$ R. i8 W& l
四、解决方法
通过上述分析,问题产生的原因在于DMA1 访问了无法访问到的地址。
介绍两种解决方法,方法一,通过原因分析中描述的方法,在工程中指定RAM使用空间实现目标地址(访问的数组)落在支持的RAM区域。方法二,通过在数组定义时,强制分配至支持的RAM空间区域,如下所示。
55.png
小结
STM32H7相对于之前STM32系列,具有更灵活,更多样的内存区域,以及总线矩阵。带来应用灵活性提升的同时,也一定程度上增加了使用的复杂度。用户在进行STM32H7开发时,要注意各区域和多区域之间应用实现的实际情况。在遇到问题时,可与ST提供的大量例程进行比对,并结合数据手册和参考手册,进行问题的定位和解决。
参考文档
RM0433
STM32H743/753 and STM32H750 advanced ARM®-based 32-bit MCUs
DS12110        
32-bit Arm® Cortex®-M7 400MHz MCUs, up to 2MB Flash,1MB RAM, 46 com. and analog interfaces
+ p6 f: S& W# o
收藏 2 评论0 发布时间:2019-12-20 00:25

举报

0个回答

所属标签

相似分享

官网相关资源

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