0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

工程师笔记|TIM DMA burst 输出变频 PWM 波形

STM32单片机 来源:未知 2022-12-26 20:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关键词:TIM, GPDMA

目录预览

1.问题背景

2.TIM DMA burst

3.产生 PWM

4.结论

1.问题背景

客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有 TIM1/TIM8 高级定时器,还有通用定时器TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。

TIM 模块中,可通过修改 ARR 寄存器的值来修改 PWM 的频率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,则可以通过修改 RCR 与 CCR 寄存器,来控制脉冲个数及占空比。由于要同时修改多个 TIM 寄存器,需要使用 TIM 的 DMA burst 功能来实现此需求。

2.TIM DMA burst

STM32 片内部分 TIMER 在产生单个定时器事件情况下可以基于特定硬件机制触发多个 DMA 请求,这样产生多个连续的 DMA 传输来实现对多个 TIMER 寄存器的批量访问。

这就是所谓的 TIM DMA burst 功能,这里有两个专用寄存器:

TIMx_DCR :DBSS : 触发 DMA burst 的事件源DBL : DMA burst 传输个数 DBA : DMA burst 传输的 TIM 寄存器基地址索引

TIMx_DMAR :TIM DMA Burst 时,DMA 访问此寄存

3.产生 PWM

本文使用 TIM1 来产生 PWM,在 U575 NECLEO 板上测试,MCU 主频为 100MHz。

使用两个频率分别对应 TIM 寄存器组的值如下:ARR/ RCR/ CCR1

uint32_t pulse1[3] = {1000, 2, 500} ;

uint32_t pulse2[3] = {5000, 1, 2500} ;

即输出 3 个 pulse1 的脉冲后,再输出 2 个 pulse2 脉冲,这样交替输出。

3.1.1. TIM1 配置

TIM1 配置如下,使能寄存器预装载功能。

3de6edb0-8514-11ed-bfe3-dac502259ad0.png

3.1.2. GPDMA 配置

使用 GPDMA 通道 12 的 linked list 模式,并配置为循环模式:

3df8049c-8514-11ed-bfe3-dac502259ad0.png

Linked List 配置中,创建一个 list queue,并添加两个 list node,选择 GPDMA 来执行此 list queue,同样配置为循环模式,指定循环起始节点为 TN1,如下图。

3e112e22-8514-11ed-bfe3-dac502259ad0.png

Linked List 节点配置中,使用 TIM1 update 事件来产生 DMA 请求,指定 DMA 目的地址为 TIMx_DMAR 寄存器,源地址为 pulse1 数组地址。TN2 只需将 pulse1 修改为 pulse2即可。

3e2a4d62-8514-11ed-bfe3-dac502259ad0.png

3.1.3. TIM DMA burst

在 CubeMX 生成代码后,添加以下代码,将 TIM 与 DMA 通道绑定,并配置TIMx_DCR 寄存器:

3e430de8-8514-11ed-bfe3-dac502259ad0.png

3.1.4. 测试结果

测试结果如下图,可以看到两个频率的 PWM 波形交替输出,且脉冲个数也符合需求:

3e5ae9c2-8514-11ed-bfe3-dac502259ad0.png

本篇工程师笔记主要通过在TIM 模块中,修改 ARR 寄存器的值来修改 PWM 的频率满足客户需要 MCU 输出一组变频的 PWM 波形控制外围器件的需求。由于文章篇幅有限,完整内容请点击“阅读原文”下载原文档阅读。

3e73f444-8514-11ed-bfe3-dac502259ad0.png

长按扫码关注公众号

更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:工程师笔记|TIM DMA burst 输出变频 PWM 波形

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663419
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371112

原文标题:工程师笔记|TIM DMA burst 输出变频 PWM 波形

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    硬件工程师面试必会:10个核心考点#硬件设计 #硬件工程师 #电路设计 #电路设计

    硬件工程师
    安泰小课堂
    发布于 :2025年09月23日 18:00:33

    103rc rt-studio TIM4 CH2输出PWM不正常怎么解决?

    : RT-Thread Studio 输出PWM详细教程 配置TIM4的CH2、CH4均无法正常输出pwm,以下是配置过程 rtthrea
    发表于 09-16 08:20

    如何测量变频输出电压

    变频输出电压的测量是电力电子和工业自动化领域的重要技术环节。由于变频输出的是高频PWM(脉宽调制)
    的头像 发表于 07-13 17:44 1583次阅读
    如何测量<b class='flag-5'>变频</b>器<b class='flag-5'>输出</b>电压

    做了电子工程师之后,最好拍的视频出现了#硬件设计 #电子DIY #电子工程师

    电子工程师
    安泰小课堂
    发布于 :2025年06月24日 17:45:57

    问,成为硬件工程师需要几只手?#硬件工程师 #YXC晶振 #扬兴科技 #搞笑

    硬件工程师
    扬兴科技
    发布于 :2025年04月25日 17:15:37

    搞SK6812灯珠的控制,选择了PWM+DMA的方式,遇到的问题求解决

    最近在搞SK6812灯珠的控制,选择了PWM+DMA的方式,在执行HAL_TIM_PWM_Start_DMA的时候能看到长度和数据都是我配置的值: 但是输出波形就是不对:
    发表于 04-23 07:44

    硬件工程师:回答我!#回答我 #硬件工程师 #YXC晶振 #扬兴科技

    硬件工程师
    扬兴科技
    发布于 :2025年03月25日 18:46:59

    一招拿捏电子工程师#被AI拿捏了 #电子工程师 #电子电工

    电子工程师
    安泰小课堂
    发布于 :2025年03月25日 17:30:51

    STM32F103 TIM1_CH3N输出PWM波形为什么会多出一个边沿?

    红色为TIM1_CH3N,绿色为TIM1_CH3,为什么TIM1_CH3N输出PWM波形会多
    发表于 03-13 06:58

    stm32同一个定时器不同的通道,可以不同时的输出pwm波形吗?

    请问,stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗?比如tim1的ch1输出,延时几毫秒后
    发表于 03-07 08:20

    如何使用TIM2的更新事件触发TIM1的PWM DMA

    3个表格去实现3路PWM的占空比控制,且每路相位相差120度,然后我使用TIM2的更新事件去触发TIM1的PWM DMA更新,也就是比如我设
    发表于 03-07 07:34