機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
Linux系統(tǒng)下基于S3C2410X的液晶顯示驅(qū)動(dòng)程序的研究
Linux系統(tǒng)下基于S3C2410X的液晶顯示驅(qū)動(dòng)程序的研究
 更新時(shí)間:2010-2-5 16:28:33  點(diǎn)擊數(shù):0
【字體: 字體顏色

隨著高性能嵌入式處理器的普及以及硬件成本的降低,特別是ARM系列處理器的不斷推出,嵌入式系統(tǒng)的功能不斷增強(qiáng),嵌入式系統(tǒng)的應(yīng)用領(lǐng)域也不斷擴(kuò)大。為了更好地操作系統(tǒng),顯示系統(tǒng)工作狀況,需要使用液晶實(shí)時(shí)顯示。然而在嵌入式系統(tǒng)的液晶驅(qū)動(dòng)方面,不同的嵌入式硬件對(duì)應(yīng)的驅(qū)動(dòng)程序編寫方法卻千差萬別。S3C2410X是三星公司生產(chǎn)的基于ARM920T內(nèi)核的RISC處理器,主頻高達(dá)203 MHz,內(nèi)部集成了具有通用性的LCD控制器,支持STN和TFT液晶顯示。

本文的研究?jī)?nèi)容源于一個(gè)正在開發(fā)的無線監(jiān)控網(wǎng)絡(luò)系統(tǒng),該系統(tǒng)主要用來控制大田的灌溉,有3種工作方式:定時(shí)、定量和按邏輯條件工作,并能根據(jù)外在環(huán)境的變化做出相應(yīng)的決策。同時(shí),系統(tǒng)還能實(shí)時(shí)顯示系統(tǒng)工作狀況,并可以在系統(tǒng)界面上設(shè)置系統(tǒng)工作參數(shù)。為了實(shí)現(xiàn)該系統(tǒng),采用合肥華恒公司生產(chǎn)的2410開發(fā)板作為主機(jī),采用PD064VT5作為顯示屏,分辨率為640×480。該顯示屏采用18 b數(shù)據(jù)信號(hào),能顯示262 144色。本文從硬件和軟件2個(gè)方面詳細(xì)介紹液晶顯示驅(qū)動(dòng)程序的實(shí)現(xiàn),給出了一種在Linux操作系統(tǒng)下編寫液晶驅(qū)動(dòng)的比較通用的方法。

1  系統(tǒng)硬件電路設(shè)計(jì)

1.1 LCD控制器

LCD控制器提供CPU應(yīng)用處理機(jī)與被動(dòng)(STN)或主動(dòng)(TFT)平板顯示器的接口,其主要功能是產(chǎn)生顯示驅(qū)動(dòng)信號(hào),進(jìn)而控制LCD的顯示。在驅(qū)動(dòng)LCD設(shè)計(jì)的過程中首先配置LCD控制器。在配置LCD控制器時(shí)需要正確的設(shè)置:顯示方式(主動(dòng)或被動(dòng)顯示)、顯示類型(彩色或單色)、各種時(shí)鐘信號(hào)、每行及每列的像點(diǎn)數(shù)以及每個(gè)像點(diǎn)的位數(shù)參數(shù),然后則是幀緩沖區(qū)的指定,用戶所要顯示的數(shù)據(jù)都是從該緩沖區(qū)中讀出,再顯示到屏幕上的。隨著技術(shù)的發(fā)展,現(xiàn)在的嵌入式處理器(片上系統(tǒng))一般都集成LCD控制器,如本系統(tǒng)采用的ARM上就集成LCD控制器。集成LCD控制器的片上系統(tǒng)的基本體系結(jié)構(gòu)如圖1所示。



