999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32的FSMC接口驅(qū)動(dòng)TFT彩屏設(shè)計(jì)

2013-04-12 00:00:00湯莉莉黃偉
現(xiàn)代電子技術(shù) 2013年20期

摘 要: TFT?LCD技術(shù)是微電子技術(shù)和LCD技術(shù)巧妙結(jié)合的高新技術(shù)。隨著人們對(duì)圖像清晰度、刷新率、保真度的要求越來越高,TFT?LCD的應(yīng)用范圍越來越廣。介紹了TFT數(shù)字彩屏的工作原理,利用STM32處理器的FSMC接口設(shè)計(jì)出了一種能直接驅(qū)動(dòng)數(shù)字液晶屏的方法。設(shè)計(jì)的硬件電路和軟件程序均能對(duì)顯示控制芯片進(jìn)行有效的控制。在實(shí)際應(yīng)用中顯示清晰流暢,并且CPU有足夠的時(shí)間來處理用戶程序。該方案能成功應(yīng)用在電腦橫機(jī)的人機(jī)界面顯示中,且其硬件電路結(jié)構(gòu)簡單、控制方式靈活、對(duì)于其他型號(hào)的接口芯片也能提供參考。

關(guān)鍵詞: TFT; DMA; FSMC; STM32F103VE

中圖分類號(hào): TN911?34; TP33 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2013)20?0139?03

隨著電子產(chǎn)品的不斷更新,各種顯示界面的開發(fā)越來越多,由于TFT彩屏的性價(jià)比高,因而被廣泛用在各種電子設(shè)備上作為顯示屏。目前驅(qū)動(dòng)TFT彩屏的方案有很多,可以用底端單片機(jī)驅(qū)動(dòng)一個(gè)終端類型的液晶模組,這種模組價(jià)格比較貴,當(dāng)然用起來還是很方便的。只要單片機(jī)通過串口或并行口向TFT發(fā)送幾個(gè)字節(jié)的命令,就能在屏幕上顯示你需要的效果。本設(shè)計(jì)利用STM32的FSMC總線直接驅(qū)動(dòng)TFT數(shù)字彩屏。這種方案對(duì)相應(yīng)的寄存器進(jìn)行配置后就可以自動(dòng)向TFT數(shù)字彩屏發(fā)送數(shù)據(jù),無需CPU參與,讓CPU有足夠時(shí)間來處理其他程序。

1 STM32簡介

STM32是基于ARM內(nèi)核Cortex?M3的32位微控制器系列。Cortex?M3內(nèi)核是為低功耗和價(jià)格敏感的應(yīng)用而專門設(shè)計(jì)的,具有突出的能效比和處理速度。通過采用Thumb?2高密度指令集,Cortex?M3內(nèi)核降低了系統(tǒng)存儲(chǔ)要求,同時(shí)快速的中斷處理能夠滿足控制領(lǐng)域的高實(shí)時(shí)性要求,使基于該內(nèi)核設(shè)計(jì)的STM32系列微控制器能夠以更優(yōu)越的性價(jià)比,面向更廣泛的應(yīng)用領(lǐng)域。

STM32系列微控制器為用戶提供了豐富的選擇,可適用于工業(yè)控制、智能家電、建筑安防、醫(yī)療設(shè)備以及消費(fèi)類電子產(chǎn)品等多方位嵌入式系統(tǒng)設(shè)計(jì)。STM32系列采用一種新型的存儲(chǔ)器擴(kuò)展技術(shù)———FSMC,在外部存儲(chǔ)器擴(kuò)展方面具有獨(dú)特的優(yōu)勢,可根據(jù)系統(tǒng)的應(yīng)用需要,方便地進(jìn)行不同類型大容量靜態(tài)存儲(chǔ)器的擴(kuò)展[1]。

2 TFT彩屏模塊工作原理

本設(shè)計(jì)采用3.2寸分辨率為320×240的液晶屏,并使用ILI9341芯片控制液晶屏。

