一文讲清:PWMV2快速入门

一文讲清:PWMV2快速入门

引 言

本指南旨在帮助开发者快速掌握如何使用 PWMV2 外设进行编程和应用开发。本文内容注重简洁明了,旨在让读者轻松理解关键概念和基本操作。对于更高级的功能和详细配置,请参阅后续的系列文档以获取深入指导。

PWMV2系列文章主要从以下几个方向介绍先楫PWM外设的应用方法:

[PWM快速入门]

https://kb.hpmicro.com/2024/12/17/pwmv2快速入门/

[PWM同步方法]

https://kb.hpmicro.com/2024/12/26/pwmv2同步方法/

[PWM移相方法]

https://kb.hpmicro.com/2024/12/26/pwmv2移相方法/

[PWM固定占空比修改频率方法]

https://kb.hpmicro.com/2024/12/31/pwmv2固定占空比修改频率方法/

[PWM斩波功能]

https://kb.hpmicro.com/2024/12/26/pwmv2斩波方法/

[PWM触发和中断管理]

https://kb.hpmicro.com/2024/12/30/pwmv2触发和中断功能/

[PWM故障保护和强制输出功能]

https://kb.hpmicro.com/2024/12/30/pwmv2故障保护和强制输出/

主要功能

波形输出

中心对称PWM

边沿对齐PWM

左侧边沿右侧边沿Burst输出指定输出多少个PWM脉冲后,pwm停止输出,最大支持65535个脉冲互补PWM输出带死区控制故障保护功能同步保护异步保护强制输出功能输入捕获功能支持触发adc采样支触发sigma-delta adc采样支持触发编码器采样支持PWM同步功能支持PWM移相功能PWM中断和DMA功能

特色功能

通用计算单元

根据dac的输入值或者当前计数器值,计数器重载值以及预设的参数计算出一个结果,用于更新比较器的值

使用硬件计算相关参数,运算速度快

支持PWM占空比硬件限幅

支持PWM频率硬件限幅

支持关键寄存器加锁支持调试模式使用调试器进行调试时可以设置PWM输出为配置的电平状态

高精度PWM

进阶篇

在准备PWM(脉宽调制)系列的高级功能配置文档时,我们重点关注以下几个关键特性:

1. PWM信号同步

同步PWM信号确保了多个PWM通道之间或与外部时钟和事件的时间一致性。对于多相系统中的精确相位对齐至关重要。

2. PWM信号移相

移相技术允许调整PWM信号相对于参考点或其他PWM信号的相位角。这对于三相电机控制和其他需要精密相位调节的应用尤为重要。通过硬件或软件实现的移相可以提供灵活且精确的控制。

3. 固定占空比下的频率调整

有时应用需求保持固定的占空比,同时调整PWM信号的频率。这种配置要求PWM生成器能够精准地维持设定的占空比,即使频率发生变化。

4. 事件驱动与中断管理

高效的事件检测和中断触发机制使得PWM控制器能够在特定事件发生时即时响应,如周期结束或比较匹配。良好的事件和中断管理是实现实时操作的关键,提升了系统的响应速度和整体效率。

5. 斩波功能

PWM斩波将连续的PWM信号分割成一系列短脉冲,以降低音频噪声或优化电源效率。通过调整PWM信号的开启和关闭时间来实施斩波,为某些应用场景提供了额外的优势。

6. 故障保护和强制输出功能

PWMv2模块提供了全面的故障保护机制,能够在检测到异常情况时迅速采取措施,防止潜在的硬件损坏或危险发生。主要特性包括同步和异步故障输入,故障响应模式,故障恢复机制。

强制输出功能允许用户在必要时直接控制PWM输出的状态,而不依赖于正常的PWM波形生成逻辑。可提供硬件强制输出和软件强制输出。

时钟配置

先楫PWM的时钟和电机系统共用一个时钟源,因此不需要单独进行PWM系统的时钟分频设置,简化用户的设计。使用如下接口可以获取PWM的频率

freq = clock_get_frequency(clock_mot0);

引脚配置

使用PWM输出,需要配置引脚的功能为PWM,代码如下所示,设置PE08引脚功能为PWM1的P0引脚:

HPM_IOC->PAD[IOC_PAD_PE08].FUNC_CTL = IOC_PE08_FUNC_CTL_PWM1_P_0;

影子寄存器

影子寄存器包含一组与工作寄存器相对应的寄存器,这些寄存器可以被直接读写,但其内容不会立即生效。只有当满足特定条件时,影子寄存器中的值才会被复制到相应的工作寄存器中,从而对PWM输出产生影响。

