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

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

3天内不再提示

定时器实现3路时差和占空比可调的波形

茶话MCU 来源:ST MCU 信息交流 2019-11-20 14:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有人想实现下面的PWM输出波形,三路频率相同,占空比同步可调,且三路输出波形时差固定为T/3。【下图中橙色斜线是计数器周期性计数变化曲线示意图】之前有过类似的话题交流,这里就整个实现过程再做下演示,并尽可能介绍详细点。

这里使用STM32F302_Nucleo板来实现之。使用STM32常规定时器中的高级定时器TIM1来实现。当然,也并非一定要TIM1,其它支持多通道比较输出且比较事件能触发DMA的都可以。

其中,第一路使用TIM1_CH1,使用PWM1输出模式,第二路使用TIM1_CH2,第三路使用TIM1_CH3,这两路都使用Match Toggle输出模式。

在TIM1更新中断里修改通道1的CCR值,为修改CH2/CH3的CCR值做准备,最终通过CH2/CH3各自的比较事件触发DMA,依靠DMA写入CC2和CCR3寄存器而完成修改。注意,此时CH2/CH3通道的CCR寄存器预装功能必须关闭。

一、基于STM32CubeMx的配置如下:

二、准备相关用户代码

主要准备上面几句,代码是我基于STM32Cube库而编写。

上面的第1/2句清除TIM1的更新中断标志,有些情况下没有这两句会给我们带来些麻烦或困惑。主要是防止一使能定时器更新中断或相关DMA请求就进入中断服务程序或触发DMA传输,更多细节在之前文章中有详细介绍过。这里就不重复了。

第3句、第4句、第6句功能差不多,开启相应通道的比较输出功能,其中开启了基于CH2/CH3的比较事件的DMA触发使能,并完成相关配置。

特别提醒第5句,这句是跟库代码有关联的。库代码目前在调用定时器的DMA配置时,目前来看应该说有个bug,调用某个通道的DMA配置函数后,需要将状态改为ready后才能有效调用后续其它通道的DMA配置函数。当然,我们如果不使用Cube库代码就不用这句了。

第7句只有TIM1/TIM8高级定时器才需要使用它,开启TIM1/TIM8的主输出功能。

另外,准备了跟DMA传输有关的两个内存数组。其中红色下划线的数据在实际运行过程中会被动态修改而调整占空比。

在TIM1更新中断里同步修改各个通道CCR的值,参考代码如下。其中,Count_Update和i为两个静态字节变量。这里每发生256次更新事件后分别对3个通道的CCR值做一次修改。【具体使用中你可以自行根据具体需求来设计,这里仅供演示参考。贴出原始代码主要是为了帮助理解整个思路。】

三、验证最后结果。

上面三幅图是3路PWM输出信号在不同时间点的截图,频率固定,相差固定,占空比在改变。当然,我们也可以通过选择合适的时间点来修改ARR值及通道2/通道3的初始相位值,以灵活调整输出波形的频率与相差。总之,STM32定时器的比较切换模式,再结合DMA的话,是个非常灵活好用的PWM输出的实现方式,值得研究学习下。

当然,如果使用3个定时器建立主从关系,各拿出一个通道来实现上述输出也很方便。有兴趣的话,也可以试试。

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

    关注

    116

    文章

    5847

    浏览量

    223809
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371145
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121741

