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

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

3天内不再提示

一文详解HPM6000系列PWM定时器模块

331062281 来源:先楫半导体HPMicro 2023-05-30 14:36 次阅读

概 述

在进行电机类、电源类应用开发时,如何使用PWM定时器模块灵活、高效的实现所需 PWM波形的输出,是众多开发者关注的问题。在上篇文章里,我们介绍了PWM定时器模块内的一些概念,以及如何生成普通PWM的过程。本篇内容将继续介绍互补PWM、同步 PWM、错相 PWM以及PWM如何使用ACMP封波等内容。

互补PWM

关于相同的代码部分,此处不再重复讲解,请参考《上篇》的普通PWM的讲解。

14bfcf74-feb3-11ed-90ce-dac502259ad0.jpg

14d6ca80-feb3-11ed-90ce-dac502259ad0.jpg

此处设置了 3 个比较器:cmp_config[0]与 cmp_config[1]用来生成中心对称 PWM,cmp_config[2]作为 PWM 影子寄存器的更新事件源,当 CNT 等于 cmp_config[2]时,影子寄存器写入寄存器内生效。

14e82afa-feb3-11ed-90ce-dac502259ad0.jpg

互补 PWM 对的配置,配置左死区宽度为 8000 个 half_clock,右死区宽度为 16000 个 half_clock。

1500a79c-feb3-11ed-90ce-dac502259ad0.jpg

设置 cmp_config[2]作为 PWM 影子寄存器的更新事件源,启动计数器。

1518721e-feb3-11ed-90ce-dac502259ad0.jpg

通过修改 CMP0 与 CMP1 的值,每 100ms 更新一次互补 PWM 占空比。运行结果如下:

152de09a-feb3-11ed-90ce-dac502259ad0.jpg

互补PWM

同步PWM

本节实验设计:使用 PWM0 的比较器比较事件去做 PWM1、PWM2、PWM3 的同步事件。故输出波形上看,PWM1、PWM2、PWM3 应完全同步,PWM0 与其则不同步。代码如下:

15475fde-feb3-11ed-90ce-dac502259ad0.jpg

使能 4 个 PWM 定时器的 SYNCI 信号

15693c94-feb3-11ed-90ce-dac502259ad0.jpg

设置 STA 与 RLD。

15872966-feb3-11ed-90ce-dac502259ad0.jpg

cmp_config[0]与 cmp_config[1]用来做中心对称 PWM 所需的比较器。

15a67866-feb3-11ed-90ce-dac502259ad0.jpg

cmp_config[2]用来做使 PWM 影子寄存器生效的比较器。

15bd57fc-feb3-11ed-90ce-dac502259ad0.jpg

cmp_config[3]设置在 PWM0 CH8 上,用来产生比较事件,同步 PWM1、PWM2、PWM3。

15d506ae-feb3-11ed-90ce-dac502259ad0.jpg

互补 PWM 的死区设置与输出设置。

15e9b252-feb3-11ed-90ce-dac502259ad0.jpg

设置 PWM0 CH0 CH1 互补输出,同时设置 PWM1 CH8 使用 CMP3 产生比较事件。

160ba9ca-feb3-11ed-90ce-dac502259ad0.jpg

设置 PWM1、PWM2、PWM3 互补输出。

162fcda0-feb3-11ed-90ce-dac502259ad0.jpg

启动计数器。

以下代码是对互联管理器的配置。配置 PWM0 CH8 的下降沿输出到TRGM0_OUTX0 上,同时 TRGM0_OUTX0 作为 TRGM1、TRGM2、TRGM3的输入,路由到 PWM1、PWM2、PWM3 的 SYNCI 信号上。

1647908e-feb3-11ed-90ce-dac502259ad0.jpg

波形如下:

1669d0c2-feb3-11ed-90ce-dac502259ad0.jpg

可见 PWM1、PWM2、PWM3 是完全同步的,PWM0 则与其有 20ns 的不同步。

同步PWM

错相 PWM

本节实验设计:使用 SYNT 实现 PWM0、PWM1、PWM2、PWM3 错相90°。代码如下:

168bcbdc-feb3-11ed-90ce-dac502259ad0.jpg

16b106e0-feb3-11ed-90ce-dac502259ad0.jpg

16cef268-feb3-11ed-90ce-dac502259ad0.jpg

16e530c8-feb3-11ed-90ce-dac502259ad0.jpg

16ff0e30-feb3-11ed-90ce-dac502259ad0.jpg

以上代码请参考上文 “同步PWM” 章节的讲解,主要目的是生成 4 对互补PWM。

17189666-feb3-11ed-90ce-dac502259ad0.jpg

配置 TRGM,将 SYNT CH0 的比较事件路由到 PWM0 的 SYNCI 信号上,将 SYNT CH1 的比较事件路由到 PWM1 的 SYNCI 信号上,将 SYNT CH2 的21 / 24先楫半导体比较事件路由到 PWM2 的 SYNCI 信号上,将 SYNT CH3 的比较事件路由到PWM3 的 SYNCI 信号上。

173593b0-feb3-11ed-90ce-dac502259ad0.jpg

配置 SYNT,分别设置 SYNT CH0 比较器比较值为 0,SYNT CH1 比较器比较值为 reload/4,SYNT CH2 比较器比较值为 reload/2,SYNT CH4 比较器比较值为 reload*3/4。

波形如下:

1753bf48-feb3-11ed-90ce-dac502259ad0.jpg

错相PWM

PWM+ACMP 封波

本节实验设计:使用两个片上 ACMP 对目标模拟电压进行监控,当电压超过 1.65V 时停止 PWM 输出。其基本思路为,将 ACMP 的输出信号通过互联管理器 TRGM 路由到 PWM 的内部 Fault 信号上,当 Fault 信号有效时 PWM波停止输出(故障保护功能)。

代码如下:

176d5fac-feb3-11ed-90ce-dac502259ad0.jpg

初始化 PWM 引脚,初始化 DAC 时钟与引脚(使用 DAC 输出模拟电压到ACMP 上模拟过压)。

1786cd70-feb3-11ed-90ce-dac502259ad0.jpg

输出互补 PWM 波。

179a1056-feb3-11ed-90ce-dac502259ad0.jpg

设置 Fault 信号高电平有效;使能 FaultI0 与 FaultI1 有效(PWM 共 4 内2 外 fault 信号,哪些信号生效可选)。

17b10766-feb3-11ed-90ce-dac502259ad0.jpg

设置 DAC 输出为直接模式,12bit DAC 输出范围 0~4095,4030 约为3.247V。该部分代码请直接参考 DAC 例程。

17c8d6b6-feb3-11ed-90ce-dac502259ad0.jpg

配置 ACMP,使能 ACMP2 与 ACMP3。

17dfdd52-feb3-11ed-90ce-dac502259ad0.jpg

配置互联管理器,将 ACMP2 与 ACMP3 的输出信号路由到 PWM 的FaultI0 与 FaultI1 上去。

17fb6734-feb3-11ed-90ce-dac502259ad0.jpg

acmp_config 函数源码如下:

180bba58-feb3-11ed-90ce-dac502259ad0.jpg

代码中将 ACMP 的正极输入选择为 IO 引脚,负极输入选择为 ACMP 内部专用 DAC,参考电压设置为 0x80,即 1.65V。

当 IO 引脚电压 3.247V 时(来自于外设 DAC 输出),ACMP 正极电压超过负极电压 1.65V,ACMP 输出有效,为高电平;经过互联管理器路由到PWM 的 Fault 信号上;由于 PWM 模块内配置了 Fault 信号为高电平有效,因此此时 Fault 信号有效,PWM 波形停止输出。

当 IO 引脚电压 0V 时(将引脚与 GND 短接),ACMP 正极电压未超过负极电压 1.65V,ACMP 输出无效,PWM 波形正常输出。

PWM+ACMP

小 结

本文首先介绍了 PWM 定时器内各模块的基本概念与功能,而后对 PWM的使用由浅入深依次以代码实例进行讲解。可以看到,PWM 的使用只要配置好 STA、RLD、CMPx、影子寄存器等即可实现输出;如果有同步需求或与其它外设协同使用需求,则主要通过互联管理器 TRGM 的配置进行实现。

比较经典的例程还包括使用 PWM 触发 ADC 采样,先楫半导体 SDK 中已经有完整的实例与代码,各位开发者可以到官网下载研究,并欢迎大家多多交流。

“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司产品覆盖微控制器微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市张江高科技园区,并在天津、深圳和苏州均设立分公司。核心团队来自世界知名半导体公司管理团队,具有15年以上,超过20个SoC的丰富的研发及管理经验。

先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产的高性能通用MCU产品系列HPM6700/6400、HPM6300及HPM6200,性能领先国际同类产品,并完成AEC-Q100认证,全力服务中国工业,汽车和能源市场。

审核编辑:汤梓红

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

    关注

    7

    文章

    2691

    浏览量

    47422
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5175

    浏览量

    213738
  • 比较器
    +关注

    关注

    14

    文章

    1649

    浏览量

    107180
  • 电机
    +关注

    关注

    142

    文章

    8986

    浏览量

    145312
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114692
收藏 人收藏

    评论

    相关推荐

    请问HPM6000系列CPU中断有何特点,注意事项有哪些?

    HPM6000系列CPU中断有何特点,注意事项有哪些?
    发表于 05-26 06:19

    请问HPM6000系列MCU如何使用硬件DSP单元?

    HPM6000系列MCU如何使用硬件DSP单元?
    发表于 05-26 06:18

    请问HPM6000系列MCU如何使用硬件浮点数单元?

    HPM6000系列MCU如何使用硬件浮点数单元?
    发表于 05-26 06:49

    HPM6000系列微控制的片上各类SRAM使用指南

    HPM6000系列微控制片上SRAM使用指南
    发表于 06-01 06:19

    HPM6000系列微控制片上闪存使用指南

    HPM6000系列MCU片上Flash使用指南
    发表于 06-01 06:20

    HPM6000系列微控制BOOT模式的说明资料

    HPM6000系列微控制BOOT MODE指南
    发表于 06-01 08:43

    HPM6000系列微控制片上闪存使用指南

    HPM6000系列MCU片上Flash使用指南
    发表于 06-02 08:54

    HPM6000系列芯片内部模拟地和数字地

    HPM6000系列芯片内部模拟地和数字地是隔离开的吗?
    发表于 07-10 17:49

    HPM6000系列PWM波尽在掌握

    在进行电机类、电源类应用开发时,如何使用PWM定时器模块灵活、高效的实现所需 PWM波形的输出,是众多开发者关注的问题。在
    的头像 发表于 05-30 14:36 637次阅读
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b><b class='flag-5'>PWM</b>波尽在掌握

    HPM6000系列微控制 CMSIS DAP调试器使用指南

    在上海先楫提供的HPM系列MCU评估套件上,多数集成了基于FTDI的FT2232芯片的板载调试,方便了开发人员直接调试并评估HPM6000系列
    的头像 发表于 06-19 17:02 3840次阅读
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制<b class='flag-5'>器</b> CMSIS DAP调试器使用指南

    HPM6000系列 ADC 相关硬件设计教程

    本文将为大家展示国产芯片HPM6000系列ADC性能出色的测试结果并为您提供了与HPM6000系列微控制的模数转换
    的头像 发表于 07-22 11:18 1293次阅读
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b> ADC 相关硬件设计教程

    HPM6000系列微控制的BOOT 模式的说明以及相应的外部电路设计建议

    1.简介HPM6000系列MCU目前提供了不同的启动方式,方便客户在研发生产等不同阶段使用。本文提供了HPM6000系列微控制的BOOT模
    的头像 发表于 07-21 15:15 1684次阅读
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制<b class='flag-5'>器</b>的BOOT 模式的说明以及相应的外部电路设计建议

    应用分享| HPM6000系列片上SRAM揭秘

    HPM6000系列微控制上,集成了大容量的SRAM,可供用户存放代码,数据等,满足各类应用的需要。其中片上SRAM有多种分类,包括RISC-VCPU的指令和数据
    的头像 发表于 09-19 11:02 1871次阅读
    应用分享| <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>片上SRAM揭秘

    看完这篇,HPM6000系列PWM波尽在掌握(上)

    概述在进行电机类、电源类应用开发时,如何使用PWM定时器模块灵活、高效的实现所需PWM波形的输出,是众多开发者关注的问题。先楫半导体已发布的HPM6
    的头像 发表于 05-30 10:03 1403次阅读
    看完这<b class='flag-5'>一</b>篇,<b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b><b class='flag-5'>PWM</b>波尽在掌握(上)

    HPM6000系列微控制DSP/FFT使用介绍

    电子发烧友网站提供《HPM6000系列微控制DSP/FFT使用介绍.pdf》资料免费下载
    发表于 09-19 15:21 1次下载
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制<b class='flag-5'>器</b>DSP/FFT使用介绍