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
。需要填三個屬性:label
、gpios
和default-state
。
label :lable是出現在sys目錄下的名字,即生成/sys/class/leds/led2
gpios :前兩個值指定了該LED所連接的GPIO。第三個值可填GPIO_ACTIVE_HIGH
或GPIO_ACTIVE_LOW
。GPIO_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
+關注
關注
242文章
23252瀏覽量
660580 -
驅動
+關注
關注
12文章
1838瀏覽量
85262 -
Linux
+關注
關注
87文章
11292瀏覽量
209330 -
開發板
+關注
關注
25文章
5032瀏覽量
97375
發布評論請先 登錄
相關推薦
評論