当前位置:首页 > 技术学院 > 技术前线
[导读]在单片机嵌入式开发中,PWM(脉冲宽度调制)是最常用的功能之一,从电机调速、LED调光到电源控制、信号输出,都离不开PWM信号的应用。而PWM信号的核心参数——频率与分辨率,都直接和单片机的系统时钟频率绑定,很多初学者刚接触PWM时经常会对二者的关系产生困惑:为什么时钟频率越高,能输出的PWM频率越高?为什么想要更高的PWM分辨率就要牺牲频率?搞清楚时钟频率和PWM信号频率之间的内在关联,是做好PWM应用设计的基础。

在单片机嵌入式开发中,PWM(脉冲宽度调制)是最常用的功能之一,从电机调速、LED调光到电源控制、信号输出,都离不开PWM信号的应用。而PWM信号的核心参数——频率与分辨率,都直接和单片机的系统时钟频率绑定,很多初学者刚接触PWM时经常会对二者的关系产生困惑:为什么时钟频率越高,能输出的PWM频率越高?为什么想要更高的PWM分辨率就要牺牲频率?搞清楚时钟频率和PWM信号频率之间的内在关联,是做好PWM应用设计的基础。本文将从基础原理出发,系统解析二者的关系,以及实际设计中的选型与配置技巧。

一、基础概念:单片机时钟与PWM的本质

要理清二者的关系,首先需要明确两个核心概念的本质。单片机本质上是一个同步时序数字电路,所有动作都按照统一的时钟节拍执行,这个节拍就是时钟频率。时钟频率代表单片机每秒能执行的时钟周期数,单位通常为MHz,比如常用的8MHz、16MHz、72MHz等,每个时钟周期是时钟频率的倒数,频率越高,单个时钟周期的时间越短,单片机处理速度越快。单片机的所有片上外设,包括PWM发生器,都基于这个系统时钟分频或者倍频后得到的时钟来工作,因此时钟频率是所有外设工作的时间基准,自然也是PWM信号的时间基准。

而PWM信号本质上是一种周期固定、占空比可调的数字脉冲信号,通过调整高电平占整个周期的比例(占空比),就能实现不同的平均输出电压,达到调速、调光等目的。PWM信号有两个核心参数:一个是PWM频率,也就是每秒重复的周期数,单位是Hz;另一个是占空比,代表高电平时间占总周期的比例,决定了输出的平均电平。此外还有一个关键参数叫分辨率,代表占空比可以调整的最小精度,通常用位数表示,比如8位分辨率就是占空比可以分成256个等级,最小调整幅度是1/256≈0.4%。

二、时钟频率决定PWM频率的核心原理

目前绝大多数单片机的PWM输出,都是通过片上定时器模块实现的,基本原理是:定时器基于时钟计数,计数到设定的周期值后清零溢出,同时翻转输出电平,通过比较当前计数值和预先设定的比较值,自动调整高电平的时长,从而得到固定频率、可调占空比的PWM信号。从这个工作原理就能看出,PWM信号的所有时间参数都来自定时器的计数时钟,而计数时钟来自系统时钟的分频,因此系统时钟频率从根本上决定了PWM频率的可调范围。

基本计算公式推导

我们可以通过简单的推导得到二者的定量关系:假设单片机系统时钟频率为(F_{clk}),定时器计数时钟的分频系数为(N)(分频系数通常是1、2、4、8、16、64、256、1024等可选值),定时器的自动重载周期值为(ARR)(也就是计数到多少溢出,16位定时器的ARR最大为65535),那么最终得到的PWM信号频率(F_{pwm})计算公式就是:

[ F_{pwm} = \frac{F_{clk}}{N \times (ARR + 1)} ]

从这个公式可以直观看出几个核心结论:第一,当分频系数(N)和周期值(ARR)固定时,系统时钟频率(F_{clk})越高,最终得到的PWM频率(F_{pwm})就越高,二者成正比关系;第二,想要得到特定频率的PWM信号,在系统时钟固定的情况下,可以通过调整分频系数(N)和自动重载值(ARR)来匹配;第三,系统时钟频率越高,在保持相同PWM频率的前提下,可以设置更小的分频系数或者更大的ARR值,从而得到更高的PWM分辨率。

