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个时钟的衍生关系:
其中:
PLL_INT1时钟是 M4和M3 中的设计,D12x 中PWM Clk的父时钟是固定的24MHz。
前3个时钟在PWM 驱动中已经配置好,最后的 PWM Frequency由使用时的cycle参数决定。
备注
容易混淆的sysclk:
PWM驱动中,按照惯例将父时钟称作
sysclk
,即上图的PLL INT1;PWM硬件spec中,将上图中的PWM Clk称作
sysclk
。