在圖1中,處理器內(nèi)核是整個(gè)片上系統(tǒng)的核心,如本系統(tǒng)的ARM內(nèi)核。系統(tǒng)總線是指處理器內(nèi)部的總線,如ARM著名的AMBA總線,其他片上系統(tǒng)的外設(shè)都通過總線和處理器連接。在LCD控制器工作時(shí),通過DMA請(qǐng)求占用系統(tǒng)總線,直接通過SDRAM控制器讀取SDRAM中指定地址(顯示緩沖區(qū))的數(shù)據(jù)。此數(shù)據(jù)通過LCD控制器轉(zhuǎn)換成液晶屏掃描數(shù)據(jù)的格式,驅(qū)動(dòng)液晶屏顯示。這種模式是集成了LCD控制器的嵌入式處理器普遍使用的方式,其優(yōu)點(diǎn)是:通過利用系統(tǒng)的SDRAM控制器,使顯示緩沖和系統(tǒng)共享RAM空間,處理器可以直接讀/寫顯示緩沖區(qū);節(jié)省額外的顯示緩存控制器和昂貴的顯示緩存。

1.2  S3C2410X內(nèi)部LCD控制器管腳

S3C2410X具有內(nèi)置的LCD控制器,該控制器提供如下外部接口信號(hào):

VFRAME:LCD控制器和LCD驅(qū)動(dòng)器之間的幀同步信號(hào)。它通知LCD屏新的1幀的顯示,LCD控制器在一個(gè)完整幀的顯示后發(fā)出VFRAME信號(hào)。

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

VD[23:0]:視頻數(shù)據(jù)信號(hào)。PD064VT5是一個(gè)具有31管腳的液晶屏,根據(jù)工作方式的不同有不同的連接方式,圖2是該液晶屏工作在分辨率為640×480時(shí)與S3C2410X的連接圖。

1.3  S3C2410X內(nèi)部LCD控制器

LCD控制器由REGBANK,LCDCDMA,VIDPRCS,TIMEGEN和LPC3600組成,如圖3所示。REGBANK有17個(gè)可編程寄存器組和256X16的調(diào)色板存儲(chǔ)器,用來設(shè)定LCD控制器。LCDCDMA是一個(gè)專用DMA,自動(dòng)從幀存儲(chǔ)器傳輸視頻數(shù)據(jù)到LCD控制器,用這個(gè)特殊的DMA,視頻數(shù)據(jù)可不經(jīng)過CPU干涉就顯示在屏幕上。VIDPRCS接收從LCDCDMA來的視頻數(shù)據(jù)并在將其改變到合適數(shù)據(jù)格式后經(jīng)VD[23:0]將之送到LCD驅(qū)動(dòng)器,如4/8單掃描或4雙掃描顯示模式。TIMEGEN由可編程邏輯組成,以支持不同LCD驅(qū)動(dòng)器的接口時(shí)序和速率的不同要求。TIMEGEN產(chǎn)生VFRAME,VLINE,VCLK,VM信號(hào)等。



1.4  S3C2410X內(nèi)部LCD控制寄存器

S3C2410X的LCD控制器內(nèi)有5個(gè)寄存器,分別為L(zhǎng)CDCON1,LCDCON2,LCDCON3,LCDCON4,LCDCON5。這些寄存器的設(shè)置可以參見參考文獻(xiàn)[2]。在本系統(tǒng)中,液晶屏PD064VT5的相關(guān)時(shí)間時(shí)間參數(shù)以及時(shí)序圖分別如表1和圖4所示。為了使液晶屏正確顯示,需要相應(yīng)的設(shè)定寄存器的值。為此,得到如下關(guān)鍵參數(shù):   

HSPW=96 HBPD=48 HFPD=16 VSPW=2
VBPD=33 VFPD=10 CLKVAL=4

同時(shí)將PNRMODE設(shè)為3,表示所用模塊是TFT型;BPPMODE設(shè)為12,表示采用16 bpp輸出,選擇FRM565視頻輸出數(shù)據(jù)的格式。

2 系統(tǒng)軟件設(shè)計(jì)

本系統(tǒng)中,采用的操作系統(tǒng)內(nèi)核版本為2.4.20-8,并采用北京飛漫公司的MINIGUI軟件進(jìn)行系統(tǒng)界面的開發(fā)。由于在Linux2.2.XX之后內(nèi)核版本中出現(xiàn)了一種驅(qū)動(dòng)程序接口幀緩沖(Frame Buffer),因而LCD設(shè)備的驅(qū)動(dòng)程序必須采用Linux的幀緩沖設(shè)備來處理與LCD控制器的底層命令。




