ESPIDF-PWM
ESPIDF-PWM
概述
ESP32 有两个模块可以产生PWM。一个是 MCPWM ,另一个是 LED_PWM。
MCPWM
电机控制脉宽调制器(MCPWM)外设用于电机和电源控制。它提供了六个 PWM 输出,可在几种拓扑结构中运行。常见的拓扑结构之一是用一对 PWM 输出来驱动 H 桥以控制电机旋转速度和旋转方向。
MCPWM 的时序和控制资源分为两种主要类型的模块:PWM 定时器和 PWM 操作器。每个 PWM 定时器提供定时参考,可以自由运行,或同步到其他定时器或外部源。每个 PWM 操作器具有用于为一个 PWM 通道生成波形对的所有控制资源。MCPWM 外设还包含专用捕获模块,用于需要精确定时外部事件的系统。
ESP32 有两个 MCPWM 外设,分别是 MCPWM0 和 MCPWM1。它们的控制寄存器分别位于从地址 0x3FF5E000 和 0x3FF6C000 开始的 4 KB 内存中。
LED_PWM
LED_PWM 主要用于控制 LED 的亮度和颜色,也可以产生 PWM 信号用于其他用途。LED_PWM 有 16 路通道,即 8 路高速通道和 8 路低速通道。这 16 路通道能够产生独立的数字波形来驱动 RGB LED 设备。高速或低速通道可以由四个高速定时器之一或四个低速定时器之一进行驱动。PWM 控制器还能够自动逐渐增加或减少占空比,在无须处理器干预的情况下实现亮度和颜色渐变。LED_PWM 还支持小数分频。
绑定gpio
1 | /** |
mcpwm初始化
1 | /** |
当使用 mcpwm_init() 后,ESP32 会自动调用 mcpwm_start() 启动电机.
设置占空比
1 | /** |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Star!