4 3寸24BPP屏驅動筆記

2021-05-01 03:49:19 字數 3593 閱讀 9776

4.3

寸24bpp

屏驅動筆記

一、2442平台

1 ,

先在eboot

中的main.c

檔案修改

initdisplay

()函式,目的是先摸索針對該款

lcd硬體特性設定

2442

的lcd

控制器,這樣只要通每次燒個

eboot

進去,就能看到效果,

修改:⑴

lcdcon1tft lcd pannel

選24bpp

(必須)

⑵ lcdcon5

第0位,hwswp――――――――0

(必須)

⑶lcdcon5

第6位,invvden -------------0

(必須)

⑷ 硬體上把原來de腳上0歐到地的電阻去掉

(必須)

⑸lcdcon3hbpd-------------45

⑹ 原來的乘2變為乘4,這樣才能變為全屏,本來只能顯兩半屏(必須)

s2440lcd->lcdsaddr2 = m5d((image_framebuffer_dma_base + (480 * 272 * 4)) >> 1);

⑺ s3c2440disp.cpp檔案中, m_colordepth = 32;//24bpp的屏,(必須)是32

結果:成功在eboot中控制lcd顯示各種顏色,

2 在driver 資料夾中修改display資料夾中的驅動,這是進入到ce系統時的驅動

要修改的檔案有:

a wince500/platform/smdk2442/src/inc--

às3c2440a_lcd.h

主要有lcd

控制器的暫存器定義、

lcd控制器的工作時序定義、解析度的定義等等。

b wince500/platform/smdk2442/src/kernel/oal –init.c

initdisplay()

函式中,設定lcd控制器的引數

(發現剛進到initdisplay馬上就跳出來了,所以本bsp中沒用到裡面的配置)

跟蹤發現,也沒有進入off.c中的initdisplay

()函式

(1)display資料夾中,s3c2440disp.cpp檔案,函式s3c2440disp::s3c2440disp()是負責設定lcd引數的。regopenkeyex()開啟登錄檔,

regqueryvalueex

()查詢登錄檔

(2)getrotatemodefromreg()獲得旋轉模式,讀登錄檔

regopenkeyex()

開啟登錄檔,

regqueryvalueex

()查詢登錄檔

總結:1 在eboot裡設了lcd控制器,後面就不用設了,在driver裡的s3c2440disp.cpp只要設一些螢幕引數就可以了,如m_cxphysicalscreen m_cyphysicalscreen等

m_colordepth = 32;//24bpp

的屏,必須是32

二、2450平台1

修改了bsp_cfg.h

加入lcd_module_p043f1a4 模式,並選

2 加入預編譯巨集#ifdef lcdp043f1a4

只要在source.cmn檔案中加入定義就可切換

4 修改

lcd_vbpd = 2;//

lcd_vfpd = 4;//

都是典型值,沒有-1

操作 lcd_vspw = 10;// 10

lcd_hbpd = 4;//

lcd_hfpd = 8;//

lcd_hspw = 41;// 5

修改clkval = 9;

使輸出vclk

=9.5mhz

hsync

=15.7khz

vsync

=54.9hz 6

改變wincon0

中的第2

位為winconx_24bpp_888 

模式7

修改vidw00add1b0

視窗0 buffer

結束位址

(非常重要

) 如果沒改好,

lcd控制器不工作

s2450lcd->vidw00add1b0 = (uint32)((image_framebuffer_dma_base&0x007fffff + lcd_width*(lcd_height+1))); 8

修改vidw00add2b0

虛擬屏頁寬

(非常重要

) 如果沒改好,

lcd控制器不工作

s2450lcd->vidw00add2b0 = (offsize_in_byte< 9

關掉half-word swap ,

因為如果反轉,資料將變為b-

g-r藍色在高8位了

//s2450lcd->wincon0 |= (1<

//enable half-word swap

以上是去掉原來

2450

驅動中的語句

10*pfb

要改為unsigned int 型11

進入init.c

中,在initdisplay()

函式中,在開始就加入

return;

因為不想再初始一次

lcd控制器,

12修改

drivers

資料夾中的

dir檔案,使只編譯

display

資料夾13 14

,在drivers/display

資料夾中,

s3c2450disp.cpp ---->s3c2450disp::s3c2450disp()函式,

修改引數如下:

m_redmasksize = 8;

m_redmaskposition = 16;

m_greenmasksize = 8;

m_greenmaskposition = 8;

m_bluemasksize = 8;

m_bluemaskposition = 0;

m_colordepth = 32;//

必須的m_framebuffersize = m_nscreenheight * m_cbscanlinelength*2;

15drivers/display

資料夾,

surf.cpp----> setvisiblesu***ce函式如

7,8步修改引數,否則在關閉

media player

時,進入這裡重新初始會把

lcd控制器破壞,

變成白屏

16drivers/display -----ddoverlay.cpp

檔案:initoverlay()

函式,如果要用成

24位,記得在這裡要進行修改,不然一旦呼叫

overlay,

就會使得

lcd控制器不工作了

2 4寸METER開發總結

1.環境配置 s14使用的是微控制器,需要使用keil來編譯,批處理生成二進位制檔案通過串列埠燒進機器 只需要按照s14開發環境配置流程裡的步驟一步一步來即可 2.理解結構體欄位 理解online listitem llist 和online dataentry data entry 結構體中每個字...

2 4寸液晶控制方法

2.4寸液晶控制方法 有兩種控制方法 1.對控制暫存器操作 2.對視訊記憶體操作 兩種控制方法實際都是通過對lcd控制器 spf5408 的暫存器進行操作 該控制器提供乙個索引暫存器 index register 對該暫存器的寫入操作可以指定操作的暫存器索引,提供了rs控制線來區別對index re...

24英吋iMac與27英吋iMac詳細對比

蘋果至今仍在銷售21.5英吋和27英吋的imac,它們於2020年8月進行了更新,為它們提供了固態驅動器和新的英特爾晶元。27英吋具有最大的計算能力和更好的顯示效果。那麼,新的24英吋imac與曾經是頂級產品的27英吋imac有何不同?27英吋imac具有10核intel core i9處理器,並且...