深入理解脉宽调制(PWM)
定时器工作原理
定时器(Timer)在 PWM 生成中起关键作用。它从零计数到指定的最大值(保存在寄存器中),然后复位并重新开始一个循环。这个计数过程决定了一个完整循环的持续时间,称为周期(Period)。
比较值(Compare Value)
定时器硬件会持续将当前计数与一个比较值(保存在寄存器中)进行比较。当计数小于比较值时,PWM 信号保持高电平;当计数超过比较值时,信号变为低电平。通过改变这个比较值,你可以直接控制占空比(Duty Cycle)。
PWM 分辨率(Resolution)
分辨率指的是占空比可控制的精细程度。这由定时器在一个完整周期内计数的取值范围决定。
定时器根据分辨率从 0 计数到一个最大值。分辨率越高,占空比的调整就越精细。
对于具有 n 位分辨率的系统,定时器从 0 计数到 (2^n - 1),这为占空比提供了 (2^n) 个可能的等级。
例如:
- 8 位分辨率允许定时器从 0 计数到 255,提供 256 个可能的占空比等级。
- 10 位分辨率允许定时器从 0 计数到 1023,提供 1024 个可能的占空比等级。
更高的分辨率能提供对占空比更精确的控制,但要求在同一周期内定时器需要计数更多的值。这形成了一种权衡:若要在更高分辨率下保持相同频率(Frequency),你需要更快的定时器时钟,或者接受更低的频率。
仿真(Simulation)
你可以在此仿真中修改 PWM 分辨率位与占空比。调整 PWM 分辨率位会增加最大计数,但仍然受限于时间周期(不会影响占空比)。改变占空比会相应调整高低电平的持续时间,同样保持在该周期内。
占空比、频率与分辨率之间的关系
下图展示了占空比、频率、周期、脉冲宽度与分辨率在 PWM 生成中的协同作用。虽然初看略显复杂,但将其拆解能帮助你更好地理解这些概念。
在此示例中,定时器分辨率为 4 位,意味着定时器从 0
15(共 16 个可能值)。当定时器到达最大值(即 15)时,会触发溢出中断(Overflow Interrupt,以蓝色箭头表示),计数器复位为 0。定时器从 0 计数到最大值所需的时间称为周期(Period)。
占空比设置为 50%,即信号在一个周期中有一半时间保持高电平。在计数过程中的每一步,定时器都会将当前计数与占空比的比较值进行比较。当定时器计数超过该比较值(以黄色箭头标记)时,信号从高电平切换为低电平。这会触发比较中断(Compare Interrupt),以指示状态变化。
信号保持高电平的这段时间称为脉冲宽度(Pulse Width)。