日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]S3C2440的LCD控制器支持虛擬顯示,說(shuō)的容易理解一點(diǎn)就是,可以顯示比實(shí)際顯示器大的圖像。

 一、概述

S3C2440的LCD控制器支持虛擬顯示,說(shuō)的容易理解一點(diǎn)就是,可以顯示比實(shí)際顯示器大的圖像??梢赃@樣想象,有一個(gè)大的圖片,但是顯示器(顯示串口)比較小,但是我們可以相對(duì)于大圖片(即大圖片不動(dòng))移動(dòng)顯示器的位置,從而實(shí)現(xiàn)觀(guān)察大圖片的其他部分的內(nèi)容。芯片手冊(cè)上對(duì)這部分內(nèi)容用一個(gè)圖片來(lái)生動(dòng)展示如下。

這里說(shuō)明四點(diǎn):

1.虛擬內(nèi)存(大照片的存儲(chǔ)空間)比視口的緩沖空間大

2. 虛擬內(nèi)存的基地址是固定的

3.大照片的開(kāi)始位置(虛擬內(nèi)存的基地址(LCDBANK))是以4M對(duì)齊的,eg:0x30400000

4.可以更改視口的基地址(LCDBASEU)和結(jié)束地址(LCDBASEL)來(lái)移動(dòng)視口

二、LCD控制器分析

1、虛擬顯示的原理

思考兩個(gè)問(wèn)題:

1.怎么告知LCD控制器大照片的尺寸,這將來(lái)涉及到視口如何取數(shù)據(jù)的問(wèn)題(配置LCDSADDR3)

2.怎么移動(dòng)窗口(配置LCDSADDR1和LCDSADDR2)

可以直接告訴你,大照片的垂直長(zhǎng)度不用設(shè)置,只用設(shè)置大照片的水平寬度。例如,我的顯示器視口大小是480*272,但是照片的大小是640*480。這時(shí),我們只用告訴LCD控制器大照片的水平寬度640。在LCDSADDR3中有個(gè)OFFSIZE和PAGEWIDTH,其中PAGEWIDTH是視口寬度(480),而OFFSIZE是大照片多于視口的寬度(160)。通過(guò)這兩個(gè)參數(shù)就告訴了控制器大照片的水平寬度為(480+160=640)。

為什么要規(guī)定這個(gè)大照片的寬度呢?首先,我們考慮照片在內(nèi)存中是怎樣存儲(chǔ)的(以16bpp為例):

0 1 ··· 639

0(16bit)(16bit)(16bit)(16bit)

1(16bit)(16bit)(16bit)(16bit)

·

· ·

· ·

· ·

· ·

·

479(16bit)(16bit)(16bit)(16bit)

可以看到理論上是個(gè)立體空間,(x,y)決定平面坐標(biāo),而z決定顏色。但是,在存儲(chǔ)器上地址是連續(xù)的,可以看做一維的,說(shuō)的意思是先存(0,0)位置的顏色,占用兩個(gè)字節(jié),然后再存(1,0)位置的顏色,又占兩個(gè)字節(jié)······存完一行時(shí),緊接著再存下一行。總之一句話(huà),這個(gè)大圖片是連續(xù)的存儲(chǔ)在存儲(chǔ)器中。

然后,我們?cè)倏紤]一下在這里邊有一個(gè)小的窗口,我們以窗口在最左上角為例說(shuō)明,如下圖所示:

0 1。。。 479。。。 639

0 (16bit) (16bit) ··· (16bit)

(16bit)

1 (16bit) (16bit) ··· (16bit)

(16bit)

···

··· ··· ··· ··· ··· ···

271

(16bit) (16bit) ··· (16bit) ··· (16bit)

··· ··· ··· ··· ··· ··· ···

479 (16bit) (16bit) ··· (16bit) ··· (16bit)

我們可以看到,要顯示的視口比較小,它在顯示時(shí)從存儲(chǔ)器中讀取數(shù)據(jù),并不是從連續(xù)的空間中讀取數(shù)據(jù),而是只讀取每一行的部分(PAGEWIDTH)。

最后,我們來(lái)考慮一下,規(guī)定大圖片寬度(PAGEWIDTH和OFFSIZE)的意義。