液晶屏的控制芯片電路非常復(fù)雜。GRAM中一個(gè)存儲(chǔ)單元對(duì)應(yīng)顯示屏的一個(gè)像素點(diǎn)。芯片內(nèi)部有電路把GRAM存儲(chǔ)單元的數(shù)據(jù)轉(zhuǎn)化成液晶屏的控制信號(hào),使每個(gè)點(diǎn)呈現(xiàn)特定的亮度和顏色,而這些點(diǎn)組合起來則成為顯示界面。ILI9341里有主要配置引腳和控制信號(hào)線,可以根據(jù)它的設(shè)置使芯片工作在不同的模式;使用8080接口或SPI接口與MCU進(jìn)行通信;使用8080接口的什么模式。MUC通過SPI或8080接口與ILI9341進(jìn)行通信,從而訪問它的地址計(jì)數(shù)器(AC)、控制寄存器(CR)、GRAM及一個(gè)LED控制器。LCD本身不會(huì)發(fā)光,它需要借助背光源才實(shí)現(xiàn)顯示功能,LED控制器就是用來控制液晶屏模塊中發(fā)光二級(jí)管的背光源。LI9341使用8080通信時(shí)序工作,ILI9341的8080接口有5條控制信號(hào)線:寫使能信號(hào)線WRX,讀使能信號(hào)線RDX,復(fù)位信號(hào)線RESX,片選信號(hào)線CSX,區(qū)分?jǐn)?shù)據(jù)和命令信號(hào)線D/CX。除了控制信號(hào),還有數(shù)據(jù)信號(hào)線[2]。

3 總體方案與硬件設(shè)計(jì)

本文以STM32F103VE芯片的FSMC接口連接RGB接口數(shù)字屏,并利用DMA從片外FLASH讀取顯示數(shù)據(jù)。DMA即直接內(nèi)存存取,CPU只需配置DMA相關(guān)的寄存器后,DMA控制器就會(huì)自動(dòng)將數(shù)據(jù)從一個(gè)地址傳送到另外一個(gè)地址,不占用CPU時(shí)間。本文采用STM32F103VE芯片外部連接FLASH用作顯存,其整體硬件方案如圖1所示。

由于圖片的數(shù)據(jù)太大需要外接FLASH存儲(chǔ)器用來存儲(chǔ)圖片數(shù)據(jù),電路如圖2所示。本設(shè)計(jì)使用的AT25DF041A芯片是一個(gè)串行接口的閃存設(shè)備,靈活的架構(gòu)AT25DF041A擦掉、消除粒度小至4 KB,使它非常適合數(shù)據(jù)存儲(chǔ),不再需要額外數(shù)據(jù)存儲(chǔ)E2PROM設(shè)備。

4 軟件設(shè)計(jì)

本設(shè)計(jì)的軟件主要有硬件層配置和顯示驅(qū)動(dòng)函數(shù)。硬件層配置主要是對(duì)STM32的I/O口的輸入/輸出和FSMC相關(guān)的寄存器配置。顯示驅(qū)動(dòng)函數(shù)主要是向TFT彩屏發(fā)送控制命令和數(shù)據(jù),另外還有一些簡單的畫圖函數(shù)。

4.1 FSMC簡介

FSMC是靈活靜態(tài)存儲(chǔ)控制器。STM32芯片可利用FSMC控制NOR FLASH、PSRAM和NAND FLASH存儲(chǔ)芯片[3]。這里,只使用FSMC的NOR/PSRAM模式控制LCD,所以只需分析NOR FLASH控制信號(hào)線部分。STM32尋址空間的地址映射中的0x60000000 ~ 0x6FFFFFFF是分配給PSRAM、NOR FLASH這類可直接尋址的器件。當(dāng)外部接了NOR FLASH,并且FSMC外設(shè)被設(shè)置為正常工作,當(dāng)向0x60000000地址寫入數(shù)據(jù)0xFFFF,F(xiàn)SMC會(huì)自動(dòng)把數(shù)據(jù)轉(zhuǎn)化成各信號(hào)線上相應(yīng)的電平信號(hào)寫入數(shù)據(jù)。

4.2 用FSMC模擬8080時(shí)序

FSMC寫NOR時(shí)序跟8080接口的時(shí)序是十分相似的,對(duì)它們的信號(hào)線對(duì)比如表1所示。

表1 8080接口信號(hào)線與FSMC寫NOR信號(hào)線功能對(duì)比

為了模擬出8080時(shí)序,把FSMC地址線中的A0連接8080的D\CX,當(dāng)A0為低電平時(shí),數(shù)據(jù)線D[15:0]的信號(hào)會(huì)被理解為ILI9341命令,若A0為高電平時(shí),傳輸?shù)男盘?hào)則會(huì)被理解為數(shù)據(jù)。所以傳送數(shù)據(jù)時(shí)只需向地址為0x6xxxxxx1,0x6xxxxxx3,0x6xxxxxx5這些奇數(shù)地址寫入數(shù)據(jù),此時(shí)地址線A0(D/CX)會(huì)為高電平;需要發(fā)送命令時(shí)向0x6xxxxxx0,0x6xxxxxx2,0x6xxxxxx4這些偶數(shù)地址寫入數(shù)據(jù)時(shí),地址線A0(D/CX)會(huì)為低電平,這個(gè)數(shù)據(jù)會(huì)被理解為命令。在代碼中利用指針變量,向不同的地址單元寫入數(shù)據(jù),就能夠由FSMC模擬出8080接口向ILI9341寫入控制命令或GRAM的數(shù)據(jù)了。

4.3 部分代碼設(shè)計(jì)

(1)初始化液晶屏

初始化液晶屏是對(duì)液晶控制器ILI9341用到的I/O口、FSMC接口進(jìn)行初始化,并且向該控制器寫入了命令參數(shù),配置好LCD液晶屏的基本功能。除了復(fù)位、背光用的PD11和PD0設(shè)置為通用推挽輸出外,其他的與FSMC接口相關(guān)的控制信號(hào)、地址信號(hào)、數(shù)據(jù)信號(hào)的端口全部設(shè)置為復(fù)用推挽輸出。代碼如下:

void LCD_Init(void)

{ unsigned long i;

LCD_GPIO_Config(); //初始化使用到的GPIO或I/O口的方向和功能

LCD_FSMC_Config(); //初始化FSMC模式

LCD_Rst(); //復(fù)位液晶屏

Lcd_init_conf(); //寫入命令,對(duì)液晶屏進(jìn)行基本的初始化

Lcd_data_start(); //發(fā)送寫GRAM命令

for(i=0; i<(320*240); i++)

{ LCD_WR_Data(GBLUE);

} }

(2)初始化FSMC模式

LCD_Init()函數(shù)調(diào)用LCD_FSMC_Config()設(shè)置FSMC的模式使它模擬出8080接口,函數(shù)主要作用是設(shè)置各個(gè)信號(hào)的產(chǎn)生時(shí)間,使FSMC接口的時(shí)序與8080接口匹配。LCD_FSMC_Config()設(shè)置FSMC模式的代碼如下:

void LCD_FSMC_Config(void)