在修改影子寄存器之前,需要先解锁它们。这通常通过向UNLOCK寄存器写入一个特定的密钥来完成。

修改完成后,可以通过设置锁定位来重新锁定影子寄存器,防止意外更改。

每个PWMV2外设含有28个独立的影子寄存器,可关联到PWMV2的4个通道的任意通道中,在特定的时机将影子寄存器的值更新到工作寄存器中。

影子寄存器可用于配置reload补偿值、compare、通用计算单元补偿值以及私有计算单元门限补偿值。

影子寄存器在一定程度上保证了多数据更新的一致性。更新影子寄存器如下

pwmv2_enable_shadow_lock_feature(PWM);pwmv2_shadow_register_unlock(PWM);// set shadow registerspwmv2_shadow_register_lock(PWM);

在更新时机选择为软件方式更新的情况下,影子寄存器中的值可以通过软件触发更新到工作寄存器中

pwmv2_issue_shadow_register_lock_event(PWM);

生效时机

输出极性取反配置更新

软件更新

reload值重载更新

fault的恢复时机

立即恢复(在PWMV2时钟的下一个周期)

reload值重载恢复

FAULT_REC_SEL选择的触发信号恢复

软件写入FAULT_CLEAR寄存器恢复

force mode更新至工作寄存器时机

软件更新

指定compare值更新

reload值重载更新

FORCE_TRIG_SEL选中的输入信号更新

force mode工作时机

立刻生效

reload值重载时生效

FORCE_ACT_SEL选择的触发信号到来生效

关闭force mode

通道reload值更新时机

软件更新

指定的compare值更新

reload值重载时更新

RLD_TRIG_SEL的输入信号到来更新

比较点compare值更新时机

软件更新

立即更新(在pwmv2时钟的下一个周期)

关联计数器reload值重载更新

CMP_TRIG_SEL选择的触发源信号到来更新

RLD_CMP_SEL0选择的比较值与计数值匹配时更新

RLD_CMP_SEL1选择的比较值与计数值匹配时更新

计数器数值更新时机

当选定的触发源信号到来时,将通用计算单元的值更新到计数器值

PWMV2外部输入与对外输出

外部输入

QEO输出的数据,用来硬件生成SPWM或者SVPWM波形

来自普通IO的输入捕获信号

PWM[x]_TRIG_IN[x]输入进来的硬件信号。PWMV2可以通过truggermux将支持的外部信号引入PWMV2模块中,用作触发输入

对外输出

PWMV2支持匹配compare值向外部输出电平,在匹配compare值后,拉高电平,在关联的通道计数器到达reload值后,清除信号需要通过triggermux的PWM[x]TRGO[x]向外进行输出。

PWM生成

PWMV2计数器是PWM模块的核心组件之一,它决定了PWM信号的时间基准和波形特性。

计数器的基本概念

计数模式:HPM6E00的PWMv2仅提供上升计数模式,即计数器从0开始递增直到达到预设的最大值(重载值),然后重新从0开始。周期:计数器的周期由重载值决定

计数器的主要功能

时间基准:为PWM信号生成提供时间参考,决定了PWM信号的周期和占空比。

事件触发:当计数值匹配某个比较值时,可以触发中断或其他事件,如改变PWM输出状态或启动其他外设操作。

重载机制:当计数器到达最大值时会发生重载事件,此时计数器会恢复到0,并可以根据需要更新某些寄存器的内容。

PWMV2 支持 4 个 PWM 生成子模块,每个子模块包含一个 32 位计数器和 4 个 32 位比较值,并支持输出 2路独立或者 1 对互补的 PWM 输出,计数器的值和比较值的关系,决定了 初始 PWM 的输出波形。

尽管某些MCU的计数器支持上升、下降及双向计数模式,HPM系列MCU中的PWMv2模块只提供上升计数功能。这种设计选择不仅简化了PWM信号的生成过程,而且在性能和功能性方面丝毫不逊色于其他复杂计数模式的MCU,甚至在某些方面展现出更强的优势。下文会通过中心对齐PWM的配置,说明上升计数在性能上没有任何问题。

为了帮助开发者快速上手,以下将重点介绍一些关键配置项,使PWM外设能够迅速投入工作。对于更复杂的定制化需求,参考进阶篇获取详细指导。

