當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1. 為了不讓大家覺枯燥,讓朋友們更好的理解,我以一個(gè)實(shí)例來敘述 S3C2410 下一個(gè)驅(qū)動(dòng)程序的編寫(本文的初始化源碼以華恒公司提供的 s3c2410fb.c 為基礎(chǔ))及簡(jiǎn)單的 GUI程序的編寫。2. 拿到一塊 LCD,首先要將 LCD的

1. 為了不讓大家覺枯燥,讓朋友們更好的理解,我以一個(gè)實(shí)例來敘述 S3C2410 下一個(gè)驅(qū)動(dòng)程序的編寫(本文的初始化源碼以華恒公司提供的 s3c2410fb.c 為基礎(chǔ))及簡(jiǎn)單的 GUI程序的編寫。

2. 拿到一塊 LCD,首先要將 LCD的各個(gè)控制線與 S3C2410 的 LCD控制信號(hào)相接,當(dāng)然,電源也一定要接入了,否則不亮可別找我。另外需要注意以下幾點(diǎn):

1) 背光:對(duì)于大部分的彩色 LCD一定要接背光,我們才能看到屏上的內(nèi)容;

2) 控制信號(hào):不同的 LCD 廠商對(duì)于控制信號(hào)有不同的叫法,S3C2410 芯片手冊(cè)也給出了一個(gè)信號(hào)的多個(gè)名稱(圖一),這就要看你們硬件工程師的功底了,

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

圖一 S3C2410 手冊(cè)上給出的控制信號(hào)的名稱及解釋

這里我做一個(gè)簡(jiǎn)單的介紹:

VFRAME:LCD 控制器和 LCD 驅(qū)動(dòng)器之間的幀同步信號(hào)。該信號(hào)告訴 LCD屏的新的一幀開始了。LCD 控制器在一個(gè)完整幀顯示完成后立即插入一個(gè)VFRAME 信號(hào),開始新一幀的顯示;

VLINE:LCD控制器和 LCD驅(qū)動(dòng)器之間的線同步脈沖信號(hào),該信號(hào)用于 LCD驅(qū)動(dòng)器將水平線(行)移位寄存器的內(nèi)容傳送給 LCD 屏顯示。LCD 控制器在整個(gè)水平線(整行)數(shù)據(jù)移入 LCD驅(qū)動(dòng)器后,插入一個(gè) VLINE 信號(hào);

VCLK:LCD控制器和 LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào),由 LCD控制器送出的數(shù)據(jù)在 VCLK的上升沿處送出,在 VCLK的下降沿處被 LCD驅(qū)動(dòng)器采樣;

VM:LCD驅(qū)動(dòng)器的 AC 信號(hào)。VM 信號(hào)被 LCD驅(qū)動(dòng)器用于改變行和列的電壓極性,從而控制像素點(diǎn)的顯示或熄滅。VM 信號(hào)可以與每個(gè)幀同步,也可以與可變數(shù)量的 VLINE 信號(hào)同步。

3) 數(shù)據(jù)線:也就是我們說的 RGB 信號(hào)線,S3C2410 芯片手冊(cè)上都有詳細(xì)的說明,由于篇幅關(guān)系,在此不一一摘錄,不過需要與硬件工程是配合的是他采用了哪種接線方法,24 位 16 位或其它。對(duì)于 16 位 TFT 屏又有兩種方式,在寫驅(qū)動(dòng)前你要清楚是 5:6:5還是 5:5:5:I,這些與驅(qū)動(dòng)的編寫都有關(guān)系

4) 要注意一下 LCD 的電源電壓,對(duì)于手持設(shè)備來說一般都為 5V 或 3.3V,或同時(shí)支持 5V和 3.3V,如果 LCD的需要的電源電壓是 5V,那就要注意了,S3C2410 的邏輯輸出電壓只有 3.3V,此時(shí)一定要讓你們的硬件工程師幫忙把 S3C2410 的邏輯輸出電壓提高到 5V,否則你可能能將屏點(diǎn)亮,但顯示的圖像要等到太陽從西邊出來的那一天才能正常,呵呵,我可吃過苦頭的哦!

5) 3.3V邏輯電壓轉(zhuǎn)變成 5V邏輯電壓電路圖(此圖由華恒公司提供)

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

