跳到主要内容

风扇PWM控制

开发板通过板载的风扇接口进行连接,并通过PWM进行风速的控制

RK3588_FAN1 </left>

RK3588_FAN

DTS配置

通过原理图可以了解到,风扇通过PWM9_M1进行控制,查看相应的DTS配置;如果想通过sysfs手动调节pwm的话,需要把设备树pwm_fan节点注释掉

# DTS配置文件rk3588-toybrick-x0.dtsi
// 注释掉pwm-fan设备树节点,通过sysfs手动调节pwm
// fan: pwm-fan {
// compatible = "pwm-fan";
// #cooling-cells = <2>;
// pwms = <&pwm9 0 50000 0>;
// cooling-levels = <0 50 100 150 200 255>;
// rockchip,temp-trips = <
// 50000 1
// 55000 2
// 60000 3
// 65000 4
// 70000 5
// >;
// };

&pwm9 {
pinctrl-0 = <&pwm9m1_pins>;
status = "okay";
};

PWM控制

# 查看PWM是否开启
ls /sys/class/pwm/

# 查看所有PWM设备
cat /sys/kernel/debug/pwm

# 将pwm导出到用户空间
cd /sys/class/pwm/pwmchip1
echo 0 > export

# 设置pwm周期,单位为 ns
cd pwm0/
echo 1000000 > period

# 设置占空比50%
echo 500000 > duty_cycle

# 设置 pwm 极性,normal/inversed
echo normal > polarity

# 使能 pwm
echo 1 > enable

# 取消将 pwm 导出到用户空间
cd /sys/class/pwm/pwmchip1
echo 0 > unexport

# 例子2:
echo normal > polarity
echo 500000 > period
echo 0 > duty_cycle // 占空比为0% // 风扇停止运行
echo 500000 > duty_cycle // 占空比为100% // 风扇最高转速运行

例子3:
echo inversed > polarity
echo 500000 > period
echo 0 > duty_cycle // 占空比为100% // 风扇最高转速运行
echo 500000 > duty_cycle // 占空比为0% // 风扇停止运行

当设置 period 与 duty_cycle 值的时候需要注意在任何的情况下都得保证 period 的值大于等于 duty_cycle 的值。

RK3588_pwm