有人利用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应用示例相关推荐

  1. STM32H7 DAC2+BDMA

    最近准备用H7做一个小东西需要用到DAC2生成波形,本以为很简单的事,只需把之前在F4上做的例子搬过来就好,但是发现实际上有个坑. 之前的想法是DAC + DMA + TIM6 Trig,但是发现DA ...

  2. STM32H7的FDCAN

    一.介绍 FDCAN(Flexible Data-Rate CAN)是CAN的升级版.特点包括: 1.每帧数据段最大长度由8字节上升到64字节. 2.速度由1Mbps上升到5Mbps,甚至还可以更高. ...

  3. STM32H7时钟树RCC分析---原理讲解(一)

    STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0.M3.M4和 M7 这几种,每个内核又大概分为主流.高性能和低功耗. 用HAL库配置请看:STM32H7时钟树分析- ...

  4. STM32H7 DMA阅读笔记

    DMA阅读笔记 DMA 的主要特性 DMA 功能描述 FIFO FIFO flush Direct Mode DMA 传输 Peripheral-to-memory mode Memory-to-pe ...

  5. stm32h7内存分配_【STM32H7教程】第25章 STM32H7的TCM,SRAM等五塊內存基礎知識

    第25章       STM32H7的TCM,SRAM等五塊內存基礎知識 本章教程為大家介紹STM32H7帶的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和備份 ...

  6. STM32H7的CAN FD教程笔记

    CAN FD(CAN with flexible data-rate)是CAN2.0协议的扩展,CAN-FD由博世开发,并由 ISO 11898-1:2015标准化. 目录 一.CAN FD协议介绍 ...

  7. 【STM32H7教程】第90章 STM32H7的CAN FD总线之关键知识点整理

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第90章       STM32H7的CAN FD总线之关键知 ...

  8. STM32H743 ADC1+DMA1 ADC3+BDMA CubeMX配置使用

    文章目录 前言 STM32CubeMX配置 ADC DMA工作流程注意事项 相关代码和测试结果 内存分配 采样率计算 内部温度传感器 参考 前言 前段时间被STM32H7的以太网和printf坑的不行 ...

  9. 基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【一】

    基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 [一] 一. 想法概述 1. 想法由来 2. 系统架构 3. 系统选型 4. 开发语言 5. 涉及到的框架 6. 开发工具 7. ...

最新文章

  1. airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
  2. android自定义View-垂直滚动的TextView
  3. 前端学习(763):变量属性函数方法的区别
  4. c语言 数组循环移动,如何将一个数组的元素循环左移?
  5. Flask+Gunicorn(协程)高并发的解决方法探究
  6. 导出一条数据_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...
  7. Vrep学习笔记(一)
  8. 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
  9. 吸引人的软文标题究竟有哪些
  10. ssm基于微信小程序的物流仓储系统vue
  11. 【哈密顿图】算法分析
  12. 回顾Win10自带表情包快捷键
  13. JavaScript ( 预解析 )
  14. openwrt 内网域名 解析错误
  15. 【看表情包学Linux】GDB 调试教学 | gcc 和 g++ | 函数库
  16. UI 自动化的页面对象管理工具之实现思路
  17. MOOC《基础和声》笔记
  18. Round Robin算法的简单C#实现
  19. Android破解与防破解
  20. Auto.js简单使用

热门文章

  1. android中Zing二维码扫描,二维码生成
  2. mybatis官方文档中文版
  3. Ogg For Bigdata 同步Oracle数据到KAFKA(包括初始化历史数据)
  4. 数据结构之树的相关名字解释
  5. 翁恺老师c语言课程笔记
  6. Revo Uninstaller专业版
  7. 淘宝装修之模块之间有间隙(淘宝装修一)
  8. commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析
  9. border设置1px看起来很粗问题
  10. html实现播放器下一集方法,本地化DPLAYER和CKPLAYER播放器自动下一集