{ FSMC_NORSRAMInitTypeDef;

FSMC_NORSRAMInitStructure;

FSMC_NORSRAMTimingInitTypeDefp;

p.FSMC_AddressSetupTime = 0x02; //地址建立時(shí)間

p.FSMC_AddressHoldTime = 0x00; //地址保持時(shí)間

p.FSMC_DataSetupTime = 0x05; //數(shù)據(jù)建立時(shí)間

p.FSMC_BusTurnAroundDuration = 0x00; //總線恢復(fù)時(shí)間

p.FSMC_CLKDivision = 0x00; //時(shí)鐘分頻

p.FSMC_DataLatency = 0x00; //數(shù)據(jù)保持時(shí)間

p.FSMC_AccessMode = FSMC_AccessMode_B;

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_

NORSRAM1;

//數(shù)據(jù)線與地址線不復(fù)用

FSMC_NORSRAMInitStructure.FSMC_DataAddressMux=SMC_DataAddressMux_

Disable; //存儲(chǔ)器類NOR FLASH

FSMC_NORSRAMInitStructure.FSMC_MemoryType =

FSMC_MemoryType_NOR;

//數(shù)據(jù)寬度為16位

FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth=FSMC_MemoryDataWidth_16b; //使用異步寫模式,禁止突發(fā)模式

FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode=FSMC_BurstAccessMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity=FSMC_WaitSignalPolarity_Low; //本成員的配置只在突發(fā)模式下有效,等待信號(hào)極性為低

FSMC_NORSRAMInitStructure.FSMC_WrapMode=FSMC_ WrapMode_Disable;

//禁止非對(duì)齊突發(fā)模式

FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive=FSMC_WaitSignalActive_BeforeWaitState; //本成員配置僅在突發(fā)模式下有效。NWAIT 信號(hào)在什么時(shí)期產(chǎn)生

FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;

//本成員的配置只在突發(fā)模式下有效,禁用 NWAIT 信號(hào)

FSMC_NORSRAMInitStructure.FSMC_WriteBurst =

FSMC_WriteBurst_Disable;

//禁止突發(fā)寫操作

FSMC_NORSRAMInitStructure.FSMC_WriteOperation=FSMC_WriteOperation_Enable;

FSMC_NORSRAMInitStructure.FSMC_ExtendedMode=FSMC_ExtendedMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct=p; //配置讀寫時(shí)序

FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct=p; }

以上主要使用FSMC_NORSRAMInitTypeDef類型的結(jié)構(gòu)體和FSMC_NORSRAMTimingInitTypeDef類型的結(jié)構(gòu)體對(duì)FSMC進(jìn)行配置。第一種類型結(jié)構(gòu)體主要配置存儲(chǔ)器類型,數(shù)據(jù)寬度等用于NOR FLASH的模式配置;另一種類型結(jié)構(gòu)體用于配置FSMC的NOR FLASH模式下讀/寫時(shí)序中的地址建立時(shí)間、地址保持時(shí)間等。

(3)FSMC模擬8080讀/寫參數(shù)、命令

初始化完成FSMC接口后,就可以使用FSMC向ILI9341發(fā)送數(shù)據(jù)了。在LCD_Init()中調(diào)用Lcd_init_conf()函數(shù)向ILI9341寫入一系列的控制參數(shù):

void Lcd_init_conf(void)