每一个PWM外设有四个计数器,每个计数器有cmp0-cmp3四个比较器。一般情况下,cmp0和cmp1,cmp2和cmp3成对使用输出CHN0-1两路PWM。因为CHN0-1两路PWM共用一个计数器,所以这两路PWM频率一致互补PWM输出时候,CHN0-1成对使用,cmp0-cmp1有效,cmp2-cmp3无效cmp0的值为a,cmp1的值为b,计数器的重载值为T,a和b的值可以在0-2T之间配置,组成各种不同的波形。一般情况下a和b的值在0-T之间配置,且a的值小于b即可满足基本需求。此时当计数器的值在a和b之间时(包含a和b)输出高电平,其他情况输出低电平。四点模式下,CHN0的电平变化由a、b、c、d组点位决定,按照两点模式下大小关系生成对应的波形,再根据预设的PWM_LOGIC寄存器所设置的模式将两组波形进行逻辑组合后输出。CHN1此时可使用互补模式进行输出。为了保证比较寄存器和计数器更新的一致性,使用影子寄存器更新实际工作用的寄存器。当选择的影子寄存器更新时刻匹配时,影子寄存器的值会被更新到实际工作用的寄存器

代码配置

一般情况下,遵守如下流程就可以正确配置PWM输出波形调用deinit函数复位PWMV2外设解锁PWM影子寄存器配置影子寄存器的值计数器选择需要使用的影子寄存器(也可以选择值来自于计算单元)。此时选择的影子寄存器中的值就是计数器的重载值。设置计数器重载值生效的时刻如下代码设置生效时刻为reload点,这也是常用的影子寄存器生效时刻配置。pwmv2_set_reload_update_time(PWM, pwm_counter_0, pwm_reload_update_on_reload);6. 选择比较单元使用的影子寄存器(也可以选择值来自计算单元)7. 开启PWM输出pwmv2_channel_enable_output(PWM, BOARD_APP_PWM_OUT1);8. 开启定时器pwmv2_enable_counter(PWM, pwm_counter_0);9. 通过影子寄存器更新占空比或者频率pwmv2_shadow_register_unlock(PWM);

pwmv2_set_shadow_val(PWM, PWMV2_SHADOW_INDEX(1), reload - duty, 0, false);

pwmv2_issue_shadow_register_lock_event(PWM)

中心对齐PWM

中心对齐的PWM(脉宽调制)波形因其对称性而被广泛应用于电机控制、音频信号处理等领域。与边缘对齐PWM不同,中心对齐PWM在一个周期内的高电平和低电平时间是关于周期中点对称分布的。

影子寄存器方法

为了生成中心对齐的PWM波形,可以通过配置PWM模块中的两个比较单元来实现。具体来说,需要设置两个影子寄存器,分别对应于PWM波形的上升沿和下降沿位置。通过将这两个寄存器值设为以下表达式,可以确保PWM波形的中心对齐:

上升沿位置(即PWM波形开始变为高电平的位置):

CMP0=Reload−Duty2CMP0=2Reload−Duty

下降沿位置(即PWM波形恢复为低电平的位置):

CMP1=Reload+Duty2CMP1=2Reload+Duty

其中:

Reload是PWM周期结束时重新加载的计数值,决定了PWM的频率。

Duty 是PWM的占空比,表示高电平持续时间对应的计数值。

上述配置确保了PWM信号在一个周期内的高电平和低电平时间是对称分布的,从而产生精确的中心对齐波形。这种方法不仅提高了PWM输出的精度,而且对于降低电磁干扰(EMI)和提高系统的整体性能具有重要作用。

此外,当调整Duty值以改变PWM占空比时,CMP0 和 CMP1会相应地更新,保持波形始终关于周期中点对齐。这使得即使在动态调整占空比的情况下,也能维持波形的对称性和稳定性。

计算单元方法

使用影子寄存器生成中心对称的波形,需要修改两个寄存器,如果想只修改一个值就生成中心对称PWM,可以使用计算单元进行操作。

Cal_t_index, 从4个计数器计算单元输出值(reload_new)中选择一个Cal_in_index,从4个dac输入值和4个计数器当前值中选择一个Cal_in_off从28个shadow寄存器中选择一个作为偏移量,选择后四个为0,无偏移。Cal_lim_up/cal_lim_lo,也是从28个shadow寄存器中选择一个作为计算上下限的偏移量。Cal_lu_en/cal_ll_en上下限使能位以_param结尾的是五位有符号参数,所有从shadow寄存器中选的数都作为有符号数处理。下图中圆圈中的X或者+代表当前运算时乘法或者加法所以 cal_t_index选择当前使用的计数器,cal_t_param配置为4,此时相当于reload/2,cal_in_index选择dac输入,此时CMP1对应的计算单元值cal_d_param配置为-4,CMP2对应的计算单元的值cal_d_param配置为+4。dac的值配置为duty即可。

