PWM
介绍PWM的配置和调试方式
模块介绍
pwm控制器是一种通过改变电脉冲宽度来控制输出信号的电子元件。
功能介绍
内核通过pwm框架层接口使其他模块可以申请pwm控制器,并控制pwm信号的输出高低。 如:内核的风扇调速和背光亮度都可以用pwm来控制。
源码结构介绍
pwm控制器驱动代码在drivers/pwm目录下:
drivers/pwm
|--core.c #内核pwm框架接口代码
|--pwm-sysfs.c #内核pwm框架注册到sysfs代码
|--pwm-pxa.c #k1 pwm驱动
关键特性
特性 |
---|
可生成200HZ到6.4MHZ的pwm信号 |
k1平台支持20路可配置的pwm |
配置介绍
主要包括驱动使能配置和dts配置
CONFIG配置
CONFIG_PWM 此为内核平台pwm框架提供支持,支持k1 pwm驱动情况下,应为Y
Symbol: PWM [=y]
Device Drivers
-> Pulse-Width Modulation (PWM) Support (PWM [=y])
在支持平台层pwm框架后,配置CONFIG_PWM_PXA为Y,支持k1 pwm驱动
Symbol: PWM_PXA [=y]
->PXA PWM support (PWM_PXA [=y])
dts配置
由于20路pwm的使用方法和配置方法类似,这里以pwm0为例
pinctrl
可查看linux仓库的arch/riscv/boot/dts/spacemit/k1-x_pinctrl.dtsi,参考已配置好的pwm节点配置,如下:
pinctrl_pwm0_1: pwm0_1_grp {
pinctrl-single,pins =<
K1X_PADCONF(GPIO_14, MUX_MODE3, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* pwm0 */
>;
};