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

笔记:linux中LED驱动设备树配置和用法

设备树中节点配置

设备树中的LED驱动一般是这样写,LED驱动可以控制GPIO的电平变化,生成文件节点很方便

leds: leds {compatible = "gpio-leds";gpio_demo: gpio_demo {label = "gpio_demo";gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;linux,default-trigger = "default-off";default-state = "on";};
}

字段解释

compatible = "gpio-leds";

对应了驱动中 drivers/leds/leds-gpio.c这个驱动文件

label = "gpio_demo";

这个名字会在文件系统中生成对应的设备节点

/sys/class/leds/gpio_demo

linux,default-trigger = "default-off";

指的是led的触发方式  default-off是默认none作为普通的功能来使用

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

前面两个参数是设置哪个GPIO

后面一个参数是指的高低电平有效

default-state = "on";

默认状态 on或者off

设置方式和电平的关系

设置方式

默认电平

brightness=0

brightness>0

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

linux,default-trigger = "default-off";  

default-state = "on"

    高     

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

linux,default-trigger = "default-off";

default-state = "off"

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;

linux,default-trigger = "default-off";

default-state = "on"

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;

linux,default-trigger = "default-off";

default-state = "off"

触发方式

触发方式linux,default-trigger = "default-off";

触发方式类型可以参考使用内核里面的支持项,源码在drivers\leds\trigger下面

drivers/leds/trigger/ledtrig-activity.c

drivers/leds/trigger/ledtrig-audio.c

drivers/leds/trigger/ledtrig-backlight.c

drivers/leds/trigger/ledtrig-camera.c

drivers/leds/trigger/ledtrig-cpu.c

drivers/leds/trigger/ledtrig-default-on.c

drivers/leds/trigger/ledtrig-disk.c

drivers/leds/trigger/ledtrig-gpio.c

drivers/leds/trigger/ledtrig-heartbeat.c

drivers/leds/trigger/ledtrig-mtd.c

drivers/leds/trigger/ledtrig-multi-control.c

drivers/leds/trigger/ledtrig-netdev.c

drivers/leds/trigger/ledtrig-oneshot.c

drivers/leds/trigger/ledtrig-panic.c

drivers/leds/trigger/ledtrig-pattern.c

drivers/leds/trigger/ledtrig-timer.c

drivers/leds/trigger/ledtrig-transient.c

常用的有timer heartbeat oneshot

使用的时候需要检测内核config中是否有开启,使用哪个就开启哪个

CONFIG_LEDS_TRIGGER_TIMER=y

CONFIG_LEDS_TRIGGER_HEARTBEAT=y

CONFIG_LEDS_TRIGGER_BACKLIGHT=y

CONFIG_LEDS_TRIGGER_DEFAULT_ON=y

CONFIG_LEDS_TRIGGER_ONESHOT=y


 

以timer和oneshot举例

timer

leds: leds {

        compatible = "gpio-leds";

        gpio_demo: gpio_demo {

            label = "gpio_demo";

            gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

            linux,default-trigger = "timer";

            default-state = "on";

        };

}

echo 500 > /sys/class/leds/gpio_demo/delay_on

echo 500 > /sys/class/leds/gpio_demo/delay_off

这样操作后GPIO电平就会高500ms低500ms


 

oneshot

leds: leds {

        compatible = "gpio-leds";

        gpio_demo: gpio_demo {

            label = "gpio_demo";

            gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

            linux,default-trigger = "oneshot";

            default-state = "on";

        };

}

echo 1000 > /sys/class/leds/gpio_demo/delay_on

echo 1 > /sys/class/leds/gpio_demo/short

这样就会让电平变高1秒后变低

如果invert设置1后那么就是变低1秒后变高

http://www.lryc.cn/news/149751.html

相关文章:

  • Linux网络编程 网络基础知识
  • 盘点狼人杀中的强神与弱神 并评价操作体验
  • 数据结构与算法学习(day1)
  • 递归寻找第n位数字
  • [国产MCU]-W801开发实例-WiFi热点模式创建
  • 云原生Kubernetes:二进制部署K8S单Master架构(二)
  • spring高级源码50讲-43-50(spring续)
  • FTP文件传输服务器
  • 【LeetCode - 每日一题】2240. 买钢笔和铅笔的方案数(23.09.1)
  • SQL Server如何新建作业
  • 【计算机网络】CDN 内容分发
  • Yjs + Quill 实现文档多人协同编辑器开发(基础+实战)
  • 个性化定制界面还是极简版原装界面?我的选择是……
  • C++ STL list容器使用教程
  • go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)
  • 【Postman】postman生成测试报告完整步骤(包含命令与newman安装教程链接)
  • 一、C#—概述环境安装(1)
  • C# 实现ComboBox下拉框控件
  • leetcode做题笔记119. 杨辉三角 II
  • Dolphin for Mac(Wii游戏模拟器)配置指南
  • Java,Linux,Mysql小白入门
  • 代码随想录算法训练营第二十四天|理论基础 77. 组合
  • macos安装zsh
  • 【Unity】预制体材质变(Clone)克隆体问题
  • python“魂牵”京东商品历史价格数据接口(含代码示例)
  • 密码算法、密钥体系---安全行业基础篇1
  • Java工具类记录
  • DVWA靶场搭建
  • Uniapp笔记(二)uniapp语法1
  • 【1day】PHPOK cms SQL注入学习