1.通過(guò)規(guī)定大圖片的寬度,LCD控制器就知道如何劃分連續(xù)的存儲(chǔ)空間成一行一行的,即將連續(xù)的空間立體化。以L(fǎng)CDBANK為0x30400000為例,圖片寬度為(PAGEWIDTH+OFFSIZE=480+160=640)。這樣,LCD控制器就知道第一行末尾的地址(以字節(jié)為單位)是(0x30400000+640*2-1)。其中,由于是16bpp,所以每個(gè)像素占兩個(gè)字節(jié),所以640要乘以2,才得到實(shí)際的一行的移動(dòng)距離。同樣,第三行的第一個(gè)像素的地址是(0x30400000+640*2*2)。

2.PAGEWIDTH和OFFSIZE可以告訴LCD控制器,那些數(shù)據(jù)需要顯示,那些需要跳過(guò)。我們以上邊的圖為例,其實(shí)這個(gè)圖的視口的基地址就是LCDBANK。在讀取數(shù)據(jù)顯示的時(shí)候,先把(0x30400000,0x30400000+(PAGEDITH-1)*2)區(qū)間的存儲(chǔ)空間讀取到顯示器的第一行,然后跳過(guò)OFFSIZE*2個(gè)存儲(chǔ)單元(BYTE);接著再把(0x30400000+(PAGEDITH+OFFSIZE)*1*2,0x30400000+(PAGEDITH+OFFSIZE)*1*2+(PAGEDITH-1)*2)讀取到顯示器的第二行,其中乘以1代表偏移了一行的距離;接著再把(0x30400000+(PAGEDITH+OFFSIZE)*2*2,0x30400000+(PAGEDITH+OFFSIZE)*2*2+(PAGEDITH-1)*2)讀取到顯示器的第三行······

通過(guò)這些內(nèi)容,相信你已經(jīng)明白虛擬內(nèi)存顯示的基本原理。

2、移動(dòng)視口

還有一個(gè)問(wèn)題怎么移動(dòng)視口,明白了上邊的講述這個(gè)問(wèn)題就相當(dāng)簡(jiǎn)單了。我們更改視口的起始地址(LCDBASEU)和結(jié)束地址(LCDBASEL)就行了。先說(shuō)一下這兩個(gè)參數(shù)的意義,LCDBASEU是視口起始位置相對(duì)于LCDBANK的偏移地址,LCDBASEL是視口結(jié)束位置相對(duì)于LCDBANK相對(duì)于LCDBANK的地址。

好了,舉個(gè)例子來(lái)說(shuō)明如何平移視口。假設(shè),我們已經(jīng)把大圖片傳到虛擬內(nèi)存上了(以0x30400000為起始地址,占據(jù)的存儲(chǔ)空間是640*480*2)。我們的視口占據(jù)的內(nèi)存空間大小是(480*272*2)。剛開(kāi)始,我們的視口在大照片的左上角,即LCDBASEU=0,而 LCDBASEL為L(zhǎng)OWER21BITS(((0x30400000+640*272*2)>>1))。其中,函數(shù)LOWER21BITS()是區(qū)低21位。其實(shí),視口結(jié)束的地址(以BYTE為單位)是0x30400000+640*272*2-1,而(0x30400000+640*272*2)這種方式(小于這個(gè)限)是規(guī)定結(jié)束地址限的很好方式。 需要注意的是,這里邊乘的基數(shù)是640,而不是480,因?yàn)橐恍械膶挾仁?40,這點(diǎn)需要注意。我們可以結(jié)合下邊的LCDBASEL計(jì)算地址好好理解一下。

這個(gè)時(shí)候,假設(shè)我們想右移圖像100個(gè)像素,那么設(shè)置LCDSADDR1和LCDSADDR2就可以了。

#define LOWER21BITS(n) ((n) & 0x1fffff)

#define LCDFRAMEBUFFER 0x30400000

#define LINEVAL_TFT_480272 (272-1)

#define HOZVAL_TFT_480272 (480-1)

LCDSADDR1 = ((LCDFRAMEBUFFER>>22)<<21) | LOWER21BITS((LCDFRAMEBUFFER+100*2)>>1);

LCDSADDR2 = LOWER21BITS(((LCDFRAMEBUFFER+100*2)+ \

(LINEVAL_TFT_480272+1)*((HOZVAL_TFT_480272+1)+160)*2)>>1);

我們?cè)僭谶@個(gè)基礎(chǔ)上下移200個(gè)像素,那么程序?yàn)椋?/p>

