嵌入式Linux系統基於PWM機制的液晶屏背光Backlight功能配置


在研發嵌入式產品時,往往會用到LCD(液晶屏)來顯示圖形界面,而液晶屏的顯示亮度則需要背光系統去調節。

 

調光方法:

1.數字調光,又稱波寬控制調光(Pulse Width Modulation,簡稱PWM): 通過PWM 波開啟和關閉LED 來改變正向電流的導通時間以達到亮度調節的效果。

2.模擬調光 :通過改變LED 回路中電流大小以達到調光。

 

方法對比:

1.模擬調光:在可調節的電流范圍內, 可調檔位受到限制,並且較為復雜,

2.數字調光:可通過改變高低電平的占空比來任意改變LED 的開啟時間, 從而使亮度調節的檔位增多。

為了使用起來簡單方便,節約成本,目前主流的背光亮度調節功能多采用PWM機制。

 

PWM機制

PWM是Pulse Width Modulation(脈沖寬度調制)的縮寫,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,其本質是一種對模擬信號電平進行數字編碼的方法。

在嵌入式設備中,PWM多用於控制馬達、LED、振動器等模擬器件。

 

PWM調節背光亮度原理

一句話來說:就是將電源方波數位化,調節PWM方波的占空比,達到控制電流的目的,進而可調整背光亮度。

具體的說:比如LED背光閃爍1000次,其中500次開啟和500次關閉,如果開啟的時間停頓1秒,關閉的時間停頓0.5秒,這時的屏幕亮度就要比開啟和關閉停頓時間一樣的背光系統強。這樣用戶在調節屏幕亮度的時候,實際上亮度的明暗得益於LED背光閃爍的變化。

在實際的產品中,LED背光這種明暗時間的轉變速度非常的快,采用PWM調光的普通大眾顯示器其工作頻率一般在200Hz-1000Hz左右,而人眼在頻率達到100Hz的時候就已經難以察覺明顯的明暗變化了,因為人眼感知亮度的過程是積累的,在閃爍的速度足夠快的時候,人眼看到的畫面是“常亮”的。

Example:把PWM的一個周期分成10塊

這10塊時間里,只有1塊的時間讓LED導通,剩下9塊的時間里LED截止。假設PWM信號的幅值是5V,那么在導通的1塊時間里LED電壓的確是5V的,但是在剩下9塊時間里,它的電壓卻是0V。也就是說從一個周期整體看來,LED的平均電壓只有5*0.1+0*0.9=0.5V。PWM信號頻率很高的,我們無法通過肉眼來觀察到每一個周期LED燈亮滅的變化過程,所以只好通過平均電壓這樣一種方式來決定這個LED的亮的程度了。

 

PWM優點

1、不會產生任何色譜偏移。因為LED始終工作在滿幅度電流和0之司。

2、可以有極高的調光精確度。因為脈中波形完全可以控制到很高的精度,所以很容易實現萬分之一的精度。

3、可以和數字控制技術相結合來進行控制。因為任何數字都可以很容易變換成為一個PWM信號。

4、即使在很大范圍內調光,也不會發生閃爍現象。因為不會改變恆流源的工作條件(升壓比或降壓比),更不可能發生過熱等問題。

 

PWM注意事項

1、PWM占空比控制不控制電流;調節之前亮度就定了,是100%,所以不要和電壓和電流聯系起來;PWM控制通過占空比,就是調整在一個特定的時間周期(如1ms)內,點亮一個百分比的時間,如1/2,1/4。

2、脈沖頻率的選擇因為LED是處於快速開關狀態,假如工作頻率很低,人眼就會感到閃爍。為了充分利用人眼的視覺殘留現象,它的工作頻率應當高於100Hz,最好為200HZ。

3、消除調光弓起的嘯聲; 雖然200HZ以上人眼無法察覺,可是一直到20kHz卻都是人耳聽覺的范圍。這時候就有可能會聽到絲絲的聲音。解決這個問題有兩種方去,一是把開關頻率提高到20kHz以上,跳出人耳聽覺的范圍。但是頻率過高也會弓起一些問題,因為各種寄生參數的影響,會使脈沖波形(前后沿)產生畸變。

 

Linux系統背光子系統PWM機制主要包括pwm和backlight兩部分。

Linux內核配置PWM背光功能的具體流程

1.設備樹配置

背光配置

backlight_peb: backlight {

        compatible = "pwm-backlight";                                       //調用通用背光設備驅動

        brightness-levels = < 0  4 8 16 32 64 128 255>;           //背光亮度調節等級

        default-brightness-level = <5>;                                     //默認背光亮度等級

        pwms = <&pwm3 0 5000000>;                                     //調用pwm3節點 並配置pwm參數  0是默認設備號  5000000為默認周期ns

};

pwm配置

&pwm3 {

        compatible = "fsl,imx6ul-pwm";                                    //調用pwm控制器驅動

        pinctrl-0 = <&pinctrl_pwm3>;                                       //配置soc引腳輸出功能為pwm功能

};

 

2.驅動配置

配置編譯以下驅動

/drivers/video/backlight/backlight.c               用戶層背光節點驅動

/drivers/video/backlight/pwm_bl.c                 通用背光pwm設備驅動

/drivers/pwm/core.c                                       pwm核心層驅動                    

/drivers/pwm/pwm-xxx.c                                pwm控制器驅動

            

3.用戶層調用

背光子系統文件位於/sys/class/backlight/XXX(背光設備名稱)/中,該目錄下的屬性文件有:

actual_brightness          brightness         max_brightness       subsystem@

bl_power                       device@            power/                      uevent

其中,主要用到的是brightness:當前實際的亮度值(內核中記錄的值)。

可以使用 "cat /sys/class/backlight/XXX/brightness"查看當前背光亮度。

也用 "echo  數字(背光亮度等級)  >>  /sys/class/backlight/XXX/brightness"設置背光亮度。

 

 


歡迎轉載,歡迎指正,更歡迎點贊。轉載請附原文鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM