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);
编译运行,验证结果。
代码运行后,可以通过示波器看到LPTIM的周期性PWM输出,同时PC端也可以看到如上面截图所示的周期性呈现的字符串。
OK,本次基于DMAMUX同步事件的应用演示就介绍到这里,供君参考,更多细节还请阅读STM32相关技术手册。
上一篇:如何选择合适的MCU
下一篇:一个定时器输出4路不同频率波形的应用示例
设计资源 培训 开发板 精华推荐
- TDA8768AH-12位高速A/D转换器演示板
- LTC3838IUHF-1 4.5V 至 26V 输入、1.2V/15A 和 1.5V/15A 双路输出、350kHz、DCR 检测、DTR 使能、降压转换器的典型应用电路
- 使用 Analog Devices 的 LT3091ER 的参考设计
- DK-DEV-3CLS200NES,Cyclone III LS FPGA 开发板为低功耗开发和原型设计提供硬件平台
- 电动代步车NFC门禁和电池通信
- LT6656BIS6-1.25、1.25V 低功率精密高压电源监视器的典型应用
- LTC7812HUH 宽输入范围至 12V/8A 低 IQ、级联升压+降压稳压器 (VMID = 16V) 的典型应用电路
- LTC3119MPFE 5V、2MHz 宽输入稳压器的典型应用电路
- 使用 RP40-483.3SFR DC/DC 转换器并根据 EN55022 A 类(单输出)进行 EMC 滤波的典型应用
- LM3481高效变压器辉光管升压模块
- Maxim 有奖直播:支持工业系统的集成数字IO技术
- 有奖直播报名:TI DLP®技术在汽车行业的创新应用——增强型抬头显示
- 共抗疫情,少出门多学习。领取下载积分,让学习资料到你碗里!
- 100%获奖,EE新年福利!
- 2016 TI 电机驱动研讨会资料大放送,不容错过!
- 有奖直播【如何在几分钟之内完成高效可靠的USB PD电源设计——PI Expert™分步教程】(9:30开始入场)
- 以科技之力,成就安全 PI与您一起驾驭明天的智慧 答题赢好礼!
- 直播|基于英特尔® Agilex™ FPGA F-Tile的以太网硬核IP详解及如何使用oneAPI对FPGA编程
- 学习赢京东卡 | 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势