ESP32 LEDC PWM 指南 · 通道数、频率与分辨率怎么取舍
ESP32 的 LEDC 有 16 路 PWM。频率和分辨率是此消彼长的关系,这里给出换算表和常用场景的推荐值。
有多少通道
ESP32 经典款的 LEDC 提供 16 路 PWM 通道(8 路高速 + 8 路低速),分成 4 个定时器组。同组的通道共享同一个频率和分辨率,不同组可以不同——这是很多人没意识到的约束。
频率与分辨率的取舍
核心公式:
实际频率 = 80 MHz ÷ ( 分频系数 × 2 ^ 分辨率位数 )
也就是说,想要频率越高,能用的分辨率就越低。分频系数为 1 时的理论上限:
| 分辨率 | 占空比级数 | 理论最高频率 | 适合 |
|---|---|---|---|
| 8 位 | 256 | 312.5 kHz | 开关电源、高频调光 |
| 10 位 | 1024 | 78.1 kHz | LED 调光(无频闪) |
| 12 位 | 4096 | 19.5 kHz | 舵机、精细调光 |
| 13 位 | 8192 | 9.8 kHz | 电机驱动 |
| 20 位 | 1,048,576 | 76.3 Hz | 极慢、极精细场合 |
想低频又要高分辨率?加大分频系数即可。比如舵机要 50 Hz,用较大分频 + 12 位分辨率完全没问题,不必去挤 8 位。
常用场景推荐
- LED 调光:分辨率 10–12 位,频率 ≥ 1 kHz(低于几百 Hz 时人眼能看出闪烁,手机摄像头尤其明显)。
- 舵机:50 Hz(20 ms 周期),占空比对应 0.5–2.5 ms 脉宽,用 12 位以上分辨率。
- 直流电机:5–20 kHz,高于人耳听觉范围可以避开啸叫。
- 无源蜂鸣器:直接改频率发声,占空比 50% 左右。
注意事项
- 最大分辨率位数因型号而异(经典款支持到 20 位,部分新型号上限更低),以官方文档为准。
- 硬件渐变(fade)很好用,但注意渐变是阻塞还是非阻塞,装了渐变中断服务才能真正后台运行。
- LEDC 走 GPIO 矩阵,几乎任意输出脚都能用;仅输入的 GPIO 34–39 不行。
- 「低速」通道在睡眠时可以由 RTC 时钟继续驱动,适合低功耗呼吸灯。
数据核验:2026-10-20 · 以 Espressif 官方文档交叉核对。随型号或 ESP-IDF 版本变化的字段一律标注「以官方文档为准」,不编造具体数值。
官方外设文档 →
相关页面
I²CESP32 上 I²C 该接哪两个脚、上拉电阻用多大、为什么设备扫描不到——把踩过的坑一次讲清楚,附各型号默认脚位参考。SPIESP32 的 HSPI 与 VSPI 默认接哪几个脚、能跑多快、为什么屏幕就是点不亮——含可直接抄的引脚对照。UARTESP32 三个串口各自默认接哪两个脚、为什么 UART1 用不了、下载失败时该检查什么。RMT 红外与 WS2812RMT 是 ESP32 上最被低估的外设:红外遥控、WS2812 灯带、单总线传感器都靠它。这里讲清通道数、分辨率和 Wi-Fi 干扰问题。深度睡眠深度睡眠能到多少 µA、哪些脚能唤醒、醒来后数据还在吗——配合续航计算器一起用,把电池项目的账算清楚。