rk3568适配温控风扇

rk3568 适配温控风扇

温度控制风扇通常是由主板上的温度传感器监测 CPU 温度,并根据预设的温度阈值来控制风扇的转速。当 CPU 温度超过预设的阈值时,风扇会自动加速转动,以降低 CPU 温度。ARM主板没有 BIOS,但是内核中可以手动调整风扇转速和温度阈值,以满足用户的需求。建议用户定期清理 CPU 散热器和风扇,以保持良好的散热效果。

作者:炭烤毛蛋 ,点击博主了解更多。


提示:开发过程使用新增 xxx.dtsi,小差异修改迁移到 xxx.dts。不仅让设备树更简洁、清晰,也减少适配过程的重复工作量。 在SDK更新时会自动合入相关修改,减少代码合并的工作量,也避免遗漏SDK重要的更新。


1. 核查原理图,适配风扇

风扇采用频率为10kHz,正极性控制PWM的 PWM-9通道。

1.1 内核配置

CONFIG_SENSORS_PWM_FAN=y

1.2 内核设备树配置

/ {
    
    
	pwm_fan: pwm-fan {
    
    
		compatible = "pwm-fan";
		#cooling-cells = <2>;
		pwms = <&pwm9 0 100000 0>;
		cooling-levels = <
			0 25 50 75 100 125
			150 175 200 225 255>;
		rockchip,temp-trips = <
			47500   1
			50000   2
			52500   3
			55000   4
			57500   5
			60000   6
			62500   7
			65000   9
			67500   9
			70000   10
		>;
	};
};

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

pwms = <&pwm9 0 100000 0>; 是申请PWM申请句柄。

  • pwms:PWM信号的配置,格式为 <channel>, <index>, <period>, <polarity>
  • channel:PWM通道的句柄,即PWM控制器的编号,这里是<&pwm9>,表示使用PWM控制器9。
  • index (per-chip index of the PWM to request): 表示pwm内部编号,一般是 0,因为Rockchip PWM 每个chip 只有一个。
  • period:PWM信号的周期,单位为纳秒,这里是100000,表示周期为100微秒,频率为10KHz(1GHz / 100000)。
  • polarity:PWM信号的极性,0表示低电平有效;1表示高电平有效,也就是常说的负极性。

cooling-levels = <0 25 50 75 100 125 150 175 200 225 255>;

  • <0~255>:分配档位控制pwm取值占空比,10个档位,范围是0-255。
    通过设定pwm的占空比进而调整转速的档位,档位数量和大小可以按需定义。

rockchip,temp-trips 是cpu温度触发风扇转速档位等级
- <47500 1> 是CPU温度触发风扇开启档位,47.5摄氏度时风力为1档。
散热效果需要按实际情况调整,如70度对应档位10。

1.3 内核加载、验证

内核驱动正常加载后,可以识别到相关驱动节点。

  1. 驱动完整的文件节点
cd /sys/class/thermal/cooling_device0

ls
cur_state  max_state  power  subsystem  type  uevent

cat max_state
10
  1. 手动调整风扇等级
# 设定风扇档位为 9
echo 9 > cur_state

# 查看当前等级
cat cur_state 
9

Tips

  1. pwm申请失败多半是被复用,可通过GPIO复用关系查到。
  2. 注册温控风扇驱动时,需要同时启用风扇控制pwm。

结语

不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋

猜你喜欢

转载自blog.csdn.net/weixin_35723192/article/details/130877706
今日推荐