<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32 FSMC接口驅動(dòng)TFT-LCD設計

STM32 FSMC接口驅動(dòng)TFT-LCD設計

作者: 時(shí)間:2016-09-20 來(lái)源:網(wǎng)絡(luò ) 收藏

  0 引言

本文引用地址:http://dyxdggzs.com/article/201609/297214.htm

  隨著(zhù)電子產(chǎn)品的不斷更新,各種顯示界面的開(kāi)發(fā)越來(lái)越多,由于TFT彩屏的性?xún)r(jià)比高,因而被廣泛用在各種電子設備上作為顯示屏。目前驅動(dòng)TFT彩屏的方案有很多,可以用底端單片機驅動(dòng)一個(gè)終端類(lèi)型的液晶模組,這種模組價(jià)格比較貴,當然用起來(lái)還是很方便的。

  只要單片機通過(guò)串口或并行口向TFT發(fā)送幾個(gè)字節的命令,就能在屏幕上顯示你需要的效果。本設計利用 總線(xiàn)直接驅動(dòng)TFT 數字彩屏。這種方案對相應的寄存器進(jìn)行配置后就可以自動(dòng)向TFT數字彩屏發(fā)送數據,無(wú)需CPU參與,讓CPU有足夠時(shí)間來(lái)處理其他程序。

  1 簡(jiǎn)介

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

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

  2 TFT彩屏模塊工作原理

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

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

  3 總體方案的硬件設計

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

  

 

  由于圖片的數據太大需要外接FLASH存儲器用來(lái)存儲圖片數據,電路如圖2 所示。

  

 

  本設計使用的AT25DF041A芯片是一個(gè)串行接口的閃存設備,靈活的架構AT25DF041A擦掉、消除粒度小至4 KB,使它非常適合數據存儲,不再需要額外數據存儲E2PROM設備。

  4 軟件設計

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

  4.1 FSMC簡(jiǎn)介

  FSMC是靈活靜態(tài)存儲控制器。STM32芯片可利用FSMC 控制NOR FLASH、PSRAM 和NAND FLASH 存儲芯片[3].這里,只使用FSMC 的NOR/PSRAM 模式控制LCD,所以只需分析NOR FLASH 控制信號線(xiàn)部分。

  STM32 尋址空間的地址映射中的0×60000000 ~0x6FFFFFFF 是分配給PSRAM、NOR FLASH 這類(lèi)可直接尋址的器件。當外部接了NOR FLASH,并且FSMC外設被設置為正常工作,當向0×60000000 地址寫(xiě)入數據0xFFFF,FSMC會(huì )自動(dòng)把數據轉化成各信號線(xiàn)上相應的電平信號寫(xiě)入數據。

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

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

  

 

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

  4.3 部分代碼設計

  (1)初始化液晶屏

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

  

 

  (2)初始化FSMC模式

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

  

 

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

  (3)FSMC模擬8080讀/寫(xiě)參數、命令

  初始化完成FSMC 接口后,就可以使用FSMC 向ILI9341發(fā)送數據了。在LCD_Ini(t )中調用Lcd_init_conf()函數向ILI9341寫(xiě)入一系列的控制參數:

  

 

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

  5 結語(yǔ)

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



關(guān)鍵詞: STM32 FSMC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>