宽城| 代县| 衡东| 天长| 富平| 乌拉特前旗| 崇礼| 龙川| 垫江| 上饶市| 博乐| 荔波| 覃塘| 蕲春| 仁化| 灵寿| 灵丘| 平原| 崇义| 抚远| 沁阳| 成都| 十堰| 安福| 吉木萨尔| 贵州| 思南| 伊吾| 夹江| 召陵| 茌平| 祁县| 云南| 云龙| 济南| 顺平| 双城| 台北市| 辉县| 泰宁| 泗洪| 名山| 容县| 鹿泉| 丹东| 新安| 永仁| 凤庆| 武城| 甘谷| 徐水| 金佛山| 太白| 翼城| 马尔康| 郾城| 宝安| 召陵| 延津| 玉林| 崇义| 沙坪坝| 郏县| 福山| 娄烦| 东营| 宝丰| 凤山| 突泉| 杞县| 孙吴| 永川| 东方| 鹤峰| 琼海| 冕宁| 陇县| 杭锦后旗| 沭阳| 华池| 庆云| 封丘| 翁源| 渑池| 西宁| 西吉| 化州| 雷波| 郯城| 昌乐| 大新| 珙县| 建德| 德江| 北辰| 台州| 鹤峰| 召陵| 上思| 昌都| 利津| 邹平| 达县| 双流| 新邵| 澄迈| 贵池| 六合| 阳信| 远安| 宣城| 竹溪| 巴林左旗| 古冶| 察哈尔右翼前旗| 炎陵| 十堰| 瑞丽| 临县| 河池| 阳东| 平泉| 大姚| 灵山| 会同| 铁山港| 广丰| 醴陵| 开封市| 水城| 日喀则| 天峨| 陕西| 弥勒| 贺兰| 安塞| 曲水| 大姚| 琼海| 保山| 九台| 上高| 宜宾县| 临夏县| 息烽| 兴文| 仙游| 禹州| 湘潭县| 正定| 苏尼特左旗| 德昌| 泉州| 双辽| 二道江| 扬中| 闵行| 阳信| 连江| 台北市| 礼泉| 遂溪| 太仆寺旗| 中山| 通化市| 佛冈| 湘东| 小河| 天门| 合山| 和田| 遂川| 贵阳| 台南县| 沐川| 崇阳| 建瓯| 同仁| 宝山| 广德| 行唐| 清水| 满洲里| 下陆| 仁怀| 南靖| 子洲| 姜堰| 娄烦| 新安| 芦山| 阿荣旗| 南山| 休宁| 冠县| 浦江| 台安| 兴义| 西丰| 藤县| 桃江| 台湾| 寿光| 阆中| 常州| 安龙| 义县| 老河口| 砀山| 浠水| 津市| 扎囊| 华坪| 龙泉驿| 曹县| 化隆| 崂山| 普格| 太仓| 钟祥| 北票| 阿坝| 赣州| 福安| 镇沅| 疏附| 科尔沁左翼中旗| 石首| 杭锦旗| 竹山| 南溪| 资阳| 烟台| 法库| 开县| 隆昌| 南海| 日照| 临沭| 荆门| 廉江| 大宁| 图木舒克| 壤塘| 苍梧| 神农顶| 鲁甸| 双桥| 灌阳| 临海| 通山| 衡水| 陇川| 威远| 饶平| 单县| 什邡| 宁阳| 鄄城| 白山| 绥化| 固安| 岚皋| 上甘岭| 澳门明升官网
发 帖  

[经验] STM32H7 DMA传输异常案例分析

3 天前  141 STM32 DMA adc
分享
0
<span style="" >前言

利用 ST 提供的辅助开发工具 STM32CubeMX,可以快速开发 STM32 应用。在本文中讨论的 ADC 应用,同样是建立在STM32CubeMX 生成工程的基础上。具体为在 STM32H743ZI 上,利用 DMA 自动实现 ADC 数据周期采集和转移,在采集指定数量的采样值后产生中断,对数据进行处理。文中仅对上述实现过程中出现的一种异常,进行介绍和分析。不涉及具体的 ADC 采集和处理实现的介绍。
一 实验环境
硬件平台:Nucleo-H743ZISTM32CubeMX 版本:v4.28.0STM32CubeH7 版本:v1.2.0IDE: MDK-ARM v5.25.2.0 (优化级别 Level3)首先利用 STM32CubeMX 生成 ADC 应用的初始化工程,涉及的配置如下所示:

然后在工程中增加对 ADC 周期采集和 DMA 传输实现的命令,如下所示。并且增加回调函数内容,本文中实现仅添加了空指令。在调试过程中,在空指令处增加断点,判断 ADC DMA 传输半完成和传输完成中断是否正常进入。

注: 如果在编译链接的过程中,出现没有定义 ECC_IRQn 提示,需将 stm32h7xx_hal_msp.c 中对HAL_NVIC_SetPriority(ECC_IRQn, 0, 0);的调用移除。
二 异常现象
在运行过程中,无法进入 HAL_ADC_ConvHalfCpltCallback 和 HAL_ADC_ConvCpltCallback 回调函数(分别对应 DMA
传输半完成和传输完成回调函数)。跟踪中断服务函数,发现在首次 DMA1 传输后,DMA_LISR 寄存器值为 0x8。即 TEIF0 置位,Stream 0 出现传输错误。
三 原因分析
根据错误信息,问题可能与 DMA 1 传输错误有关。重点围绕 DMA1 传输配置, 进行检查,并没有发现异常。不过,同样的初始化配置和执行命令,放置在 ADC 例程(路径: STM32Cube_FW_H7_V1.2.0\Projects\STM32H743ZINucleo\Examples\ADC\ADC_DMA_Transfer),进行编译链接后,能够正常执行。比对两者间的工程配置,发现在 RAM 分配上存在差异。下图为 STM32CubeMX 生成工程中,对应的 RAM 分配情况。与此对应,例程中 RAM 分配至 IRAM2 (0x24000000)。

