Edit online

PWM 配置

驱动配置

  1. 在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面。

  2. 选择需要的 pwm/epwm 通道。以下以打开 PWM3 作为示例:

Board options  --->
    [ ] Using PWM0
    [ ] Using PWM1
    [ ] Using PWM2
    [*] Using PWM3
    [ ] Using EPWM0
    [ ] Using EPWM1
    [ ] Using EPWM2
    [ ] Using EPWM3
    [ ] Using EPWM4
    [ ] Using EPWM5

3. 在 menuconfig 界面中打开 RT-Thread 的 PWM 设备驱动框架。 使用 RT-Thread 内核的时,PWM/EPWM 驱动需要依赖 Thread 的 PWM 设备驱动框架。

提示:

为了简化使用,步骤 2 的``Using PWMx/EPWMx`` 会自动打开 RT-Thread 的 PWM 设备驱动框架。

Rt-Thread options  --->
    RT-Thread Components  --->
        Device Drivers  --->
            [*]  Using PWM device drivers

PWM 自定义参数

PWM 驱动在 c 中提供了一个接口 aic_pwm_default_action() 来配置 PWM 各通道的行为参数(EPWM 驱动的接口是 c 中的 aic_epwm_default_action() )。

如果因为板级硬件设计的差异,和实际应用场景不同,可以对这些参数进行调整。参数的定义如下表:

参数名称 类型 取值范围 功能说明
mode enum up/down/up-down-count 配置增减模式
default-level 正整数 [0, 1] 默认/初始电平
action0 数据结构 配置 CAD、CAU 等行为 多个关键时点的触发行为
action1 数据结构 配置 CAD、CAU 等行为 多个关键时点的触发行为

表中 action0 和 action1 会涉及 4 种行为类型,定义如下:

Action 类型 行为描述
PWM_ACT_NONE/EPWM_ACT_NONE 不做任何变化,保持之前的输出电平
PWM_ACT_LOW/EPWM_ACT_LOW 跳变为 0 电平
PWM_ACT_HIGH/EPWM_ACT_HIGH 跳变为 1 电平
PWM_ACT_INVERSE/EPWM_ACT_INVERSE 跳变为反向的电平,比如从 0 跳变为 1

以下是一些典型的参数组合,可参考:

Mode CBD CBU CAD CAU PRD ZRO

Def

level

本 SoC

测试结果

Up

count

- - - high low - 1 负占空比
- - - low high - 0 正占空比(默认)
- - - high - high 1 负占空比
- - - low - low 0 正占空比

Down

count

- - high - low - 0 正占空比
- - low - high - 1 负占空比
- - high - - low 0 正占空比
- - low - - high 1 负占空比

Up-Down

count

- - high low low high 0 正占空比
- - low high high low 1 负占空比

其中,“正占空比”和“负占空比” 的意思是指当通过 Backlight 节点设置背光亮度时,得到的占空比结果是正向、还是反向的。

时钟配置

PWM 模块涉及时钟的衍生关系:

../images/pwm_clk_tree.png
1. PWM 模块的时钟衍生关系图

EWM 模块涉及时钟的衍生关系:

../images/epwm_clk_tree.png
2. EPWM 模块的时钟衍生关系图
其中:
  • PLL_INT1 时钟是 D21x 和 D13x 中的设计,D12x 中 PWM Clk 的父时钟是固定的 24MHz。

  • PWM/EPWM 的各类时钟在驱动中已经配置好,而 PWM/EPWM Frequency 由使用时的 cycle 参数决定。

注:
容易混淆的 sysclk:
  • PWM 驱动中,按照惯例将父时钟称作 sysclk,即上图的 PLL INT1;

  • PWM 硬件 spec 中,将上图中的 PWM Clk 称作 sysclk