目录
[一、RK3568 LED控制方案概述](#一、RK3568 LED控制方案概述)
[1. 完整的设备树配置](#1. 完整的设备树配置)
[2. 各属性作用详解](#2. 各属性作用详解)
[2.1 父节点属性](#2.1 父节点属性)
[2.2 子节点通用属性](#2.2 子节点通用属性)
[3.3 工作指示灯属性解读](#3.3 工作指示灯属性解读)
[3.4 电源指示灯属性解读](#3.4 电源指示灯属性解读)
前言
在嵌入式产品设计中,LED指示灯是人与设备之间最直观的交互方式。一颗小小的LED,可以清晰地传达设备是否通电、是否正常运行、是否处于休眠状态。一个好的指示灯设计,能让用户对设备状态一目了然。在RK3568平台上,LED的控制方式灵活多样。本文基于RK3568 + Android 13 SDK,以工作指示灯(心跳闪烁)和电源指示灯(常亮)两种典型场景为例,系统性地介绍LED的完整适配过程。
一、RK3568 LED控制方案概述
在RK3568平台上,控制LED主要有以下几种方式:
| 方案 | 说明 | 适用场景 |
|---|---|---|
| 直接GPIO控制 | 通过操作GPIO sysfs接口或编写独立驱动控制GPIO电平 | 简单的亮灭控制,不需要复杂逻辑 |
| leds-gpio驱动 | 内核标准LED驱动框架,支持trigger触发器 | 最推荐,可实现心跳、定时闪烁、常亮等效果 |
| PWM控制 | 通过PWM调节占空比实现亮度渐变 | 呼吸灯效果或亮度调节需求 |
| 外部LED控制器 | 通过I2C/SPI总线控制专用LED驱动芯片 | RGB彩灯或矩阵LED等复杂应用 |
对于普通的工作指示灯,leds-gpio驱动是最佳选择。它基于内核的LED子系统,提供了丰富的触发器,可以轻松实现心跳、定时闪烁、常亮等多种模式,同时通过sysfs接口方便上层应用控制。
二、硬件原理图分析
在开始软件配置之前,先分析LED的硬件电路设计:

控制逻辑: GPIO0_B7输出高电平->三极管导通->led发光。
三、设备树适配详解
理解了硬件原理后,我们在设备树中配置LED节点。
1. 完整的设备树配置
leds: leds {
compatible = "gpio-leds";
/* 工作指示灯:心跳闪烁模式 */
work_led: work {
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
status = "okay";
};
/* 电源指示灯:常亮模式,上层完全控制 */
power_led: power {
gpios = <&gpio0 RK_PB8 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "none";
default-state = "on";
retain-state-suspended;
status = "okay";
};
};
2. 各属性作用详解
2.1 父节点属性
| 属性 | 值 | 说明 |
|---|---|---|
compatible |
"gpio-leds" |
必须配置 ,指定使用内核的leds-gpio驱动 |
2.2 子节点通用属性
| 属性 | 说明 | 取值示例 |
|---|---|---|
gpios |
指定控制引脚和有效电平 | <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH> |
linux,default-trigger |
设置默认触发器 | "heartbeat" / "none" / "default-on" |
default-state |
默认状态(触发器生效前) | "on" / "off" / "keep" |
retain-state-suspended |
休眠时保持状态 | 布尔属性,存在即生效 |
status |
节点状态 | "okay" / "disabled" |
3.3 工作指示灯属性解读
work_led: work {
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
| 属性 | 含义 | 效果 |
|---|---|---|
GPIO_ACTIVE_HIGH |
高电平点亮 | 匹配硬件电路设计 |
"heartbeat" |
心跳触发器 | LED以心跳节奏持续闪烁,无需应用层干预 |
3.4 电源指示灯属性解读
power_led: power {
gpios = <&gpio0 RK_PB8 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "none";
default-state = "on";
retain-state-suspended;
};
| 属性 | 含义 | 效果 |
|---|---|---|
"none" |
无触发器 | 完全由default-state和上层控制 |
"on" |
开机默认点亮 | 系统启动后LED立即亮起 |
retain-state-suspended |
休眠保持 | 系统进入休眠后LED保持常亮 |
总结
本文介绍了在RK3568安卓13平台下,如何让LED工作于不同的模式下。希望这篇博客帮助到大家。