打开.map 文件可以看到:a. 配置至 IRAM1 时:aADCxConvertedData 0x200000b4 Data 64 main.o(.bss)b. 配置至 IRAM2 时:aADCxConvertedData 0x240000b4 Data 64 main.o(.bss)而 aADCxConvertedData 数组设置为 DMA 目标地址。问题定位为 DMA 目标地址引起的异常。aADCxConvertedData 数组都分配在 RAM 中,RAM 区域情况如下表所示。

STM32H7 内部包含三个域,每个区域中含有总线矩阵,具有不同的 DMA 主设备支持。不同区域 DMA 主设备能够访问的空间不同,如下表所示(下表摘自 RM0433,更多详细介绍请参考 RM0433)。其中,红色框中表示 DMA1 不支持对DTCM 区域的访问。绿色框中,表示 DMA1 支持对 SRAM1/2/3/4,后备 SRAM 和 AXI SRAM 的访问。上述不同的工程配置,分别将 aADCxConvertedData 分配至 DMA1 不能访问的 DTCM 区域和 DMA1 能够访问的 AXISRAM 区域。从而出现描述的现象

四 解决方法
通过上述分析,问题产生的原因在于 DMA1 访问了无法访问到的地址。介绍两种解决方法,方法一,通过原因分析中描述的方法,通过在工程中,指定 RAM 使用空间实现目标地址(访问的数组)在支持的 RAM 区域。方法二,通过在数组定义时,强制分配至支持的 RAM 空间区域,如下所示。uint16_t aADCxConvertedData[BUFFER_SIZE] __attribute__((section(".ARM.__at_0x24000000")));其中 __attribute__((section(".ARM.__at_address")))是被 MDK-ARM 支持的,指定对应空间的方式。
小结
STM32H7 相对于之前 STM32 系列,具有更灵活,更多样的内部区域,以及总线矩阵。带来应用灵活性提升的同时,也一定程度上增加了使用的复杂度。用户在进行 STM32H7 开发时,要注意各区域和多区域之间应用实现的实际情况。在遇到问题时,可与 ST 提供的大量例程进行比对,并结合数据手册和参考手册,进行问题的定位和解决。参考文档
RM0433 STM32H743/753 and STM32H750 advanced ARM?-based 32-bit MCUsDS12110 32-bit Arm? Cortex?-M7 400MHz MCUs, up to 2MB Flash,1MB RAM, 46 com. and analog interface


相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册
标签:妹妹网 澳门威尼斯人官网 衡阳市农科所

发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
黄庄街道 浒路 石头胡同 关门山乡 青峰山乡
樟崎村口 衡山路高安路 邵公庄后大街 武定 江益镇
澳门赛马会赌场网站 威尼斯人平台 澳门庄闲游戏娱乐 澳门威尼斯人官方网址 澳门庄闲网站
mg电子开户 澳门二十一点游戏 拉斯维加斯线上网站 澳门百老汇娱乐官网 捕鱼游戏在线玩
二八杠玩法 澳门葡京国际 现金网论坛 澳门信誉赌场 澳门银河手机版网址
大小点游戏官网 澳门威尼斯人官网 澳门葡京赌场注册 网上赌场代理 澳门葡京赌场
老虎机定位器 澳门大富豪网址 现金三公注册网址 牛牛游戏下载 现金骰宝 年度十大电子游戏 大小点游戏 玩什么游戏可以挣钱 电子游戏厅 方法奇葩赌博网 巴黎人网站 pt电子游戏哪个最会爆 澳门巴黎人游戏 澳门龙虎斗注册 澳门大富豪网站 押大小排行 真钱打牌 明升网站 十三水技巧 电子游戏下载 二十一点平台 现金网游戏开户平台 澳门百老汇游戏官网 皇博压大小 真钱捕鱼 跑马机游戏 赌博技巧 巴比伦赌场官网 现金三公 地下网址 捕鱼游戏技巧 英皇网站 手机玩游戏赚钱平台 现金网排行 pt电子游戏注册 赌博技巧 电脑玩游戏赚钱平台 海立方游戏 ag电子游戏排行 希尔顿官网 太阳网上压大小 现金赌钱游戏 现金棋牌游戏 真人网站网址 地下开户 九五至尊娱乐网址 澳门梭哈游戏官网 奇葩袖赌博网 鸿胜国际压大小 博狗扑克游戏 德州扑克游戏规则 庄闲代理 奔驰宝马老虎机下载 现金三公开户注册 免费试玩电子游戏 GT压大小 新濠天地注册 现金老虎机网站 纸牌赌博种类 乐天堂开户 澳门永利平台 电脑版捕鱼达人 玩电子游戏入门 斗牛游戏 bbin压大小 网上电子游戏网址 澳门网络下注平台 明升国际网址 明升娱乐 捕鱼达人电子游戏 mg电子游戏试玩 二十一点游戏赌场 澳门万利赌场官网 大小对比网站 现金电子游戏 电子游戏实用技术 老虎机破解器 澳门梭哈官网 澳门百老汇赌场注册 千炮捕鱼兑换现金 网上合法赌场 PT电子游戏 波克棋牌官方下载 天天棋牌 凤凰棋牌 美少女战士电子游戏 什么游戏可以赚人民币 银河国际娱乐 澳门番摊官网 澳门梭哈官网 胜博发电子游戏 电子游戏打鱼机 澳门现金网 大三巴网站 PT电子游戏 澳门银河国际娱乐