6) 最后還有一個(gè)問題,有些 LCD 屏還需要一顆伴侶芯片,就是 S3C2410 手冊(cè)中的那顆 LPC3600。這可能在 LCD 的手冊(cè)中都有論述吧,我沒有遇到過這樣的屏,所以也不是很清楚。那么是不是所有的屏與 S3C2410相接都需要那個(gè)討厭的家伙呢?這是好多人(包括我)在最開始都會(huì)有的疑問,不過現(xiàn)在的大部分 LCD 屏應(yīng)該都不需要這個(gè)討厭的家伙了,屏的控制信號(hào)直接與 S3C2410 的控制信號(hào)相接就可以了,至少我還沒有遇到過。

7) 還得提醒大家一下,S3C2410到 LCD屏的連線千萬千萬別超過 0.5 米,否則會(huì)給你帶來麻煩,我也是吃過苦頭的,LCD屏上面的部分顯示任何信息都是正確的,而只有屏的底部會(huì)有時(shí)正確有時(shí)錯(cuò)誤,折騰了好一陣,才知道是連線太長(zhǎng)的緣故!

3. 好了,在硬件工程師的幫助下,硬件接好了,那就該我們做軟件的干活了,編寫驅(qū)動(dòng)吧

1) 讓我們首先看一下 RGB數(shù)據(jù)結(jié)構(gòu)的定義

在 s3c2410fb.c 中找到如下信息

static struct s3c2410fb_rgb xxx_tft_rgb_16 = {

red: {offset:11, length:5,},

green: {offset:5, length:6,},

blue: {offset:0, length:5,},

transp: {offset:0, length:0,},

};

這是對(duì) 16 位色的 RGB 顏色進(jìn)行定義,R:G:B:I = 5:6:5:0,即我們常說的565 顯示方式。呵呵,為了讓有些朋友更好的理解,我多羅嗦幾句,我們隨便寫一個(gè) 16 位數(shù)據(jù)的顏色數(shù)據(jù)(為了分析的方便,我把它寫成二進(jìn)制)

RGB = 10101101 10111001

根據(jù)上面的結(jié)構(gòu)定義我們來分析一下 RGB 各是多少(因?yàn)闆]有透明色,我們不去分析)

a) blue: {offset: 0, length: 5} 偏移量為 0,長(zhǎng)度為 5,我們從那個(gè) RGB 中提取出來便是“11001”

b) green:{offset: 5, length: 6} 偏移量為 5,長(zhǎng)度為 6,我們從那個(gè) RGB 中提取出來便是 101 101

c) red: {offset: 11, length: 5 } 偏移量為 11,長(zhǎng)度為 5,我們從那個(gè) RGB 中提取出來便是 10101

d) 我們得到了一個(gè) RGB 值為 13:45:200,就是這個(gè)顏色

e) 那么反過來,有了 RGB的值我們?cè)撊绾?,因?yàn)?RGB 的有效位數(shù)都不足一個(gè)字節(jié)(8 位),那我們只能忍痛割愛了,舍棄掉低位數(shù)據(jù),代碼如下

r=(rDat&0xF8);

g=(gDat&0xFC);

b=(bDat&0xF8);

hight=r|(g<<5);

low=(g>>3)|(b<<3);

color=(hight>>8)|low;

記住,這段代碼在 GUI 程序中是有用的

2) 對(duì)于 8 位色(256 色)的數(shù)據(jù)結(jié)構(gòu)定義

static struct s3c2410fb_rgb rgb_8 = {

red: {offset:0, length:4,},

green: {offset:0, length:4,},

blue: {offset:0, length:4,},

transp: {offset:0, length:0,},

};

這是原程序中給出的定義,我感覺有些錯(cuò)誤,我認(rèn)為應(yīng)該為 R:G:B = 3:3:2

static struct s3c2410fb_rgb rgb_8 = {

red: {offset:5, length:3,},

green: {offset:2, length:3,},

blue: {offset:0, length:2,},

transp: {offset:0, length:0,},

};

因?yàn)闆]有親自去調(diào)試,所以沒有什么發(fā)言權(quán),希望做過這方面的朋友給我一個(gè)答案。

3) 對(duì)于 CSTN 屏,一般都能達(dá)到 12 位色(4096 色)的,S3C2410 這顆芯片也是支持的,但是在軟件方面要做的工作比較大,因?yàn)閺脑械拇a,我們找不到任何 12位色顯示的跡象,另外 Linux 本身好像也不支持 12 位色的,如果你要作的事情比較簡(jiǎn)單,那你就自己寫代碼吧。我在此給出 12位色的數(shù)據(jù)結(jié)構(gòu)定義

