[*] LED Support --- > LED Class Support LED Support for GPIO connected LEDs [*] LED Trigger support --- > 我們的LED驅(qū)動(dòng)是基于GPIO的,因此需要打開內(nèi)核LED驅(qū)動(dòng)的支持。 內(nèi)核有兩個(gè)對應(yīng)的驅(qū)動(dòng)程序,分別是 GPIO驅(qū)動(dòng) 和 LED驅(qū)動(dòng) , 基于GPIO的LED驅(qū)動(dòng)調(diào)用了GPI" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)Linux下的LED驅(qū)動(dòng)

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 11:03 ? 次閱讀

LED驅(qū)動(dòng)

我們以imx6ull pro開發(fā)板的板載led為例,其板載了一個(gè)可控制的Led2,原理圖如下:

圖片

LED2進(jìn)行上拉電阻,另外一個(gè)管腳接到了GPIO5_3,因此GPIO5_3輸出低電平即可點(diǎn)亮LED。下面說明如何控制該LED。

內(nèi)核配置:

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

我們的LED驅(qū)動(dòng)是基于GPIO的,因此需要打開內(nèi)核LED驅(qū)動(dòng)的支持。

內(nèi)核有兩個(gè)對應(yīng)的驅(qū)動(dòng)程序,分別是GPIO驅(qū)動(dòng)LED驅(qū)動(dòng) , 基于GPIO的LED驅(qū)動(dòng)調(diào)用了GPIO驅(qū)動(dòng)導(dǎo)出的函數(shù) 。

LED驅(qū)動(dòng)實(shí)現(xiàn)代碼請參考:drivers/leds/leds-gpio.c,它實(shí)現(xiàn)了一個(gè)leds類,通過sysfs接口對LED進(jìn)行控制。

設(shè)備樹:

leds{
 compatible = "gpio-leds";
 
        led2{
            label = "led2";
            gpios = < &gpio5 3 GPIO_ACTIVE_LOW >;//GPIO_ACTIVE_LOW,代表低電平點(diǎn)亮LED
            default-state = "on";
        };
}

在設(shè)備樹中創(chuàng)建一個(gè)名為leds的節(jié)點(diǎn),compatible"gpio-leds",這樣可以匹配到leds-gpio.c的驅(qū)動(dòng)。

然后創(chuàng)建一個(gè)子節(jié)點(diǎn),名為led2。需要填三個(gè)屬性:label、gpiosdefault-state

label :lable是出現(xiàn)在sys目錄下的名字,即生成/sys/class/leds/led2

gpios :前兩個(gè)值指定了該LED所連接的GPIO。第三個(gè)值可填GPIO_ACTIVE_HIGHGPIO_ACTIVE_LOW。GPIO_ACTIVE_HIGH代表高電平點(diǎn)亮LED,GPIO_ACTIVE_LOW代表低電平點(diǎn)亮LED。

這里注意了,gpios屬性的第三個(gè)參數(shù),代表該gpio點(diǎn)亮LED是需要高電平還是低電平,注意是點(diǎn)亮LED,細(xì)品

default-state :on代表默認(rèn)情況LED是點(diǎn)亮的,off代表默認(rèn)LED熄滅

這里又注意了,當(dāng)defalut-state為on時(shí),實(shí)際上gpio輸出的電平,就是gpios屬性中指定的點(diǎn)亮LED時(shí)的電平

設(shè)備樹配置好后,編譯并更換dtb,然后重啟開發(fā)板??梢钥吹?code>/sys/class/leds/led2目錄:

圖片

/sys/class/leds/led2/目錄下有一個(gè)brightnes文件,可以通過echo``cat的方式查看和修改LED的亮度。因?yàn)長ED連接在GPIO上,所以亮度只有0和1,在本文示例的led2中,0表示點(diǎn)亮,1表示熄滅。

點(diǎn)亮LED:

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

熄滅LED:

echo 1 > /sys/class/leds/led2/brightness
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23278

    瀏覽量

    660940
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1840

    瀏覽量

    85296
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209536
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5052

    瀏覽量

    97494
