介绍一篇基于DMAMUX同步事件的应用演示

发布者:火星叔叔最新更新时间:2023-11-02 来源: elecfans关键字:STM32家族 手机看文章 扫描二维码
随时随地手机看文章

STM32家族中的很多系列,比如STM32G0/STM32G4/STM32L4+/STM32H7等都内置了DMAMUX模块。有了它一方面使得DMA请求与DMA控制器之间的映射关系更为灵活方便,同时也大大拓展了DMA请求事件,不再局限于外设事件,比方可以基于GPIO的外部中断事件、或者DMA事件本身来触发DMA传输。另外,DMA传输的实现还可以基于其它触发事件来同步其操作,即DMA传输的实现需要借助其它同步事件来真正启动。


本文就基于STM32G4芯片简单介绍下该话题,这里要实现的功能大致是这样的:片内低功耗定时器LPTIM1的定时输出作为DMAMUX的DMA同步输入事件,该同步事件触发UART的DMA传输,通过UART输出一段字符。


本演示例程基于STM32G4系列的Nucleo板进行。低功耗定时器LPTIM工作在PWM输出模式,DMAMUX基于LPTIM每次的定时输出事件为UART2申请一定数目的DMA请求,然后DMA将数据从内存送到UART的数据寄存器并最终将内容显示在PC串口终端。


下面就直接使用STM32CubeMx进入配置过程。

通过CubeMx神器做基本的初始化配置【RCC配置此处就省略了】。

LPTIM1的参考配置如下,具体应用时请结合实际情况来定,这里只需能产生周期性定时输出即可。

UART2外设没有什么特别要提醒的,这里就不贴截图了。我们重点看看有关UART TX的DMA传输的相关配置。

上图中蓝色圈里的勾选框对于本应用演示不是必须勾选的,勾选了也没关系,不会对本演示产生影响。DMA请求数设置为21,表示每检测到1个同步事件后DMAMUX为UART传输申请21个DMA请求,以批量传输21个字符“STM32 DMA SYNCDEMO ”。

完成图形化配置后,生成初始化代码并添加必要的用户代码。

#definePeriodValue (1000)

#define PulseValue (500)

#define Size (21)

uint8_tpData[Size]={‘S’,‘T’,‘M’,‘3’,‘2’,‘ ’,‘D’,‘M’,‘A’,‘ ’,

‘S’,‘Y’,‘N’,‘C’,‘’,‘D’,‘E’,‘M’,‘O’,‘ ’,‘ ’};

HAL_LPTIM_PWM_Start(&hlptim1, PeriodValue, PulseValue) ;

HAL_UART_Transmit_DMA(&huart2, pData, Size);

编译运行,验证结果。

45dfbd00-fc1f-11eb-9bcf-12bb97331649.png

代码运行后,可以通过示波器看到LPTIM的周期性PWM输出,同时PC端也可以看到如上面截图所示的周期性呈现的字符串。


OK,本次基于DMAMUX同步事件的应用演示就介绍到这里,供君参考,更多细节还请阅读STM32相关技术手册。


关键字:STM32家族 引用地址:介绍一篇基于DMAMUX同步事件的应用演示

上一篇:如何选择合适的MCU
下一篇:一个定时器输出4路不同频率波形的应用示例

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved