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

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

3天内不再提示

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

先楫半导体HPMicro 2023-05-30 10:03 次阅读

概 述

在进行电机类、电源类应用开发时,如何使用PWM定时器模块灵活、高效的实现所需 PWM波形的输出,是众多开发者关注的问题。先楫半导体已发布的HPM6000系列芯片上,均带有PWM定时器模块。与普通定时器产生的PWM相比,其产生的PWM可方便的配置为互补PWM对,并带有强制输出、死区插入、故障封锁、影子寄存器等功能。

本文将简单介绍PWM定时器模块内的一些概念,以图文的形式帮助开发者理解PWM定时器模块的运行方式。然后辅以大量代码实例,介绍了如何生成普通 PWM、互补 PWM、同步 PWM、错相 PWM,以及PWM如何使用ACMP封波。帮助广大开发者更好地使用 PWM 定时器模块实现自己所需的功能。

1

24+4 位向上计数器

一个 PWM 定时器模块内共有 3 个 24+4 位寄存器,分别为 STA、CNT、RLD。STA 与 RLD 为计数器计数的起点和终点;CNT 内保存着当前时刻的计数值。计数器从 STA 开始计数,达到 RLD 后重新从 STA 计数,一个又一个周期的循环往复,周期为 RLD-STA+1。

a143e4f8-f8ff-11ed-ba01-dac502259ad0.jpga16592ec-f8ff-11ed-ba01-dac502259ad0.jpg

4 位拓展位,为开发者提供了更多样的计数信息:每当 CNT 计数到 RLD时,会产生 RLD 事件(可以生成中断或 DMA 请求);若 XRLD 不为 0,则每当 CNT 计数到 RLD 时,XCNT 加 1,当 XCNT 等于 XRLD 时,产生 XRLD 事件(可以生成中断或 DMA 请求)。

2

比较器

一个 PWM 定时器具有 16~24 个通道,以及 24 个比较器 CMPx(x=1~24)。比较器 CMPx 可以理解为 CNT 计数过程中的触发开关:每当CNT 等于 CMPx 时,该通道 PWM 输出会进行翻转。

开发者可以配置将哪些 CMPx 安装在目标通道上:配置方法为指定 x,再指定用于该通道比较器的数量 n,结果就是 CMPx、CMPx+1、... 、CMPx+n-1 比较器被应用于该通道。

假设我们对通道 1 进行配置,x=0,n=2,则如下图所示:

a17aec3c-f8ff-11ed-ba01-dac502259ad0.jpg

假设我们对通道 2 进行配置,x=2,n=4,则如下图所示:

a1948c82-f8ff-11ed-ba01-dac502259ad0.jpg

3

影子寄存器

影子寄存器的作用是为 PWM 定时器的部分关键寄存器提供保护。在 CPU访问寄存器的时候,实质上改变的是它的影子寄存器,新值并不马上生效。只有在指定的时刻,才把影子寄存器的值更新到寄存器,防止即时生效的方式导致 PWM 输出波形异常,导致炸管子、短路等事故发生。

在芯片内,STA、RLD、CMPx、FRCMD 寄存器带有影子寄存器(这 4 类寄存器的更新会影响 PWM 的波形)。总体而言,HPM 芯片提供了 4 种方式将影子寄存器更新到控制寄存器内,分别为:

软件将 SHCR [SHLK]位置 1 时生效

即时生效

某个 CMPx 比较事件发生时生效

SHRLDSYNCI 上捕获到上升沿时生效

通常建议开发者配置影子寄存器为“某个 CMPx 比较事件发生时生效”,其它 3 种方式更新影子寄存器到寄存器内时,多多少少不能保证此时 PWM 输出的状态,可能会导致 PWM 波形异常。只有在开发者确定用其它 3 种更新方式不会导致硬件故障时,才推荐使用。下图展示了 CPU 以实时方式将影子寄存器更新到寄存器内可能产生的异常。

a1b4713c-f8ff-11ed-ba01-dac502259ad0.jpg

4

同步输入 SYNCI 与同步定时器 SYNT

同步输入 SYNCI 的作用是,当此信号有效时 CNT 的值被强制为 STA,SYNCI 无效后 CNT 开始正常计时。当需要多个 PWM 定时器的时基相同或错相时,操作PWM 定时器的 SYNCI 信号即可达到目标。

同步定时器 SYNT 是专门用来完成以上操作的计时器。SYNT 上有 4 个通道,每个通道有一个 CMP,发生 CMP 比较事件时,可通过互联管理器 TRGM将此事件路由到 SYNCI 信号上,从而实现了多个 PWM 的同步/错相。