LCDSADDR1 = ((LCDFRAMEBUFFER>>22)<<21) | LOWER21BITS((LCDFRAMEBUFFER+100*2+640*200*2)>>1);

LCDSADDR2 = LOWER21BITS(((LCDFRAMEBUFFER+100*2+640*200*2)+ \

(LINEVAL_TFT_480272+1)*((HOZVAL_TFT_480272+1)+160)*2)>>1);

我們?cè)僭谶@個(gè)基礎(chǔ)上上移100個(gè)像素,左移50個(gè)像素,那么程序?yàn)椋?/p>

LCDSADDR1 = ((LCDFRAMEBUFFER>>22)<<21) | LOWER21BITS((LCDFRAMEBUFFER+100*2+640*200*2-50*2-640*100*2)>>1);

LCDSADDR2 = LOWER21BITS(((LCDFRAMEBUFFER+100*2+640*200*2-50*2-640*100*2)+ \

(LINEVAL_TFT_480272+1)*((HOZVAL_TFT_480272+1)+160)*2)>>1);

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

8位單片機(jī)在嵌入式設(shè)計(jì)領(lǐng)域已經(jīng)成為半個(gè)多世紀(jì)以來(lái)的主流選擇。盡管嵌入式系統(tǒng)市場(chǎng)日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對(duì)新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

在嵌入式系統(tǒng)開(kāi)發(fā)中,程序燒錄是連接軟件設(shè)計(jì)與硬件實(shí)現(xiàn)的關(guān)鍵環(huán)節(jié)。當(dāng)前主流的單片機(jī)燒錄技術(shù)已形成ICP(在電路編程)、ISP(在系統(tǒng)編程)、IAP(在應(yīng)用編程)三大技術(shù)體系,分別對(duì)應(yīng)開(kāi)發(fā)調(diào)試、量產(chǎn)燒錄、遠(yuǎn)程升級(jí)等不同場(chǎng)景。...

關(guān)鍵字: 單片機(jī) ISP ICP IAP 嵌入式系統(tǒng)開(kāi)發(fā)

在嵌入式系統(tǒng)開(kāi)發(fā)中,看門(mén)狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門(mén)狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門(mén)狗 嵌入式系統(tǒng)

本文中,小編將對(duì)單片機(jī)予以介紹,如果你想對(duì)它的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)它的了解程度,不妨請(qǐng)看以下內(nèi)容哦。

關(guān)鍵字: 單片機(jī) 開(kāi)發(fā)板 Keil

隨著單片機(jī)系統(tǒng)越來(lái)越廣泛地應(yīng)用于消費(fèi)類(lèi)電子、醫(yī)療、工業(yè)自動(dòng)化、智能化儀器儀表、航空航天等各領(lǐng)域,單片機(jī)系統(tǒng)面臨著電磁干擾(EMI)日益嚴(yán)重的威脅。電磁兼容性(EMC)包含系統(tǒng)的發(fā)射和敏感度兩方面的問(wèn)題。

關(guān)鍵字: 單片機(jī) 電磁兼容

以下內(nèi)容中,小編將對(duì)單片機(jī)的相關(guān)內(nèi)容進(jìn)行著重介紹和闡述,希望本文能幫您增進(jìn)對(duì)單片機(jī)的了解,和小編一起來(lái)看看吧。

關(guān)鍵字: 單片機(jī) 復(fù)位電路

在這篇文章中,小編將為大家?guī)?lái)單片機(jī)的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 單片機(jī) 異常復(fù)位

今天,小編將在這篇文章中為大家?guī)?lái)單片機(jī)的有關(guān)報(bào)道,通過(guò)閱讀這篇文章,大家可以對(duì)它具備清晰的認(rèn)識(shí),主要內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 仿真器

單片機(jī)將是下述內(nèi)容的主要介紹對(duì)象,通過(guò)這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 中斷 boot

一直以來(lái),單片機(jī)都是大家的關(guān)注焦點(diǎn)之一。因此針對(duì)大家的興趣點(diǎn)所在,小編將為大家?guī)?lái)單片機(jī)的相關(guān)介紹,詳細(xì)內(nèi)容請(qǐng)看下文。

關(guān)鍵字: 單片機(jī) 數(shù)字信號(hào) 模擬信號(hào)
關(guān)閉