当前位置: 首页 > news >正文

Android 控制pwm风扇

准备

  • 正点原子atoxxx主板。
  • Android12系统

软件定义

设备树定义

fan0: pwm-fan {compatible = "pwm-fan";cooling-min-state = <0>;cooling-max-state = <22>;#cooling-cells = <2>;pwms = <&pwm0 0 25000 0>;cooling-levels = <0 50 100 120 150 170 180 200205 210 215 220 225 230 235 240245 250 251 252 253 254 255>;status = "okay";
};

通过 sysfs 操作冷却状态

首先,我们找到风扇的控制指令。pwm-fan驱动会被注册为 Linux thermal 子系统的 “冷却设备”,通过 sysfs 文件暴露控制接口。步骤如下:

  1. 找到风扇对应的冷却设备

风扇作为冷却设备会被挂载到/sys/class/thermal/cooling_deviceX/(X 为数字,如cooling_device3)。通过以下命令确认:

# 确认有几个设备
rk3568_s_atompi_ca1:/ # ls /sys/class/thermal/cooling_de* -l
lrwxrwxrwx 1 root root 0 2025-10-19 20:24 /sys/class/thermal/cooling_device0 -> ../../devices/virtual/thermal/cooling_device0
lrwxrwxrwx 1 root root 0 2025-10-19 20:24 /sys/class/thermal/cooling_device1 -> ../../devices/virtual/thermal/cooling_device1
lrwxrwxrwx 1 root root 0 2025-10-19 20:24 /sys/class/thermal/cooling_device2 -> ../../devices/virtual/thermal/cooling_device2
# 分别确认每一个设备的类型名称
rk3568_s_atompi_ca1:/ # cat /sys/class/thermal/cooling_device0/type
pwm-fan
rk3568_s_atompi_ca1:/ # cat /sys/class/thermal/cooling_device1/type
thermal-cpufreq-0
rk3568_s_atompi_ca1:/ # cat /sys/class/thermal/cooling_device2/type
thermal-devfreq-0

其中cooling_device0就是我们要的设备,

  1. 确认设备状态范围

此处在设备树上已经知道了,也可以在 sysfs 文件中查看

# 最小状态(应输出0)
cat /sys/class/thermal/cooling_device0/min_state
# 最大状态(应输出22)
cat /sys/class/thermal/cooling_device0/max_state
# 当前状态(初始可能为0)
cat /sys/class/thermal/cooling_device0/cur_state
  1. 控制 PWM 占空比(通过设置冷却状态)

cooling-levels数组中,状态 N 对应索引 N 的数值(即占空比)。例如:

状态 0 → 占空比 0(停止)
状态 1 → 占空比 50
状态 22 → 占空比 255(全速)

通过写入cur_state文件设置状态,即可控制占空比:

# 示例:设置状态5(对应cooling-levels中第5个值170)
echo 5 > /sys/class/thermal/cooling_device0/cur_state
# 验证:读取当前状态
cat /sys/class/thermal/cooling_device0/cur_state  # 应输出5
http://www.jsqmd.com/news/115471/

相关文章:

  • 学习机与线下补课如何选择?2025年不同学段搭配思路分析 - 品牌测评鉴赏家
  • Vue面试中,经常会被问到的面试题/Vue知识点整理,收藏这篇就够了
  • 大语言模型(LLM)核心原理:从Transformer架构到数据预处理流程!
  • 2025年火锅榜单:3公里内性价比爆棚的火锅店推荐,老火锅/美食/川渝火锅/重庆火锅/火锅/火锅店/特色美食火锅品牌有哪些 - 品牌推荐师
  • 前端知识笔记———slice、splice、split 的使用,收藏这篇就够了
  • 第一节、判断网站是否符合谷歌SEO的标准
  • 完整教程:图解HTTP、HTTP知识大全
  • 云服务器计费模式深度解析:包年包月与按量付费,企业该如何选择?
  • 2025大模型学习圣经:从零破局到多模态大师,算法工程师的黄金路线图!
  • 2025年科技行业裁员潮中,AI人才成香饽饽!微软、谷歌、Meta战略聚焦AI,薪资飙升50%以上!
  • CCF GESP C++ G1题目分类(按考纲)及典型例题解析
  • AI 学习机真的能提分吗?这 5 大品牌用实测数据告诉你答案 - 品牌测评鉴赏家
  • 算力生态“大变局”:光合组织重塑算力体系
  • DM数据库安装
  • 从零手写一个 printf 函数:变参宏与默认参数提升
  • Python+Vue的高校社团管理系统的设计与实现 Pycharm django flask
  • 谷歌5篇Agent白皮书深度剖析:AI智能体全链路技术详解,助力开发者领先行业
  • 买了学习机,线下补课还要不要报?这篇全给你说明白! - 品牌测评鉴赏家
  • 格雷厄姆特价股票策略在新能源行业的应用挑战
  • Python+Vue的高校电动车租赁服务业务系统 Pycharm django flask
  • 学习机怎么选?7 大热门品牌深度测评,松鼠 Ai 登顶推荐,帮你找到最适合的学习神器 - 品牌测评鉴赏家
  • 用Coze搭建零代码智能客服:职场人必备的AI提效神器
  • 大厂都这么干,没人管么?
  • 2025年主流AI学习机横向评测:技术路径与适用场景分析 - 品牌测评鉴赏家
  • API接口测试工具与技巧全景指南
  • ps界面文字太小怎么放大
  • 社交网络数据质量治理:经验与教训
  • 【DPFSP问题】鳄鱼伏击算法CAOA求解分布式置换流水车间调度DPFSP【含Matlab源码 14744期】
  • AI学习机真能提分吗?实测数据+品牌红榜大公开 - 品牌测评鉴赏家
  • 计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机优化模型》复现程序