基于嵌入式技術(shù)的MultiBus-CPU模塊設(shè)計
若要先設(shè)定幀緩沖區(qū)的物理地址和長度,就要在S1D13506.h里指定,然后在驅(qū)動程序里通過對fb_fix_screeninfo賦值來實現(xiàn):
定義當(dāng)前顯示輸出狀態(tài),通過對fb_var_screeninfo結(jié)構(gòu)賦值來實現(xiàn):
Linux下驅(qū)動程序總是先調(diào)用module_init(),因此LCD初始化通過調(diào)用module_init(sldl3xxxfb_init)來實現(xiàn)。sldl3xxxfb_init初始化函數(shù)部分代碼如下:
首先對LCD的背光燈進行點亮。LCD顯示是一種被動的顯示模式,不能發(fā)光,只能依靠控制透射或反射周圍環(huán)境的光來達到顯示的目的。因此,必須通過寫寄存器用高電平指示對LCD加3.2 V電壓來實現(xiàn)背光燈的點亮。其函數(shù)的部分代碼如下:
系統(tǒng)采用的彩色LCD最佳分辨率是800×600,但通過前面對結(jié)構(gòu)Struct fb_var_screeninfo的賦值并不能真正設(shè)定其分辨率。因為結(jié)構(gòu)Struct fb_var_screeninfo的值只是作為一個顯示記錄來用,必須通過設(shè)定寄存器的值才能達到需要的分辨率。本系統(tǒng)在S1D13506.h頭文件里用一個數(shù)組對寄存器的設(shè)置作了一個預(yù)定義,然后在初始化函數(shù)里利用sldReg和sldValue兩個實參寫入,從而設(shè)定了寄存器的值。
評論