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