a1d8bd3a-f8ff-11ed-ba01-dac502259ad0.jpg

5

互联管理器 TRGM

互联管理器是将片上众多外设相互关联使用的桥梁。例如可以用 PWM 比较事件触发 ADC 采样,使用模拟比较器 ACMP 比较结果对 PWM 封波,使用IO 输入触发 GPTMR 同步计时等等。其功能非常强大,且易用。下面以一张图绘出 TRGM 的基本模型。

a1fa6ea8-f8ff-11ed-ba01-dac502259ad0.jpg

简而言之,TRGM 的每个 output 通道都可以在众多的 INPUT 中选一个。例如可以将 SYNT 的比较事件做为 INPUT,输出到 PWM 的 SYNCI,这样就实现了 PWM 同步;例如可以将 IO 作为 INPUT,输出到 IO,这样就实现了IO 电平的转移输出。

TRGM 可以实现外设硬件级别的同步与触发,可以实现各种外设互联配合使用,是极有用的一个功能模块。使用 TRGM 时,需要参考 UM 手册中TRGMx_INPUT_MUX 列表与 TRGMx_OUTPUT_MUX 列表,合理分配资源,选择需要的 INPUT 与 OUTPUT 信号。

a21484dc-f8ff-11ed-ba01-dac502259ad0.jpga24d6a86-f8ff-11ed-ba01-dac502259ad0.jpg

PWM模块

普通PWM

由上述可知,一路普通PWM的输出需要配置好以下几点:

PWM 输出控制:是否互补对、死区插入等

RLD、STA

CMPx

影子寄存器

函数如下,逐一进行分析:

a2767502-f8ff-11ed-ba01-dac502259ad0.jpg

首先停止 PWM 计时器的计数器,将 PWM 计数器清零,获取 SDK 提供的 PWM 输出默认配置。程序没有特别之处,属于配置前的初始化工作。

a297b0aa-f8ff-11ed-ba01-dac502259ad0.jpg

配置 PWM 允许输出,死区为 0,输出不反相;

a2ac8a66-f8ff-11ed-ba01-dac502259ad0.jpg

设置 RLD 与 STA,分别为 reload 和 0;

a2c6b828-f8ff-11ed-ba01-dac502259ad0.jpg

配置 CMPx,模式为输出比较模式,比较值为 reload+1,影子寄存器更新方式为写入 shlk 位更新;此时由于计数器计数无法达到 CMPx,故输出波形恒为低电平。

a2e99884-f8ff-11ed-ba01-dac502259ad0.jpg

配置通道 0 使用 CMP0,比较器数量为 1 个,因此 CMP0 的大小决定了pwm 的占空比,占空比为(RLD-CMP0)/RLD

a302334e-f8ff-11ed-ba01-dac502259ad0.jpg

启动计数器,更新 CMP0 的影子寄存器为 reload/4,最后将影子寄存器的值提交到寄存器内生效。运行结果如下:

a31baa2c-f8ff-11ed-ba01-dac502259ad0.jpg

普通PWM

本篇内容到此结束,下一篇我们会介绍了如何生成互补 PWM、同步 PWM、错相 PWM,以及PWM如何使用ACMP封波。敬请期待哈~

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

    关注

    114

    文章

    4963

    浏览量

    210905
  • 定时器
    +关注

    关注

    23

    文章

    3190

    浏览量

    112725