幀緩沖設(shè)備對(duì)圖像硬件設(shè)備進(jìn)行抽象化處理,使應(yīng)用軟件可以通過定義明確的界面訪問圖像硬件設(shè)備,從而使軟件無需了解涉及硬件底層驅(qū)動(dòng)的細(xì)節(jié)就可以直接對(duì)顯示緩沖區(qū)進(jìn)行讀寫和I/O控制等操作。在通常情況下,驅(qū)動(dòng)程序都為應(yīng)用程序提供了專門的設(shè)備節(jié)點(diǎn)來訪問該設(shè)備,如:/dev/fb0。用戶可以將它看成是顯示內(nèi)存的一個(gè)映像,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫操作,而讀寫操作可以立即反應(yīng)到LCD上。同時(shí)Linux支持多個(gè)幀緩沖設(shè)備,最多可達(dá)32個(gè),即/dev/fb0~/dev/fb31,其主設(shè)備號(hào)都為29,次設(shè)備號(hào)分別對(duì)應(yīng)與0~31,缺省情況下的幀緩沖設(shè)備是/dev/fb0。

幀緩沖的實(shí)現(xiàn)分為2個(gè)方面:對(duì)LCD及其相關(guān)部件的初始化;對(duì)畫面緩沖區(qū)的讀寫,具體到代碼為read,write,lseek等系統(tǒng)接口的調(diào)用。基于幀緩沖的完整驅(qū)動(dòng)程序就是以上兩方面的實(shí)現(xiàn)。由于在Linux的發(fā)布版本中,包含了大量的設(shè)備驅(qū)動(dòng)程序源代碼,例如drivers/video下提供了多種顯示卡的幀緩沖驅(qū)動(dòng)程序,這就省去了上層接口調(diào)用程序的工作,只需要針對(duì)所用的LCD模塊的類型以及接口時(shí)序,修改驅(qū)動(dòng)程序中與底層相關(guān)的內(nèi)容,即可得到自己的驅(qū)動(dòng)程序。

與Linux的幀緩沖相關(guān)的代碼在linux/drivers/video下,打開該路徑后在目錄下有一個(gè)名為S3C2410fb.c的文件,這個(gè)文件就是支持S3C2410X的幀緩沖驅(qū)動(dòng)源文件,同時(shí)其定義了與底層相關(guān)的參數(shù)。根據(jù)上面對(duì)LCD控制器的分析結(jié)果,將該文件修改如下:



將修改后的驅(qū)動(dòng)程序加入內(nèi)核,然后重新編譯內(nèi)核。將新編譯的Linux內(nèi)核映像文件燒寫到FLASH中,然后重新啟動(dòng)系統(tǒng),就可以在LCD屏幕上顯示圖片以及圖形界面。系統(tǒng)運(yùn)行效果如圖5所示。



3 結(jié)語

本文對(duì)S3C2410X的LCD內(nèi)部控制器及其管腳做了詳細(xì)的介紹,并給出具體的硬件連接圖。同時(shí)也詳細(xì)介紹Linux的驅(qū)動(dòng)原理,并給出相應(yīng)的軟件實(shí)現(xiàn)。經(jīng)過上述方法實(shí)現(xiàn)的設(shè)備驅(qū)動(dòng)程序,可以很好地顯示本系統(tǒng)中的示例程序,在系統(tǒng)中穩(wěn)定的運(yùn)行。如需要改變液晶顯示器的型號(hào),只要根據(jù)具體的液晶要求,搭建相應(yīng)的硬件實(shí)現(xiàn)電路,然后根據(jù)上面的介紹,編寫相應(yīng)的驅(qū)動(dòng)顯示程序,修改相應(yīng)的寄存器參數(shù),即可很成功地點(diǎn)亮你所選擇的液晶屏.

  • 上一篇: 便攜式GPS接收機(jī)設(shè)計(jì)
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1