0
收藏
微博
微信
复制链接

ARR写999,PWM占空比为何不能只除999?

2026-08-20 11:09
9

ARR写999,PWM占空比为何不能只除999?

ARR=999时,向上计数器走的是0到999共1000个计数点;占空比还要结合比较关系、极性和对齐模式判断

0.png 

配置里ARR写999、CCR写500,很多代码注释直接写“占空比=500/999”。示波器测出来接近50%,于是这个写法一路流传。问题在于:接近不等于计数口径正确,到了0%、100%和中心对齐模式,误差就会暴露。

向上计数器从0开始,经历999后更新并回到0,周期包含ARR+1个计数点。PWM输出则由CNT与CCR的比较条件决定高低电平。

公式要从“一个周期有哪些计数点、哪些点输出有效电平”推出来,而不是见到两个寄存器就直接相除。

周期为什么是ARR+1个计数

CNT复位到0后开始计数,0本身已经占用一个计数时隙;到达ARR后仍要经过该计数点,随后才产生更新。

1.png 

1  预分频器和向上计数时序显示CNT从0开始并在更新事件后重装

因此边沿对齐向上计数的周期计数常写成ARR+1,计数频率再由定时器时钟和PSC+1分频得到。

ARR=999正好形成1000个计数,便于把CCR按千分比例理解,但这只是配置便利,不是ARR本身等于周期点数。

定时器实际输入时钟还要从时钟树确认。在部分STM32中,APB预分频不为1时,定时器时钟可能按规则倍频;只拿APB总线频率代入,会让PWM频率整体差一倍。计算表应列出系统时钟、APB分频、定时器时钟、PSC和ARR,逐级得到最终计数频率。换芯片系列或修改时钟配置后要重新核对,不能默认所有型号相同。

修改ARR时还要确认自动重装预装载ARPE。若新周期立即生效而CCR延后生效,过渡周期可能出现一次异常脉宽。

CCR决定比较翻转发生在哪个计数点

PWM模式1、向上计数时,资料描述的典型关系是CNT小于CCR时OCxREF有效,达到比较点后切换。

3.png 

2  定时器时基和捕获比较单元共同生成OCxREF与输出信号

CCR=500时,0到499共500个计数点处于有效状态,对1000点周期而言正好是50%。

输出极性若反相,示波器看到的高电平比例会变成补数;先确认OCxREF与物理引脚高低是否一致。

ARR和CCR常带预装载。软件写入新值后,影子寄存器可能要等更新事件才生效,这能避免周期中途改变造成毛刺。若一个值开了预装载、另一个没有,观察到的占空比可能在某个周期突然错位。动态调占空比时应明确写入时刻、更新事件与DMA触发,不能只证明寄存器最终读回了新数字。

高级定时器的重复计数器会让更新事件隔多个周期发生。只按ARR计算载波频率正确,DMA或中断更新节奏仍可能与预期不同。

边界值最能检验公式是否正确

CCR=0时没有任何CNT小于0,典型PWM1输出为持续无效;CCR大于ARR时则可能保持持续有效。

2.png 

3  输出比较波形显示CCR写入与CNT匹配如何改变OC1REF

如果机械用CCR/ARR,500/999虽然接近50%,却无法自然解释0和满量程,也会让代码审查口径不统一。

用计数点枚举0、1、ARR和ARR+1四个位置,能快速检查模式、极性和比较符号是否理解正确。

PWM模式1和模式2的有效条件相反,CCxP又能翻转引脚极性。同一个CCR,在OCxREF层和物理引脚层可能对应不同高电平比例。代码注释最好写“有效电平占比”和模式/极性,而不是笼统写“高电平占空比”。互补输出还要考虑死区和主输出使能,示波器上看到的脉宽会继续发生变化。

互补PWM加入死区后,两路物理高电平之和不再简单等于一个周期。功率级关心的是有效导通时间,不能直接复用OCxREF占空比。

中心对齐不能照搬边沿对齐公式

中心对齐模式下CNT先向上再向下,比较事件可能在两个方向发生,一个完整周期的计数路径也随之改变。

CMS位、PWM模式和中断标志触发方向都会影响观察结果,频率公式与边沿对齐不相同。

4.png 

4  中心对齐PWM在向上与向下计数阶段均可能产生比较事件

切换模式后应重新推导周期和有效计数,再用示波器同时量频率、占空比与更新事件,避免只改寄存器不改算法。

示波器验证应至少测CCR=0、1、中间值、ARR和ARR+1附近几组边界,并固定探头门限和通道带宽。频率测量确认ARR+1口径,占空比测量确认比较与极性,更新时刻则观察是否出现窄脉冲。若只有50%一个点吻合,错误公式也可能被近似值掩盖;边界测试才能证明整套推导成立。

整数计数决定占空比分辨率。频率越高、周期计数越少,可调步进越粗;设计时应同时平衡目标频率、分辨率和定时器时钟上限。

结论

ARR写999并没有让周期只剩999份,0这个计数点也在周期里。对边沿对齐向上计数,1000个计数点才是正确起点。

之后再叠加PWM模式、比较符号、输出极性和对齐方式,公式才能与引脚波形一致。用示波器验证边界值,比只测50%更容易发现口径错误。

声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

凡亿教育

凡亿教育打通了“人才培养+人才输送”的闭环,致力于做电子工程师的梦工厂,打造“真正有就业保障的电子工程师职业教育平台”。帮助电子人快速成长,实现升职加薪。 为了满足学员多样化学习需求,凡亿教育课程开设了硬件、PCB、仿真、电源、EMC、FPGA、电机、嵌入式、单片机、物联网、人工智能等多门主流学科。

开班信息