2. PWM 基础理论:占空比、频率、周期、分辨率的概念及其数学关系
PWM(Pulse Width Modulation,脉冲宽度调制)是背光亮度控制的核心技术。理解其四个基本参数——占空比、频率、周期和分辨率——是驱动开发的基础。本节将从数学定义和物理意义两个维度,系统梳理这些概念及其内在联系。
2.1 核心概念定义
| 参数 | 符号 | 单位 | 定义 |
|---|---|---|---|
| 周期 | T | 秒 (s) | 一个完整 PWM 脉冲波形所占用的时间 |
| 频率 | f | 赫兹 (Hz) | 每秒内 PWM 脉冲重复的次数,f = 1/T |
| 占空比 | D | 百分比 (%) 或比值 | 高电平持续时间与周期的比值,D = t_on / T × 100% |
| 分辨率 | N | 位 (bit) | 占空比可调节的精细程度,通常用计数器位数表示 |
关键记忆点:频率决定 PWM 信号的“快慢”,占空比决定“强弱”,分辨率决定“精度”。在背光驱动中,频率需避开人耳可听范围(通常 >20kHz),分辨率需满足亮度平滑调节需求(通常 ≥8bit)。
2.2 数学关系与公式推导
四个参数之间存在严格的数学关联,理解这些关系是配置 PWM 控制器的前提。
- 周期与频率:T = 1 / f,f = 1 / T。例如,f = 1kHz 时,T = 1ms。
- 占空比与高电平时间:t_on = D × T。例如,D = 50%,T = 1ms 时,t_on = 0.5ms。
- 分辨率与计数器最大值:ARR = 2^N - 1。例如,N = 8bit 时,ARR = 255。
- 占空比与比较值:CCR = D × (ARR + 1)。例如,D = 50%,ARR = 255 时,CCR ≈ 128。
核心公式汇总:
f = 1 / T
D = t_on / T × 100%
ARR = 2^N - 1
CCR = D × (ARR + 1)
f = 1 / T
D = t_on / T × 100%
ARR = 2^N - 1
CCR = D × (ARR + 1)
2.3 分辨率对调光精度的影响
分辨率直接决定了背光亮度可调节的级数。以 8bit 分辨率为例,占空比可被分为 256 个等级,每个等级对应的亮度变化约为 0.39%。对于人眼而言,8bit 分辨率在大多数场景下已足够平滑,但在高端显示或摄影补光场景中,常需要 12bit 甚至 16bit 分辨率。
| 分辨率 (bit) | 调节级数 | 最小占空比步进 | 适用场景 |
|---|---|---|---|
| 6 | 64 | 1.56% | 低成本、低要求背光 |
| 8 | 256 | 0.39% | 通用消费电子 |
| 10 | 1024 | 0.098% | 中高端显示器 |
| 12 | 4096 | 0.024% | 专业摄影、医疗显示 |
2.4 PWM 波形与参数关系示意图
下图展示了一个典型 PWM 波形中周期、占空比与高电平时间的关系。通过调整高电平宽度,可以改变平均电压,从而控制 LED 背光亮度。
2.5 频率选择与背光闪烁
PWM 频率的选择直接影响背光体验。频率过低会导致人眼感知到闪烁(通常 < 100Hz),频率过高则可能引入 EMI 问题或增加开关损耗。
- 低频区(< 100Hz):人眼可感知闪烁,易引起视觉疲劳,应避免。
- 中频区(100Hz ~ 20kHz):人眼无法直接感知闪烁,但可能产生可闻噪声(线圈啸叫)。
- 高频区(> 20kHz):超出人耳听觉范围,无噪声干扰,是背光驱动的首选频率范围。
工程陷阱:部分低成本 PWM 控制器在低频工作时,LED 驱动电路中的电感或电容会发出可闻啸叫。建议在驱动开发初期就将 PWM 频率锁定在 20kHz 以上,并在硬件选型时确认驱动 IC 支持该频率范围。
2.6 分辨率与计数器配置关系
在嵌入式 PWM 控制器中,分辨率由定时器的自动重装载寄存器(ARR)决定。下图展示了 8bit 分辨率下,计数器从 0 递增到 255 并产生 PWM 波形的过程。
2.7 参数间的权衡关系
在实际工程中,频率、分辨率和系统时钟之间存在相互制约。提高分辨率意味着需要更大的 ARR 值,在固定系统时钟下会降低 PWM 频率。三者关系如下:
频率与分辨率的权衡公式:
f_PWM = f_clk / (ARR + 1) = f_clk / 2^N
其中 f_clk 为定时器输入时钟频率,N 为分辨率位数。
示例:若 f_clk = 10MHz,N = 8bit,则 f_PWM = 10MHz / 256 ≈ 39kHz。
若保持 f_clk 不变,将 N 提升至 12bit,则 f_PWM = 10MHz / 4096 ≈ 2.44kHz,可能低于 20kHz 的噪声阈值。
f_PWM = f_clk / (ARR + 1) = f_clk / 2^N
其中 f_clk 为定时器输入时钟频率,N 为分辨率位数。
示例:若 f_clk = 10MHz,N = 8bit,则 f_PWM = 10MHz / 256 ≈ 39kHz。
若保持 f_clk 不变,将 N 提升至 12bit,则 f_PWM = 10MHz / 4096 ≈ 2.44kHz,可能低于 20kHz 的噪声阈值。
| 系统时钟 (MHz) | 分辨率 (bit) | ARR 值 | PWM 频率 (kHz) | 是否满足 >20kHz |
|---|---|---|---|---|
| 10 | 8 | 255 | 39.06 | ✅ 是 |
| 10 | 10 | 1023 | 9.77 | ❌ 否 |
| 20 | 10 | 1023 | 19.53 | ⚠️ 接近阈值 |
| 40 | 10 | 1023 | 39.06 | ✅ 是 |
| 40 | 12 | 4095 | 9.77 | ❌ 否 |
工程建议:在背光驱动开发中,优先保证 PWM 频率 > 20kHz 以避免噪声,然后在此前提下尽可能提高分辨率。若系统时钟受限,可考虑使用硬件自动重装载或双缓冲技术来缓解频率与分辨率的矛盾。
2.8 占空比与背光亮度的非线性关系
需要特别注意的是,LED 背光的亮度与 PWM 占空比并非严格线性关系。由于人眼对亮度的感知遵循韦伯-费希纳定律(Weber-Fechner Law),实际亮度感知与占空比呈对数关系。因此,在驱动软件中通常需要引入 Gamma 校正 或 亮度映射表,以实现人眼感知上的线性调光效果。
开发注意:在实现背光驱动时,不要直接将用户设置的亮度百分比作为占空比写入寄存器。应通过查表或公式进行 Gamma 校正(通常 Gamma 值取 2.2),否则用户在低亮度区域会感觉调节步进过大,而在高亮度区域则感觉变化不明显。