0. 前言
PWM(Pulse Width Modulation)即脉冲宽度调制,ESP系列芯片的PWM管脚可实现同频率、不同占空比的PWM波形输出, 常用于控制舵机转向角度、电机调速等功能。
为了选择合适的嵌入式开发板,我们需要知道开发板芯片的可用PWM管脚数量。注意这里说的是可用,有的管脚虽然支持PWM输出,但是被其它必要接口占用,为避免出现不可控情况而无法使用。本文对比了常见芯片ESP-8266、ESP-WROOM-32、ESP-32C3、ESP-32S3的可用PWM管脚数量。
1. PWM管脚对比
芯片类型 | GPIO数量 | PWM实际管脚数量 | PWM可用管脚数量 | 淘宝参考价格 |
ESP-8266 | 10 | 10 | 8 | 10.8 |
ESP-WROOM-32 | 34 | 16 | 16 | 16.1 |
ESP-32C3 | 22 | 6 | 4 | 12.9 |
ESP-32S3 | 45 | 8 | 8 | 29.9 |
对于各个芯片的GPIO数量,给出的是官方提供的数据,实际可用数量要少于这个数字,具体要看不同厂家开发板设计情况。
1.1 ESP8266管脚分布
ESP-8266的全部10个IO口都设置为PWM输出,但是因为GPIO1和GPIO3作为调试串口的TX和RX,一般不做使用,所以ESP-8266一般可支持同时输出8路PWM输出。
1.2 ESP32管脚分布
ESP32有一个LEDC,原本设计用来控制LED,可以作简单的PWM输出。LEDC总共有16个路通道(0 ~ 15),分为高低速两组,高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由1MHz时钟驱动。
1.3 ESP32-C3管脚分布
PWM支持任意GPIO,最大支持4个PWM通道
1.4 ESP32-S3管脚分布
PWM支持任意GPIO,最大支持8个PWM通道
2. 芯片选型总结
1. 需要PWM管脚数量不多于8个时,ESP8266是性价比最高的方案;
2. 需要PWM管脚数量不多于16个时,ESP32是性价比最高的方案;
3. 需要PWM管脚数量不多于4个,但是有较多非PWM管脚控制需求,ESP32C3是性价比最高的方案。
注意:如果需要的PWM管脚数量超过16个,则需要考虑使用PCA9685-16路PWM舵机扩展模块。
3. 参考
ESP8266 Arduino开发之路(5)— 使用PWM实现LED呼吸灯_esp8266 pwm_Willliam_william的博客-CSDN博客ESP8266 Arduino开发之路(5)— 使用PWM实现LED呼吸灯一、前言ESP8266的PWM(Pulse Width Modulation)由FRC1在软件上实现,可实现同频率、不同占空比的最多8路的PWM波形输出。需要注意如下:PWM驱动接口不能跟硬件定时器接口函数同时使用,因为二者共用同一个硬件定时器;PWM驱动使用NMI中断,为最高优先级中断,可以保证PWM输出波形的准确度;不能将自动睡眠模式设置为Light Sleep,Light Sleep模式下停用CPU不能响应NMI中断_esp8266 pwmhttps://blog.csdn.net/qq_38113006/article/details/118228854ESP32C3-CORE开发板 - LuatOS 文档https://wiki.luatos.com/chips/esp32c3/board.htmlESP32S3-CORE开发板 - LuatOS 文档https://wiki.luatos.com/chips/esp32s3/board.html