前言
脉宽调制(PWM,Pulse Width Modulation)功能在嵌入式系统中是非常常见的,它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 Rockchip PWM 支持三种模式: Continuous mode、One-shot mode 和 Capture mode, 4 通道 built-in。
说明
ROC-RK3568-PC的 PWM 驱动为:kernel/drivers/pwm/pwm-rockchip.c
3.10 和 4.4 及以上版本内核下驱动文件名字是同一个,pwm-rockchip.c 只支持Continuous mode,但是里面的代码有些差别。4.4 及以上内核版本将 pwm_config(),pwm_enable() 和 pwm_disable() 包装在pwm_apply_state() 函数里面,这样做的好处是可以一次改变几个 PWM 参数,3.10 内核的 PWM 驱动还是原来的接口.
DTS配置
配置 PWM 主要有以下三大步骤:配置 PWM DTS 节点、配置 PWM 内核驱动、控制 PWM 设备。
配置 PWM DTS节点
在 DTS 源文件 kernel/arch/arm64/boot/dts/rockchip/rk356x-firefly-demo.dtsi 添加 PWM DTS 配置,如下所示:
pwm_demo: pwm_demo {
status = "okay";
compatible = "firefly,rk356x-pwm";
pwms = <&pwm1 0 10000 1>; //pwm1:PWM number 0 10000:PWM period in nanoseconds 1:polarity
duty_ns = <5000>; //pwm duty cycle activation time, unit ns