STM32H7 BDMA应用示例
有人利用STM32H743系列芯片做开发,他想使用片内BDMA将GPIO的数据读到内存,并通过LPTIM触发DMA传输时却遇到点麻烦,发现总是实现不了。这里我简单介绍下实现过程,并做些提醒。
STM32H7系列的时钟系统以及内部总线、功能框架相比其它M3/M4内核的STM32芯片要负责不少。整个芯片根据运行时钟高低及总线架构大致分为3个区域,其中BDMA位于区域3即D3域。
在STM32H7系列参考手册中有下面的一副系统功能框图:
我们在上图的右下角可以看到BDMA,而且BDMA只能访问AHB4\APB4总线上的外设和SRAM4及备份SRAM. 另外,我们还可以从手册上进一步了解到,GPIO外设都是挂在AHB4总线上的。
结合上面介绍可知,现在既然使用BDMA,内存RAM就不能选择SRAM4和备份RAM以外的区域,否则BDMA鞭长莫及而访问不到他们。这是要注意的地方。
另外,这里需要用到LPTIM2的输出事件来触发DMA请求,要使用DMAMUX并完成相关配置。
配置LPTIM2让它可以产生周期性输出事件即可,实际参数视具体应用而拟定。
现在对BDMA做些配置,如下图示。LPTIM2的每次输出事件申请一个DMA请求。
另外,我还配置了GPIOC的几个管脚,以便做测试。这里就不贴配置截图了。
把时钟系统配置完后就可以基于STM32CubeIDE和STM32Cube库的工程。
再添加几行用户代码就可以着手测试。添加的函数代码分别是关于开启DMAmux、启动DMA传输和启动LPTIM2的操作。
LPTIM_HandleTypeDef hlptim2;
DMA_HandleTypeDef hdma_bdma_generator0;
这里我把GPIO_INData[]数组地址指定到了BDMA可以访问到的SRAM4.,它对应STM32CubeIDE链接文件里的RAM_D3。
最后验证结果,我们可以看到BDMA从GPIOC端口读到的数据。
整体来讲,实现起来比较简单,重点注意BDMA可以访问哪些地方弄清楚,在指定内存地址这个地方不同IDE环境操作上略有差异。再就是要用到LPTIM周期性事件申请DMA请求来实现传输。
好,今天的话题就聊到这里,供有需要的人参考。
*************************
往期话题阅读链接:
1、让CDC类USB设备批量接收64字节以上数据
2、STM32CubeMx的配置顺序与DMA传输异常
3、远程修改STM32 TIMER占空比的方案续1
4、一使能定时器中断就立即进中断?
5、STM32H7芯片SDRAM地址问题
STM32H7 BDMA应用示例相关推荐
- STM32H7 DAC2+BDMA
最近准备用H7做一个小东西需要用到DAC2生成波形,本以为很简单的事,只需把之前在F4上做的例子搬过来就好,但是发现实际上有个坑. 之前的想法是DAC + DMA + TIM6 Trig,但是发现DA ...
- STM32H7的FDCAN
一.介绍 FDCAN(Flexible Data-Rate CAN)是CAN的升级版.特点包括: 1.每帧数据段最大长度由8字节上升到64字节. 2.速度由1Mbps上升到5Mbps,甚至还可以更高. ...
- STM32H7时钟树RCC分析---原理讲解(一)
STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0.M3.M4和 M7 这几种,每个内核又大概分为主流.高性能和低功耗. 用HAL库配置请看:STM32H7时钟树分析- ...
- STM32H7 DMA阅读笔记
DMA阅读笔记 DMA 的主要特性 DMA 功能描述 FIFO FIFO flush Direct Mode DMA 传输 Peripheral-to-memory mode Memory-to-pe ...
- stm32h7内存分配_【STM32H7教程】第25章 STM32H7的TCM,SRAM等五塊內存基礎知識
第25章 STM32H7的TCM,SRAM等五塊內存基礎知識 本章教程為大家介紹STM32H7帶的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和備份 ...
- STM32H7的CAN FD教程笔记
CAN FD(CAN with flexible data-rate)是CAN2.0协议的扩展,CAN-FD由博世开发,并由 ISO 11898-1:2015标准化. 目录 一.CAN FD协议介绍 ...
- 【STM32H7教程】第90章 STM32H7的CAN FD总线之关键知识点整理
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第90章 STM32H7的CAN FD总线之关键知 ...
- STM32H743 ADC1+DMA1 ADC3+BDMA CubeMX配置使用
文章目录 前言 STM32CubeMX配置 ADC DMA工作流程注意事项 相关代码和测试结果 内存分配 采样率计算 内部温度传感器 参考 前言 前段时间被STM32H7的以太网和printf坑的不行 ...
- 基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【一】
基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 [一] 一. 想法概述 1. 想法由来 2. 系统架构 3. 系统选型 4. 开发语言 5. 涉及到的框架 6. 开发工具 7. ...
最新文章
- airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
- android自定义View-垂直滚动的TextView
- 前端学习(763):变量属性函数方法的区别
- c语言 数组循环移动,如何将一个数组的元素循环左移?
- Flask+Gunicorn(协程)高并发的解决方法探究
- 导出一条数据_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...
- Vrep学习笔记(一)
- 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
- 吸引人的软文标题究竟有哪些
- ssm基于微信小程序的物流仓储系统vue
- 【哈密顿图】算法分析
- 回顾Win10自带表情包快捷键
- JavaScript ( 预解析 )
- openwrt 内网域名 解析错误
- 【看表情包学Linux】GDB 调试教学 | gcc 和 g++ | 函数库
- UI 自动化的页面对象管理工具之实现思路
- MOOC《基础和声》笔记
- Round Robin算法的简单C#实现
- Android破解与防破解
- Auto.js简单使用
热门文章
- android中Zing二维码扫描,二维码生成
- mybatis官方文档中文版
- Ogg For Bigdata 同步Oracle数据到KAFKA(包括初始化历史数据)
- 数据结构之树的相关名字解释
- 翁恺老师c语言课程笔记
- Revo Uninstaller专业版
- 淘宝装修之模块之间有间隙(淘宝装修一)
- commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析
- border设置1px看起来很粗问题
- html实现播放器下一集方法,本地化DPLAYER和CKPLAYER播放器自动下一集