{ DEBUG_DELAY();

LCD_ILI9341_CMD(0xCF);

LCD_ILI9341_Parameter(0x00);

LCD_ILI9341_Parameter(0x81);

LCD_ILI9341_Parameter(0x30);

DEBUG_DELAY();

LCD_ILI9341_CMD(0xED);

LCD_ILI9341_Parameter(0x64);

LCD_ILI9341_Parameter(0x03);

LCD_ILI9341_Parameter(0x12);

LCD_ILI9341_Parameter(0x81);

DEBUG_DELAY();

LCD_ILI9341_CMD(0xE8);

LCD_ILI9341_Parameter(0x85);

LCD_ILI9341_Parameter(0x10);

LCD_ILI9341_Parameter(0x78);

//此次省略多行}

限于篇幅,以上只是該函數(shù)其中的一部分,省略部分的代碼只是寫入的參數(shù)和命令有些不一樣,這些命令和參數(shù)設(shè)置了像素點(diǎn)顏色格式、屏幕掃描方式、橫屏/豎屏等初始化配置,可以從ILI9341的datasheet命令列表中查到這些命令的意義。函數(shù)LCD_ILI9341_CMD()的作用是寫入命令,函數(shù)LCD_ILI9341_Parameter()的作用是寫入命令參數(shù)。

5 結(jié) 語

本文對(duì)基于STM32的TFT液晶顯示模塊的驅(qū)動(dòng)方法進(jìn)行了探討,設(shè)計(jì)的硬件電路和軟件能對(duì)顯示控制芯片ILI9341進(jìn)行有效的控制,所有程序均在STM32系列的軟件編譯環(huán)境下調(diào)試通過。經(jīng)實(shí)際證明,本方案是可行的,能保證320×240點(diǎn)陣的TFT刷新率,且留有足夠CPU時(shí)間給用戶程序。其硬件電路結(jié)構(gòu)簡單、控制方式靈活、對(duì)于其他型號(hào)的接口芯片也有參考價(jià)值。

參考文獻(xiàn)

[1] 王永虹,徐煒,郝立平,等. STM32系列ARM Cortex?M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.

[2] 張建華,張毅,方躍斌.液晶顯示器維修實(shí)戰(zhàn)教程[M].哈爾濱工程大學(xué)出版社,2009.

[3] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

[4] 夏駿,王甜.基于STM32和GSM的遠(yuǎn)程遙控定時(shí)開關(guān)裝置[J].電子科技,2013(1):112?114.

[5] 陳桂福,葉兵.基于STM32的紅光治療儀控制系統(tǒng)[J].電子科技,2012(4):54?56.

[6] 胡祝格,趙敏華.基于信息融合技術(shù)的無線火災(zāi)探測報(bào)警系統(tǒng)[J].電子科技,2012(10):36?39.

[7] 李秋雙,原明亭.基于STM32芯片的電能質(zhì)量在線檢測裝置的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(20):180?182.

主站蜘蛛池模板: 国产十八禁在线观看免费| 国产精品人人做人人爽人人添| 欧美一级夜夜爽www| 一级毛片免费不卡在线| 国产高清国内精品福利| 亚洲一本大道在线| lhav亚洲精品| 国产无套粉嫩白浆| 亚洲国产一成久久精品国产成人综合| 美臀人妻中出中文字幕在线| 欧美色伊人| 国产无人区一区二区三区| 亚洲—日韩aV在线| 91成人在线观看视频| 久久激情影院| 亚洲三级视频在线观看| 亚洲成人www| 久精品色妇丰满人妻| 国产亚洲精品97AA片在线播放| 日日碰狠狠添天天爽| 青草精品视频| 精品少妇人妻无码久久| 福利在线免费视频| 日本不卡免费高清视频| 欧美国产视频| 国产第一色| 制服丝袜一区| 国产麻豆永久视频| 狠狠干欧美| 婷婷六月天激情| 99在线观看免费视频| 久久99国产综合精品女同| 国产色偷丝袜婷婷无码麻豆制服| 在线观看精品自拍视频| 亚洲天堂.com| 国产一在线观看| 国产精品永久免费嫩草研究院| 91香蕉国产亚洲一二三区| 久久亚洲欧美综合| 一区二区三区毛片无码| 久久a毛片| 性网站在线观看| 国产XXXX做受性欧美88| 欧美日韩精品综合在线一区| 亚洲精品无码在线播放网站| 九九久久精品免费观看| 久久久噜噜噜久久中文字幕色伊伊 | 亚欧成人无码AV在线播放| 亚洲综合经典在线一区二区| 欧美激情,国产精品| 就去色综合| 久久久无码人妻精品无码| 激情六月丁香婷婷四房播| 久久99热这里只有精品免费看| 国产精品吹潮在线观看中文| 欧美自拍另类欧美综合图区| 草草影院国产第一页| 又黄又湿又爽的视频| 免费看的一级毛片| 毛片网站在线看| 精品国产一区二区三区在线观看 | 欧美a级在线| 国产精品一区二区国产主播| 有专无码视频| 色综合天天综合| 中文字幕天无码久久精品视频免费| 中文成人在线| 在线观看精品自拍视频| 无码福利视频| 福利片91| 99久久国产综合精品女同| 色综合日本| 中文字幕在线看| 亚洲天堂网站在线| 国产福利观看| 国产白丝av| 久久综合色视频| 99精品在线看| 日本一区二区三区精品AⅤ| 波多野结衣第一页| 欧美a在线看| 91成人在线免费观看|