7.7.2. 参数配置
7.7.2.1. 驱动配置
在 ZX-RTT 根目录下执行 scons --menuconfig,进入menuconfig的功能配置界面,按如下选择(配置只打开了PWM3,作为示例):
Board options  --->
    [ ] Using PWM0
    [ ] Using PWM1
    [ ] Using PWM2
    [*] Using PWM3
当使用 RT-Thread 内核的时候,PWM 驱动需要依赖RT-Thread的 PWM 设备驱动框架,也是在menuconfig界面中打开:
Rt-Thread options  --->
    RT-Thread Components  --->
        Device Drivers  --->
            [*]  Using PWM device drivers
小技巧
为了简化使用,Using PWMx 会自动打开 RT-Thread 的 PWM设备驱动框架。
7.7.2.2. PWM 自定义参数
PWM 驱动在drv_pwm.c中提供了一个接口  aic_pwm_default_action() 来配置PWM各通道的行为参数,一般情况下客户不需要修改。
如果因为板级硬件设计的差异,可以对这些参数进行调整。参数的定义如下表:
参数名称  | 
类型  | 
取值范围  | 
功能说明  | 
|---|---|---|---|
mode  | 
enum  | 
up/down/up-down-count  | 
配置增减模式  | 
default-level  | 
正整数  | 
[0, 1]  | 
默认/初始电平  | 
action0  | 
数据结构  | 
配置CAD、CAU等行为  | 
多个关键时点的触发行为  | 
action1  | 
数据结构  | 
配置CAD、CAU等行为  | 
多个关键时点的触发行为  | 
表中 action0和action1 会涉及4种行为类型,定义如下:
Action类型  | 
行为描述  | 
|---|---|
PWM_ACT_NONE  | 
不做任何变化,保持之前的输出电平  | 
PWM_ACT_LOW  | 
跳变为0电平  | 
PWM_ACT_HIGH  | 
跳变为1电平  | 
PWM_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 节点设置背光亮度时,得到的占空比结果是正向、还是反向的。
7.7.2.3. 时钟配置
PWM模块涉及4个时钟的衍生关系:
图 7.15 PWM 模块的时钟衍生关系图
其中:
PLL_INT1时钟是 M4和M3 中的设计,D12x 中PWM Clk的父时钟是固定的24MHz。
前3个时钟在PWM 驱动中已经配置好,最后的 PWM Frequency由使用时的cycle参数决定。
备注
容易混淆的sysclk:
PWM驱动中,按照惯例将父时钟称作
sysclk,即上图的PLL INT1;PWM硬件spec中,将上图中的PWM Clk称作
sysclk。