边沿对齐PWM

边沿对齐PWM(脉宽调制)是一种常见的波形生成方式,广泛应用于各种控制和调节系统中。与中心对齐PWM不同,边沿对齐PWM的高电平或低电平时间不是关于周期中点对称分布的,而是相对于一个固定的边沿(上升沿或下降沿)进行调整。这种方式简化了硬件设计,并且在某些应用中提供了更好的灵活性。

左边沿对齐

左边沿对齐PWM是指PWM波形的每个周期都从同一个固定的时间点开始,即所有周期的上升沿是同步的。在这个模式下,占空比的变化只影响PWM波形的结束位置(下降沿),而起始位置保持不变。所以CMP0配置为0,CMP1配置为占空比即可。

右边沿对齐

右边沿对齐PWM则是在每个周期结束时保持同步,即所有周期的下降沿是同步的。在这种模式下,占空比的变化会影响PWM波形的开始位置(上升沿),而结束位置保持不变。

CMP0=Reload−Duty

CMP1=Reload

结 语

本文提供了从硬件功能介绍到软件实现的一整套流程,帮助开发者快速上手HPM芯片PWMV2外设的使用。希望这些信息能够为你的项目提供有价值的指导。一旦掌握了基础,就可以探索更复杂的PWM应用,比如电机控制、电源等。不同硬件平台的PWM实现细节可能会有所不同,但HPM系列芯片提供了功能强大的PWM外设实现各种复杂功能。同时也可以参考我们提供的例程以及解决方案深入了解PWMV2的使用方法。希望这些信息能帮助你快速入门PWM技术。如果有特定的应用场景,可以通过留言进行讨论,以便给出更加详细的建议。

(图源网络)

/

/

先楫半导体

“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市浦东软件园区,并在天津、苏州和深圳均设立分公司。核心研发团队来自世界知名半导体公司团队,具有15年以上、超过20个SoC的丰富的开发及量产经验。市场及销售团队来自全球领先半导体分销公司,管理近10亿美金的半导体元器件年销售额,服务超过5000家中国区客户。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产6大系列高性能通用MCU产品,产品性能及通用性领先国际同类产品并通过AEC-Q100认证。公司已完成ISO9001质量管理和ISO 26262/IEC61508功能安全管理体系双认证,全力服务中国乃至全球的工业、汽车和能源市场。更多信息,请访问 https://hpmicro.com/

相关推荐

央视世界杯直播
office365无法打开word

央视世界杯直播

📅 06-27 👁️ 5323
为什么微信数据库一直损坏
365bet体育在线投注

为什么微信数据库一直损坏

📅 06-27 👁️ 4855
申请体育彩票竞彩店全攻略:条件、成本与收益一览
365bet体育在线投注

申请体育彩票竞彩店全攻略:条件、成本与收益一览

📅 06-28 👁️ 6686
Oppo代言人都有谁?完整名单大揭秘!收藏0
office365无法打开word

Oppo代言人都有谁?完整名单大揭秘!收藏0

📅 06-30 👁️ 1426
震惊!韩日世界杯假球确定 韩国受益西意受害
office365无法打开word

震惊!韩日世界杯假球确定 韩国受益西意受害

📅 06-30 👁️ 9661
内在的意思
365bet体育在线投注

内在的意思

📅 06-28 👁️ 6331
手机如何快速下载和安装微信应用的详细步骤
office365无法打开word

手机如何快速下载和安装微信应用的详细步骤

📅 06-28 👁️ 7868
被男朋友亲下面详细感觉,男朋友喜欢亲下面什么感觉
best365官网手机版

被男朋友亲下面详细感觉,男朋友喜欢亲下面什么感觉

📅 06-30 👁️ 7194
新婚一般每天几次 新婚夫妻性生活频率
office365无法打开word

新婚一般每天几次 新婚夫妻性生活频率

📅 06-29 👁️ 7632
2014巴西世界杯
365bet体育在线投注

2014巴西世界杯

📅 06-27 👁️ 3176
选个“靶子”练练手:15个漏洞测试网站带你飞
365bet体育在线投注

选个“靶子”练练手:15个漏洞测试网站带你飞

📅 06-28 👁️ 6107
抖音如何更改定位自己的位置?更改自己的位置有什么用途?2024-07-02 09:38:143879浏览