S3C2440 TFT LCD驅動程式程式設計要點

2021-05-01 19:04:39 字數 1829 閱讀 2746

1、開啟lcd背光

將lcd背光對應的gpio設定為禁止上拉(gpxup相應位寫入1),選擇output型別(gpxcon相應位寫入01),輸出為高電平(gpxdat相應位寫入1)。

2、開啟lcd電源

可以將gpg4選擇為lcd_pwren(gpgcon:9-8寫入11),這時候lcd電源的開啟/關閉可以通過lcdcon5:3來控制。

也可以自定義其他gpio用作lcd電源開關,只需將此gpio設定為禁止上拉(gpxup相應位寫入1),選擇output型別(gpxcon相應位寫入01),輸出為高電平(gpxdat相應位寫入1)開啟lcd電源。

3、設定其他訊號線

其他訊號線包括vd0-vd23和vframe、vline、vclk等,分別在gpccon,gpdcon中選擇相應功能。

4、設定lcd的頻率(vclk)

對於tft lcd,s3c2440提供的vclk的計算公式為:

vclk = hclk / ((clkval+1)*2)

可以得出:

clkval = hclk / (vclk * 2) - 1

我的hclk是100mhz(cpu執行在400mhz, clkdiv_val設定為5,fclk:hclk:pclk = 1:4:8),vclk使用螢幕推薦的6.4m,得到:

clkval = 100000000 / (6400000 * 2) - 1 = 6.8

選擇最接近的整數值7,寫入lcdcon1:17-8。

(vclk其實就是根據 每秒幀數*幀行數*行畫素  計算出來的,幀行數和行畫素需要包含空白數和同步數)

5、設定其他相關引數

lcd相關的引數主要還有這幾個:

lineval: lcd水平畫素-1,如320-1 = 319

hozval:  lcd垂直畫素-1,如240-1 = 239

hfpd:    行開始前的vclk時鐘數(lcd螢幕的datasheet一般有推薦值)

hbpd:    行結束後的vclk時鐘數(lcd螢幕的datasheet一般有推薦值)

hspw:    行之間水平同步的無效vclk時鐘數(lcd螢幕的datasheet一般有推薦值)

vfpd:    幀資料開始前的空白行數(lcd螢幕的datasheet一般有推薦值)

vbpd:    幀資料結束後的空白行數(lcd螢幕的datasheet一般有推薦值)

vspw:    幀之間垂直同步的無效行數(lcd螢幕的datasheet一般有推薦值)

(相關暫存器lcdcon2, lcdcon3, lcdcon4)

2440支援虛擬螢幕,可以通過改變lcd暫存器實現螢幕快速移動

pagewidth:虛擬螢幕一行的位元組數,如果不使用虛擬螢幕,設定為實際螢幕的行位元組數,如16位寬320畫素,設為320 * 2

offsize:虛擬螢幕左側偏移的位元組數,如果不使用虛擬螢幕,設定為0

(相關暫存器lcdsaddr1,lcdsaddr2,lcdsaddr3)

7、確定訊號的極性

2440的lcd控制器允許設定vclk、vline、vframe等訊號的極性(上公升沿有效還是下降沿有效),需要對照lcd的datasheet一一確認。

(相關暫存器lcdcon5)

8、禁止lpc3600/lcc3600模式!

如果不是使用三星lpc3600/lcc3600 lcd,必須禁止lpc3600/lcc3600模式(寫入0到tconsel)!

envid設為1 (lcdcon1:0寫入1)

S3C2440 UART串列埠驅動

通用非同步接收器和傳送器 universal asynchronous receiver and transmitter 簡稱uart。通常是嵌入式裝置中預設都會配置的通訊介面。這是因為,很多嵌入式裝置沒有顯示屏,無法獲得嵌入式裝置實時資料資訊,通過uart串列埠和超級終端相連,列印嵌入式裝置輸出資...

s3c2440 LCD驅動編寫

struct lcd regs static struct fb ops s3c lcdfb ops static volatile unsigned long gpbcon static volatile unsigned long gpbdat static volatile unsigned ...

S3C2440 Linux驅動移植 NAND驅動

開發板 tq2440 核心 linux 2.6.32 pc os ubuntu 11.04 本文將對nand驅動的移植進行簡單介紹。其中,將對nand控制器所需要的引數進行詳細說明。開啟檔案arch arm plat s3c24xx common smdk.c,修改mtd partition結構體陣...