收藏 人收藏

    评论

    相关推荐

    有奖提问!先楫半导体HPM6E00系列新品发布会!!

    半导体HPM6E00新品预览”的活动,盛况空前。 自此之后直收到大家的信息,问什么时候能够买到HPM6E00,这不,我们来了~ 先楫半导体在现有的HPM6000
    发表于 06-20 11:45

    HPM USB系列HPM6700双USB功能介绍

    HPM6700系列MCU提供了2个USB外设端口。这些端口内置高速PHY,支持OTG模式,主机模式支持高速、全速和低速模式,设备模式支持高速和全速模式,完全兼容USB2.0协议。这使得HPM
    的头像 发表于 05-31 08:17 212次阅读
    <b class='flag-5'>HPM</b> USB<b class='flag-5'>系列</b>:<b class='flag-5'>HPM</b>6700双USB功能介绍

    HPM USB系列HPM6700双USB功能介绍

    HPM6700系列MCU提供了2个USB外设端口。这些端口内置高速PHY,支持OTG模式,主机模式支持高速、全速和低速模式,设备模式支持高速和全速模式,完全兼容USB 2.0协议。
    的头像 发表于 05-30 11:40 230次阅读
    <b class='flag-5'>HPM</b> USB<b class='flag-5'>系列</b>:<b class='flag-5'>HPM</b>6700双USB功能介绍

    基于先楫HPM5300 RISC-V内核MCU的HPM5361EVK开发板测评效果(二)

    HPM5361EVK是基于先楫HPM5300系列高性能RISC-V内核MCU的一款开发板。
    的头像 发表于 03-12 10:30 1608次阅读
    基于先楫<b class='flag-5'>HPM</b>5300 RISC-V内核MCU的<b class='flag-5'>HPM</b>5361EVK开发板测评效果(二)

    【先楫HPM5361EVK开发板试用体验】认识和了解先楫HPM5361EVK开发板

    近日,收到了先楫HPM5361EVK开发板开发板,带大家了解和认识下先楫HPM5361EVK开发板。 已下是开发板官网介绍; HPM5300系列
    发表于 12-24 22:39

    【先楫HPM5361EVK开发板试用体验】PWM输出测试-呼吸灯

    实验说明 :本次实验主要演示几种不同类型的pwm波形并通过MCU的引脚进行输出。 电后,通过示波器可依次观测到开发板的PWM_WL端和PWM_WH端输出高电平、低电平、边沿对齐
    发表于 12-03 19:35

    先楫半导体发布多个系列高性能微控制器产品

    HPM6000 系列 MCU 是来自上海先楫半导体科技有限公司的高性能实时 RISC-V 微控制器,为工业自动化及边缘计算应用提供了极大的算力、高效的控 制能力。上海先楫半导体目前已经发布了如 HPM6700/6400、
    的头像 发表于 11-28 09:38 430次阅读

    文档上新|HPM16 位 ADC+ENET 开发案例

    各位小伙伴们,是不是一直在期待见到我们的文档更新呀!!这不,我们就来了嘛~本次上新的文档名称是《HPM16位ADC+ENET开发案例》简介HPM6000系列MCU是来自上海先楫半导体科技有限公司
    的头像 发表于 11-28 08:17 330次阅读
    文档上新|<b class='flag-5'>HPM</b>16 位 ADC+ENET 开发案例

    [HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列 (二)

    一、概述在上一篇杂谈文章《[HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列(一)》,大概分析了先楫通用单片机开发与其他国产单片机的开发差异,以及开发优劣势。刚好在这个月底,先楫官方发布
    的头像 发表于 10-12 08:18 1212次阅读
    [<b class='flag-5'>HPM</b>杂谈]你想要了解的先楫<b class='flag-5'>hpm</b>_sdk开发都在这里<b class='flag-5'>系列</b> (二)

    先楫半导体发布高性能运动控制HPM5300系列

    交流平台,深入探讨智能电机控制方案、MCU的BLDC热门技术应用创新与突破、BLDC电机控制芯片及平台化方案等热门话题。上海先楫半导体科技有限公司携其最新发布的产品——高性能运动控制HPM5300系列、高性能MCU HPM6000
    的头像 发表于 09-25 09:05 1081次阅读

    基于HPM6000系列芯片如何使用Flash模拟EEPROM存储参数

    概 述 在MCU的使用中,经常遇到需要存储参数或掉电保持数据等功能。其中,Flash和EEPROM是常见的非易失性存储器,都可以做到设备掉电重启后,数据还会保留。但二者有明显的区别:EEPROM可以被编程和电擦除,而且大多数的EEPROM可以被编程和电擦除,大多数串行EEPROM允许逐字节程序或擦除操作。与EEPROM相比,闪存具有更高的密度,这允许在芯片上实现更大的内存阵列(扇区)。通过对每个单元施加时间控制的电压来执行闪存擦除和写入周期。典型的Fl
    的头像 发表于 09-21 09:15 1111次阅读

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

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

    先楫hpm6000的SPI外设使用四线模式操作读写华邦flash

    这些字段,不需要开发者自行去填充。本文使用hpm6200evk开发板,flash器件是华邦的W25Q64JV。使用hpm_sdk进行开发。SPI四线模式,统称也就Q
    的头像 发表于 07-31 23:03 824次阅读
    先楫<b class='flag-5'>hpm6000</b>的SPI外设使用四线模式操作读写华邦flash

    先楫hpm6000的SPI外设使用四线模式操作读写华邦flash

    ,不需要开发者自行去填充。本文使用hpm6200evk开发板,flash器件是华邦的W25Q64JV。使用hpm_sdk进行开发。
    的头像 发表于 07-12 13:51 826次阅读
    先楫<b class='flag-5'>hpm6000</b>的SPI外设使用四线模式操作读写华邦flash

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

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