static struct s3c2410fb_rgb xxx_stn_rgb_12 = {

red: {offset:8, length:4,},

green: {offset:4, length:4,},

blue: {offset:0, length:4,},

transp: {offset:0, length:0,},

};

但是要完成 12 位色 CSTN 屏驅(qū)動(dòng)程序的編寫還有一些工作要做,稍后我會(huì)適當(dāng)?shù)南虼蠹医榻B。

4) 接著看下面的代碼,其中要修改的部分已經(jīng)用綠色標(biāo)出,下面分別進(jìn)行介紹。

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

a) 顏色位數(shù)

bpp:16

如果你的 LCD 屏是 TFT 的,那一般都可以達(dá)到 16 位色或 24 位色,這也要看硬件怎么連接了,根據(jù)情況進(jìn)行設(shè)置即可;

如果你的 LCD屏是 CSTN的,按照常規(guī) LCD手冊(cè)的介紹,一般都可以支持到8 位色(256色),而實(shí)際的 CSTN屏的顯示效果都可以達(dá)到 12 位色(4096色),那可有很大的區(qū)別的,如果你要選擇便宜的屏又要豐富的顏色,那就費(fèi)點(diǎn)勁,完成 12 位色的驅(qū)動(dòng)。

b) LCD屏的寬度和高度

xres: 240

yres: 320

這個(gè)就不用多說了,你的屏的分辨率是多少就設(shè)置成多少唄。

c) 寄存器的設(shè)置,這些也不困難。下面就讓我們一起一口一口的將 S3C2410 的LCD寄存器統(tǒng)統(tǒng)吃掉! 首先介紹一下我這塊屏,這是日立的一塊 TFT 屏,大小為 640X240,可以支持到 16位色。 與驅(qū)動(dòng)有關(guān)的一張表

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

圖二 LCD屏資料

有了這些信息,讓我們看一下 LCD寄存器的設(shè)置。

LCD控制器1

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

LINECNT --- 這是一個(gè)只讀的數(shù)據(jù),我們當(dāng)然沒有必要理它

CLKVAL --- 這可是一個(gè)很有用的參數(shù),其實(shí)沒必要管它后面的計(jì)算,我們可以通過實(shí)際的測(cè)試來得出一個(gè)有效的值,對(duì)于320x240 的屏一般設(shè)置為 7 就可以了,而對(duì)于 640x480 的屏,該值可以小一點(diǎn)。對(duì)于后面的計(jì)算公式及注釋(STN: CLKVAL <= 2,TFT: CLKVAL <= 0),我不知道該如何去理解,因?yàn)樵趯?shí)際的應(yīng)用中我點(diǎn)了一塊 640X240 的CSTN 屏,當(dāng)我的 CLKVAL = 1 時(shí)才達(dá)到了一個(gè)最佳的效果,這似乎與說明書相違背,我也解釋不清為什么?!

PNRMODE --- 這個(gè)應(yīng)該不用多做解釋,大家一看都明白了,對(duì)于 TFT 屏,只能設(shè)置成 11,而對(duì)于 CSTN 屏,可能需要根據(jù)實(shí)際屏的信息去設(shè)置,我遇到的屏都設(shè)置成 10,即 8bit 單掃描模式。對(duì)于4bit單掃描、4bit 雙掃描、8bit 單掃描的說明在 s3c2410 的手冊(cè)中有詳細(xì)的介紹,大家可以去參考一下。

BPPMODE --- 這個(gè)參數(shù)更不用多說了吧,就是設(shè)置屏的顏色位數(shù)嘍。

這些參數(shù)的設(shè)置都很簡(jiǎn)單,我給出我這塊屏的定義:


lcdcon1: LCD1_BPP_16T | LCD1_PNR_TFT | LCD1_CLKVAL(1),

同時(shí),我也給出一塊 CSTN 屏的寄存器參數(shù)信息


lcdcon1: LCD1_BPP_12S | LCD1_PNR_8S | LCD1_CLKVAL(9),


LCD控制器2

0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>

對(duì)于 TFT 屏必須要填,至于什么意思怎么翻譯,相信大家都比我的水平強(qiáng),自己翻譯吧。我只說明從 LCD中如何將這個(gè)值“扣”出來。

很容易,看一下圖二 LCD屏資料,對(duì)比一下得出如下信息:

LCD2_VBPD:


Vertical back porch 典型值為 7

LCD2_VFPD:


Vertical front porch 典型值為 4

LCD2_VSPW:


Vsync Valid width 典型值為 2

關(guān)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