0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现Linux下的LED驱动

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 11:03 次阅读

LED驱动

我们以imx6ull pro开发板的板载led为例,其板载了一个可控制的Led2,原理图如下:

图片

LED2进行上拉电阻,另外一个管脚接到了GPIO5_3,因此GPIO5_3输出低电平即可点亮LED。下面说明如何控制该LED。

内核配置:

Device Drivers  --- >
  [*] LED Support  --- >
   < * >   LED Class Support
   < * >   LED Support for GPIO connected LEDs
   [*]   LED Trigger support  --- >

我们的LED驱动是基于GPIO的,因此需要打开内核LED驱动的支持。

内核有两个对应的驱动程序,分别是GPIO驱动LED驱动基于GPIO的LED驱动调用了GPIO驱动导出的函数

LED驱动实现代码请参考:drivers/leds/leds-gpio.c,它实现了一个leds类,通过sysfs接口对LED进行控制。

设备树:

leds{
 compatible = "gpio-leds";
 
        led2{
            label = "led2";
            gpios = < &gpio5 3 GPIO_ACTIVE_LOW >;//GPIO_ACTIVE_LOW,代表低电平点亮LED
            default-state = "on";
        };
}

在设备树中创建一个名为leds的节点,compatible"gpio-leds",这样可以匹配到leds-gpio.c的驱动。

然后创建一个子节点,名为led2。需要填三个属性:labelgpiosdefault-state

label :lable是出现在sys目录下的名字,即生成/sys/class/leds/led2

gpios :前两个值指定了该LED所连接的GPIO。第三个值可填GPIO_ACTIVE_HIGHGPIO_ACTIVE_LOWGPIO_ACTIVE_HIGH代表高电平点亮LED,GPIO_ACTIVE_LOW代表低电平点亮LED。

这里注意了,gpios属性的第三个参数,代表该gpio点亮LED是需要高电平还是低电平,注意是点亮LED,细品

default-state :on代表默认情况LED是点亮的,off代表默认LED熄灭

这里又注意了,当defalut-state为on时,实际上gpio输出的电平,就是gpios属性中指定的点亮LED时的电平

设备树配置好后,编译并更换dtb,然后重启开发板。可以看到/sys/class/leds/led2目录:

图片

/sys/class/leds/led2/目录下有一个brightnes文件,可以通过echo``cat的方式查看和修改LED的亮度。因为LED连接在GPIO上,所以亮度只有0和1,在本文示例的led2中,0表示点亮,1表示熄灭。

点亮LED:

echo 0 > /sys/class/leds/led2/brightness

熄灭LED:

echo 1 > /sys/class/leds/led2/brightness
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22450

    浏览量

    645891
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84350
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94021
收藏 人收藏

    评论

    相关推荐

    linux驱动编写:从hello world到 LED驱动

    linux驱动是连接软件和硬件的一个中间介质,实现了对硬件的配置和控制。进一步将硬件抽象化,为软件操作硬件提供了简单的接口。不论硬件的具体形式如何,linux
    的头像 发表于 11-29 10:28 2502次阅读
    <b class='flag-5'>linux</b><b class='flag-5'>驱动</b>编写:从hello world到 <b class='flag-5'>LED</b><b class='flag-5'>驱动</b>

    嵌入式Linux字符驱动LED灯设计

    嵌入式Linux字符驱动LED灯设计嵌入式Linux字符设备驱动LED
    发表于 02-03 14:28

    在学习4412开发板,在Linux-4.7.1led驱动怎么编写?

    在看08-Linux驱动教程,看到这里讲的led驱动是在iTop4412_Kernel_3.0目录下进行编译的;我现在想写的led
    发表于 05-04 11:15

    嵌入式LinuxLED报警灯驱动设计

    嵌入式LinuxLED报警灯驱动设计及编程《嵌入式Linux
    发表于 11-04 08:18

    LinuxLED驱动原理

    41.1 Linux LED驱动原理Linux 的任何外设
    发表于 12-15 09:11

    什么是Linux驱动

    先浅谈一什么是Linux驱动驱动,顾名思义就是提供一组程序,能让处理器访问读写该设备信息。比如一个led灯,我们用GPIO来控制,那么
    发表于 12-24 07:18

    Linux驱动的使用

    图片的保存4、浏览功能的实现三、视频监控代码分析1、实时监控2、抓拍图片3、浏览四、家电控制1、家电控制内容2、LED控制方法3、Linux驱动
    发表于 02-16 07:19

    嵌入式Linux下PCSC驱动的设计与实现

    本文分析了PCSC驱动的体系结构,针对嵌入式Linux平台的基本特征,设计并实现了一个基于嵌入式Linux的PCSC驱动程序,
    发表于 02-24 11:23 46次下载

    基于Linux下的LCD驱动程序实现

    基于Linux下的LCD驱动程序实现
    发表于 10-30 16:45 12次下载
    基于<b class='flag-5'>Linux</b>下的LCD<b class='flag-5'>驱动</b>程序<b class='flag-5'>实现</b>

    ADP8870背光LED Linux驱动

    ADP8870背光LED Linux驱动
    发表于 04-20 17:25 2次下载
    ADP8870背光<b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>器

    ADP1650 LED Linux驱动

    ADP1650 LED Linux驱动
    发表于 04-20 20:30 2次下载
    ADP1650 <b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>器

    ADP8860背光LED Linux驱动

    ADP8860背光LED Linux驱动
    发表于 05-17 09:13 13次下载
    ADP8860背光<b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>器

    嵌入式Linux LED GPIO

    文章目录前言LED终端脚本C语言GPIO子系统微信公众号前言这是前2篇:嵌入式Linux i.MX开发板嵌入式Linux NFS嵌入式Linux 交叉编译工具链
    发表于 11-01 17:05 11次下载
    嵌入式<b class='flag-5'>Linux</b> <b class='flag-5'>LED</b> GPIO

    嵌入式linux报警,嵌入式LinuxLED报警灯驱动设计及编程.doc

    嵌入式LinuxLED报警灯驱动设计及编程《嵌入式LinuxLED报警灯驱动设计及编程》实验
    发表于 11-01 17:21 5次下载
    嵌入式<b class='flag-5'>linux</b>报警,嵌入式<b class='flag-5'>Linux</b>下<b class='flag-5'>LED</b>报警灯<b class='flag-5'>驱动</b>设计及编程.doc

    Linux的PWM驱动框架及实现方法

    本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。
    的头像 发表于 05-14 15:24 1018次阅读
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驱动</b>框架及<b class='flag-5'>实现</b>方法