原文标题:一个定时器实现3路时差和占空比可调的波形

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32A030微控制定时器

    组成,并由一个可编程的预分频驱动。 ATIM 支持6 个独立的捕获/ 比较通道,可实现6 独立PWM 输出或3 对互补PWM 输出或对6
    发表于 12-04 06:47

    CW32L010+定时器介绍

    和预分频系数,可以实现精确的定时控制。例如,在闹钟应用中,可以使用定时器来设置闹钟的响铃时间。 PWM输出:高级控制PWM定时器支持PWM输出功能,通过改变分频比和
    发表于 12-01 07:53

    CW32L0开发板学习记录四,高级定时器ATIM学习

    通道,可以测量输入信号的脉冲宽度(输入捕获)或者产生输出波形(输出比较和 PWM)。 低功耗定时器(LPTIM): 内部集成1个 16 位低功耗定时器(LPTIM),可以以很低的功耗实现
    发表于 12-01 07:35

    CW32定时器及中断介绍

    / 比较通道,可实现 6 独立 PWM 输出或 3 对互补 PWM 输出或对 6 输入进行捕获。可 用于基本的定时 / 计数、测量输入
    发表于 12-01 07:08

    PWM、定时器、SysTick 区别及应用场景

    。下面我们来梳理清楚。一、基本概念定时器(Timer)MCU内最基础的计数外设,通过计数时钟周期实现定时、计数功能。多数MCU内部有多个通用定时器,可配置为
    的头像 发表于 11-17 10:53 222次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1329次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    定时器同步之并行模式

    事件作为 TRGOUT 源,用于触发两个从定时器。TMR3 和 TMR4 作为从定时器,开启挂起模式用于与主定时器进行同步。并且使能 TMR2_CH1,TMR
    发表于 09-22 09:56

    ‌TPL5010-Q1 纳米功耗系统定时器(带看门狗功能)技术文档摘要

    TPL5010-Q1 Nano 定时器是一款低功耗、符合 AEC-Q100 标准的定时器,带有看门狗 该功能非常适合占空比或电池供电应用中的系统唤醒。在这样的系统中 微控制
    的头像 发表于 09-13 10:01 1256次阅读
    ‌TPL5010-Q1 纳米功耗系统<b class='flag-5'>定时器</b>(带看门狗功能)技术文档摘要

    DS160PT801 PCIe 4.0 16通道重定时器技术解析与应用指南

    Texas Instruments DS160PT801 8通(16通道)重定时器是高性能PCI-Express协议感知重定时器,支持高达16GT/s的PCIe数据速率。可将这8
    的头像 发表于 09-11 14:58 599次阅读
    DS160PT801 PCIe 4.0 16通道重<b class='flag-5'>定时器</b>技术解析与应用指南

    【RA4M2-SENSOR】3、使用GPT定时器-PWM输出

    结合起来使用的话可以实现更加丰富的功能, 可以对输入信号进行计数,可以测量输入信号的脉冲宽度,可以输出单个脉冲、PWM 等波形,等等。 通过定时器生成 PWM 波形信号来控制电机状态是
    发表于 09-01 15:20

    大彩讲堂:VisualHMI-LUA教程-定时器的使用指南

    定时器的使用
    的头像 发表于 08-31 16:59 848次阅读
    大彩讲堂:VisualHMI-LUA教程-<b class='flag-5'>定时器</b>的使用指南

    MCU定时器/计数

    RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件级中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求‌。 一、‌硬件
    的头像 发表于 04-27 13:54 592次阅读

    【S32K 进阶之旅】如何使用 S32K3 PIT 定时器实现精准延时?

    周期中断定时器(PeriodicInterruptTimer,PIT)模块顾名思义,就是通过计时行为引发周期性中断事件的触发。本文基于S32K312开发板实现延时功能,在此之前先简单介绍下PIT
    的头像 发表于 03-10 16:33 1192次阅读
    【S32K 进阶之旅】如何使用 S32K<b class='flag-5'>3</b> PIT <b class='flag-5'>定时器</b><b class='flag-5'>实现</b>精准延时?

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

    都能随时控制改变的那种,频率和占空比方面可以控制了,但是两个波形的相位差还没有做好。之前是用了两个定时器,通过使能定时器的时间不同实现的,那
    发表于 03-07 08:20

    BUCK电路占空比对电流波形的影响

    BUCK电路的占空比对电流波形具有显著的影响。以下是对这一影响的分析: 一、占空比对电流波形的影响机制 在BUCK电路中,占空比决定了开关管
    的头像 发表于 12-12 17:08 2585次阅读