收藏 人收藏

    評論

    相關(guān)推薦

    linux驅(qū)動(dòng)編寫:從hello world到 LED驅(qū)動(dòng)

    linux驅(qū)動(dòng)是連接軟件和硬件的一個(gè)中間介質(zhì),實(shí)現(xiàn)了對硬件的配置和控制。進(jìn)一步將硬件抽象化,為軟件操作硬件提供了簡單的接口。不論硬件的具體形式如何,linux
    的頭像 發(fā)表于 11-29 10:28 ?2754次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>驅(qū)動(dòng)</b>編寫:從hello world到 <b class='flag-5'>LED</b><b class='flag-5'>驅(qū)動(dòng)</b>

    嵌入式LinuxLED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)

    嵌入式LinuxLED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)及編程《嵌入式Linux
    發(fā)表于 11-04 08:18

    LinuxLED驅(qū)動(dòng)原理

    41.1 Linux LED驅(qū)動(dòng)原理Linux 的任何外設(shè)
    發(fā)表于 12-15 09:11

    Linux驅(qū)動(dòng)的使用

    圖片的保存4、瀏覽功能的實(shí)現(xiàn)三、視頻監(jiān)控代碼分析1、實(shí)時(shí)監(jiān)控2、抓拍圖片3、瀏覽四、家電控制1、家電控制內(nèi)容2、LED控制方法3、Linux驅(qū)動(dòng)
    發(fā)表于 02-16 07:19

    LINUX的CAN驅(qū)動(dòng)

    LINUX的CAN驅(qū)動(dòng):/* * Microchip MCP2515 CAN controller driver. * * Copyright (C
    發(fā)表于 08-23 11:56 ?21次下載

    Linux環(huán)境USB的原理、驅(qū)動(dòng)和配置

    本文對 Linux 環(huán)境USB 的原理、驅(qū)動(dòng)和配置進(jìn)行詳細(xì)介紹。隨著生活水平的提高,人們對 USB 設(shè)備的使用也越來越多,鑒于Linux 在硬件配置上尚不能全部即插即用,因此關(guān)于
    發(fā)表于 01-16 16:57 ?33次下載

    嵌入式LinuxPCSC驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文分析了PCSC驅(qū)動(dòng)的體系結(jié)構(gòu),針對嵌入式Linux平臺(tái)的基本特征,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于嵌入式Linux的PCSC驅(qū)動(dòng)程序,
    發(fā)表于 02-24 11:23 ?46次下載

    Linux語音實(shí)時(shí)通信實(shí)現(xiàn)

    在設(shè)計(jì)嵌入式語音通信系統(tǒng)的過程中,提出了一種Linux 語音實(shí)時(shí)通信方法。利用Linux OSS 內(nèi)核驅(qū)動(dòng)
    發(fā)表于 05-12 16:34 ?51次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b>語音實(shí)時(shí)通信<b class='flag-5'>實(shí)現(xiàn)</b>

    Linux的網(wǎng)絡(luò)HOOK實(shí)現(xiàn)

    最近瘋狂的研究Linux的種種功能,也頗有心得,這里講述一Linux的Net的Hook,使用net的Hook可以實(shí)現(xiàn)很多很多非常底層的功
    發(fā)表于 05-14 10:27 ?5148次閱讀

    如何編寫Linux Nand Flash驅(qū)動(dòng)

    如何編寫Linux Nand Flash驅(qū)動(dòng)
    發(fā)表于 10-30 08:36 ?15次下載
    如何編寫<b class='flag-5'>Linux</b> <b class='flag-5'>下</b>Nand Flash<b class='flag-5'>驅(qū)動(dòng)</b>

    基于Linux的LCD驅(qū)動(dòng)程序實(shí)現(xiàn)

    基于Linux的LCD驅(qū)動(dòng)程序實(shí)現(xiàn)
    發(fā)表于 10-30 16:45 ?12次下載
    基于<b class='flag-5'>Linux</b><b class='flag-5'>下</b>的LCD<b class='flag-5'>驅(qū)動(dòng)</b>程序<b class='flag-5'>實(shí)現(xiàn)</b>

    ADP8870背光LED Linux驅(qū)動(dòng)

    ADP8870背光LED Linux驅(qū)動(dòng)
    發(fā)表于 04-20 17:25 ?2次下載
    ADP8870背光<b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>器

    ADP1650 LED Linux驅(qū)動(dòng)

    ADP1650 LED Linux驅(qū)動(dòng)
    發(fā)表于 04-20 20:30 ?2次下載
    ADP1650 <b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>器

    ADP8860背光LED Linux驅(qū)動(dòng)

    ADP8860背光LED Linux驅(qū)動(dòng)
    發(fā)表于 05-17 09:13 ?13次下載
    ADP8860背光<b class='flag-5'>LED</b> <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>器

    嵌入式linux報(bào)警,嵌入式LinuxLED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)及編程.doc

    嵌入式LinuxLED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)及編程《嵌入式Linux
    發(fā)表于 11-01 17:21 ?6次下載
    嵌入式<b class='flag-5'>linux</b>報(bào)警,嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>下</b><b class='flag-5'>LED</b>報(bào)警燈<b class='flag-5'>驅(qū)動(dòng)</b>設(shè)計(jì)及編程.doc