我们用一个实际例子验证这个公式,以常用的STM32F103单片机为例,它的系统时钟频率为72MHz,如果我们需要输出1kHz的PWM信号,我们可以设置分频系数(N=72),那么计数时钟频率就是(72MHz ÷ 72=1MHz\,单个计数周期就是1μs,要得到1kHz的PWM周期(也就是1000μs),需要设置ARR=999,代入公式计算得到PWM频率为(72000000 ÷ (72×1000)=1000Hz=1kHz\,正好符合设计需求。再比如经典的ATMEGA8单片机,系统时钟为16MHz,使用8位定时器生成PWM,ARR最大为255,不分频的情况下,最高PWM频率为(16MHz ÷ (1×256)≈62.5kHz\,如果系统时钟降低到8MHz,同样配置下最高PWM频率就降到约31.25kHz,时钟频率对PWM频率的影响非常直观。

不同定时器位数的差异

单片机定时器通常分为8位、16位、32位等不同位数,位数决定了ARR的最大值,因此在相同时钟频率下,能输出的PWM频率范围也不同:比如8位定时器最大ARR=255,16位定时器最大ARR=65535,32位定时器ARR可以达到百万甚至更高级别。在相同16MHz时钟、不分频的情况下,8位定时器最高能输出62.5kHz,16位定时器最低能输出(16MHz ÷ (1×65536)≈244Hz\,可以输出更低频率的PWM,同时在相同PWM频率下,16位定时器可以得到更高的分辨率。而无论什么位数的定时器,时钟频率都是PWM频率的上限基础,定时器位数只决定频率可调范围。

三、PWM频率、分辨率与时钟频率的三角平衡

在实际设计中,我们通常希望PWM既有足够高的频率,又有足够高的分辨率,但是这两个需求是相互制约的,而制约的核心就是时钟频率,这就是PWM设计中常见的“三角平衡”关系:时钟频率固定时,PWM频率越高,分辨率越低;想要更高分辨率,就得降低PWM频率;想要同时提高PWM频率和分辨率,必须提高单片机的系统时钟频率。

我们举个例子说明这个平衡关系:16位单片机,如果系统时钟是16MHz,我们想要输出1kHz的PWM,能得到的分辨率是多少呢?代入公式:(ARR+1 = F_{clk} / (N×F_{pwm})\,如果不分频N=1,那么(ARR+1=16000000 / 1000=16000\,16000小于65535,因此可以实现,分辨率就是(log_2(16000)≈14位\,这个分辨率足够大多数场景使用。如果我们把PWM频率提高到10kHz,那么(ARR+1=16000000 / 10000=1600\,分辨率降低到约11位。如果提高到100kHz,(ARR+1=1600\,分辨率只有约7位,分辨率已经很低了,占空比最小调整幅度达到1/160≈0.6%,对于需要高精度调整的场景就不够用。如果我们把系统时钟提高到72MHz,输出100kHz PWM时,(ARR+1=72000000 / 100000=720\?不对,72MHz除以100kHz是720,哦刚才16MHz除以100kHz是160,分辨率从约7位提升到约9.5位,明显更高了,所以要同时保证高频和高分辨率,必须提高时钟频率。

为什么会存在这种平衡关系?本质上是因为,PWM的每个周期需要至少多个时钟周期才能区分不同的占空比,PWM周期越短(频率越高),能放下的时钟周期数量越少,能区分的占空比等级就越少,分辨率自然就越低。而时钟频率越高,单个时钟周期越短,同样长度的PWM周期内能放下的时钟周期越多,能区分的等级就越多,分辨率也就越高。这个三角关系是PWM的固有特性,无法从原理上突破,只能根据需求做取舍,或者选择更高时钟频率的单片机来实现需求。

四、实际开发中的配置技巧与常见问题

在实际开发中,我们需要根据应用需求,结合单片机时钟频率,合理配置PWM参数,常见场景下的配置原则和注意事项如下:

1. 根据应用场景确定PWM频率需求,反向计算时钟要求

不同应用对PWM频率的要求不同,我们需要先确定需求,再看当前单片机时钟频率是否满足要求:

LED调光场景:人眼对50Hz以上的闪烁就不敏感了,通常100Hz-1kHz就能满足要求,想要无频闪可以用到10kHz以上。这个频率范围很低,哪怕是8MHz时钟的8位单片机都能轻松满足,还能保留足够的分辨率,不需要高频时钟就能实现。

直流电机调速:普通直流有刷电机的PWM频率通常在1kHz-20kHz之间,频率太低会导致电机振动发热,频率太高会增加MOS管的开关损耗。对于这个场景,16MHz时钟的16位定时器可以轻松输出10kHz、11位分辨率的PWM,完全满足需求。

开关电源控制:开关电源的PWM频率通常在几十kHz到几百kHz之间,对分辨率要求也比较高,通常需要至少10位分辨率,这就要求更高的时钟频率:如果要输出100kHz 10位分辨率(1024级),需要的时钟频率至少是(100kHz×1024=102.4MHz\,所以通常需要100MHz以上时钟的单片机才能满足,否则就需要牺牲分辨率。

音频输出场景:PWM输出音频需要PWM频率至少是音频最高频率的8倍以上,通常要达到200kHz-1MHz,这种场景对时钟频率要求很高,100MHz以上的时钟才能得到足够的分辨率,否则音频失真会很严重。

2. 常见误区与注意事项

实际开发中,很多初学者容易在时钟和PWM频率的配置上踩坑,常见的问题有几个:

第一个误区:默认使用最高时钟频率,忽略了分频配置,导致PWM频率过高。比如很多STM32开发者使用定时器的时候,直接使用默认的72MHz预分频,不做分频,最终输出的PWM频率远超需求,不仅增加了不必要的功耗,还可能导致后级MOS管发热严重。正确的做法是根据需要的PWM频率,合理计算分频系数和ARR值,让PWM频率符合场景需求。

第二个误区:追求过高的PWM频率,导致分辨率不足。比如有些开发者做LED调光,盲目用100kHz的PWM频率,在16MHz时钟的8位定时器下,分辨率只有不到7位,调光时会出现明显的挡位感,低亮度下不均匀,反而影响效果。实际上1kHz的PWM频率足够调光,还能得到更高的分辨率,调光更平滑。

第三个误区:时钟频率变化后,没有重新计算PWM参数,导致频率偏差。很多开发者修改了单片机的系统时钟配置后,忘记调整定时器的分频和ARR值,导致最终输出的PWM频率跟着时钟同比例变化,比如原本配置1kHz,时钟从8MHz升到16MHz后,PWM频率变成2kHz,虽然很多时候不会影响功能,但不符合设计预期,有些对频率敏感的场景会出问题。

第四个误区:忽略定时器位数限制,想要超出范围的参数。比如用8位定时器,想要输出1kHz 10位分辨率,那么需要ARR=1023,超过了8位定时器最大255的限制,哪怕时钟频率足够也实现不了,这时候要么换16位定时器,要么降低分辨率或者降低PWM频率。

3. 低频PWM的特殊处理

如果我们需要输出很低频率的PWM,比如1Hz的PWM用来做周期唤醒指示灯,在高频率时钟下怎么配置呢?以72MHz时钟为例,想要输出1Hz PWM,我们只需要设置大的分频系数和大的ARR,比如分频系数N=1024,那么计数时钟就是约70.3kHz,ARR+1需要约70300,这个值小于16位定时器的65535吗?接近,稍微调整分频系数到N=256,计数时钟281.25kHz,ARR+1=281250?不对,超过16位最大65535了,这时候可以先分频再分频,先设置预分频N=1024,得到70312.5Hz计数时钟,ARR=65535,那么得到定时器溢出频率是(70312.5 ÷ 65536≈1.07Hz\,接近1Hz,就能满足需求,这就是利用定时器最大ARR,配合大分频系数,用高时钟得到低频PWM。

五、不同单片机的特性差异

不同架构的单片机,时钟频率和PWM频率的关系也略有差异:

8位单片机(如ATMEGA8、STC89C52):通常时钟频率较低,常见为8MHz-16MHz,定时器多为8位,因此最高PWM频率通常在几十kHz,适合低频率低精度需求,成本低廉,适合小家电、LED控制等场景。

主流32位单片机(如STM32F1、GD32F1):时钟频率通常为36MHz-72MHz,定时器多为16位,最高PWM频率可以到几MHz,能满足绝大多数工业控制、电机驱动、电源控制的需求,分辨率也足够,是目前应用最广的场景。

高端32位单片机(如STM32H7、GD32H7):时钟频率可以到200MHz-400MHz,还有32位定时器,能同时输出几百kHz的PWM和十几位的分辨率,还能输出MHz级的PWM用于音频、高速电源等场景,满足高端需求。

PWM专用芯片(如PCA9685):这类芯片自带时钟,不占用单片机资源,通过I2C配置,固定输出频率通常在几百Hz到1kHz,适合多路PWM输出的场景,它的PWM频率由内置时钟决定,不受单片机时钟影响,适合不需要高频的多路调光场景。

单片机时钟频率是PWM信号频率的基础,二者的定量关系决定了PWM的频率范围和分辨率,理解时钟频率与PWM频率、分辨率之间的三角平衡关系,是做好PWM应用设计的核心。在实际开发中,我们只需要根据应用场景确定PWM频率和分辨率需求,再结合单片机的时钟频率和定时器位数,合理计算配置分频系数和自动重载值,就能得到符合需求的PWM信号。随着单片机技术的发展,现在单片机时钟频率越来越高,我们也能更容易地同时获得高频高分辨率的PWM信号,满足越来越多高端应用的需求,但不变的是时钟作为时间基准的核心作用,掌握了这层关系,就能从容应对各种PWM设计需求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

脉冲宽度调制(PWM)是嵌入式系统、电源控制、电机驱动等领域应用最广泛的调制技术,传统PWM设计通常采用固定频率输出,依靠调整占空比实现功率调节。但在实际应用中,固定频率PWM存在电磁干扰集中、谐振激发、音频噪声明显等痛...

关键字: PWM EMC

在电机驱动、开关电源、LED调光这些场景中,PWM(脉冲宽度调制)是最常用的功率调节方式,但PWM天生带有开关纹波,必须加滤波电路才能输出平滑的电压/电流。很多开发者为了滤除纹波绞尽脑汁:加大电容、增加电感、多阶滤波,结...

关键字: PWM 滤波

在嵌入式物联网开发中,电池电量采集是诸多便携设备、物联网终端的核心功能,而模数转换器(ADC)则是实现模拟电压采集的标配外设。但在部分低成本国产主控芯片方案中,受芯片规格限制,部分MCU并未集成ADC外设,如何利用现有资...

关键字: PWM ADC

在现代电力电子技术领域,数字电源凭借其高精度、高灵活性和智能化的优势,正逐步取代传统模拟电源,成为电源行业的主流发展方向。dsPIC33CH/dsPIC33CK系列数字电源控制器芯片,凭借其卓越的性能,在通信电源、工业电...

关键字: PWM 寄存器

在工业自动化、智能家居、新能源等众多领域,数字控制技术正扮演着愈发关键的角色。相较于传统的模拟控制,数字控制凭借其灵活性高、抗干扰能力强、易于集成等优势,成为现代控制系统的主流选择。然而,数字控制并非完美无缺,在实际应用...

关键字: 外设分辨率 PWM

在电力电子技术领域,高效、稳定的电源变换始终是核心追求。全桥硬开关同步整流电路凭借其在中大功率场景下的高效能量转换能力,被广泛应用于服务器电源、工业电源等领域。而PWM驱动设计作为该电路的“指挥中枢”,直接决定了电路的工...

关键字: PWM PWM驱动

在电力电子技术领域,高效、稳定的电源变换始终是核心追求。全桥硬开关同步整流电路凭借其在中大功率场景下的高效能量转换能力,被广泛应用于服务器电源、工业电源等领域。而PWM驱动设计作为该电路的“指挥中枢”,直接决定了电路的工...

关键字: PWM PWM驱动

在智能手机功能日益丰富的今天,续航焦虑成为了用户普遍面临的问题。无线充电凭借其便捷性,逐渐成为手机充电的重要方式之一,而脉冲宽度调制(PWM)技术,作为无线充电系统的核心控制策略,正默默推动着无线充电体验的不断升级。从早...

关键字: 无线充电 PWM

小封装,低物料成本,93%能效,轻载省电和噪声优化两个型号

关键字: 降压转换器 降压电路 PWM

机器人动作是否干净,先看伺服底层而不是轨迹曲线。电流环带宽和力矩估算一旦处理失当,机械端看到的就不是更快响应,而是发热、啸叫和接触力失真。

关键字: 机器人 电流环 PWM 控制器
关闭