0 引言
隨著電子產品的不斷更新,各種顯示界面的開發越來越多,由于TFT彩屏的性價比高,因而被廣泛用在各種電子設備上作為顯示屏。目前驅動TFT彩屏的方案有很多,可以用底端單片機驅動一個終端類型的液晶模組,這種模組價格比較貴,當然用起來還是很方便的。
只要單片機通過串口或并行口向TFT發送幾個字節的命令,就能在屏幕上顯示你需要的效果。本設計利用STM32 的FSMC 總線直接驅動TFT 數字彩屏。這種方案對相應的寄存器進行配置后就可以自動向TFT數字彩屏發送數據,無需CPU參與,讓CPU有足夠時間來處理其他程序。
1 STM32 簡介
STM32 是基于ARM 內核Cortex-M3 的32 位微控制器系列。Cortex-M3內核是為低功耗和價格敏感的應用而專門設計的,具有突出的能效比和處理速度。通過采用Thumb-2 高密度指令集,Cortex-M3 內核降低了系統存儲要求,同時快速的中斷處理能夠滿足控制領域的高實時性要求,使基于該內核設計的STM32 系列微控制器能夠以更優越的性價比,面向更廣泛的應用領域。
STM32系列微控制器為用戶提供了豐富的選擇,可適用于工業控制、智能家電、建筑安防、醫療設備以及消費類電子產品等多方位嵌入式系統設計。STM32系列采用一種新型的存儲器擴展技術---FSMC,在外部存儲器擴展方面具有獨特的優勢,可根據系統的應用需要,方便地進行不同類型大容量靜態存儲器的擴展。
2 TFT彩屏模塊工作原理
本設計采用3.2 寸分辨率為320×240 的液晶屏,并使用ILI9341芯片控制液晶屏。
液晶屏的控制芯片電路非常復雜。GRAM 中一個存儲單元對應顯示屏的一個像素點。芯片內部有電路把GRAM存儲單元的數據轉化成液晶屏的控制信號,使每個點呈現特定的亮度和顏色,而這些點組合起來則成為顯示界面。ILI9341 里有主要配置引腳和控制信號線,可以根據它的設置使芯片工作在不同的模式;使用8080 接口或SPI接口與MCU 進行通信;使用8080 接口的什么模式。MUC通過SPI或8080接口與ILI9341進行通信,從而訪問它的地址計數器(AC)、控制寄存器(CR)、GRAM及一個LED控制器。LCD本身不會發光,它需要借助背光源才實現顯示功能,LED控制器就是用來控制液晶屏模塊中發光二級管的背光源。LI9341使用8080通信時序工作,ILI9341的8080接口有5條控制信號線:寫使能信號線WRX,讀使能信號線RDX,復位信號線RESX,片選信號線CSX,區分數據和命令信號線D/CX.除了控制信號,還有數據信號線。
3 總體方案的硬件設計
本文以STM32F103VE 芯片的FSMC接口連接RGB接口數字屏,并利用DMA 從片外FLASH 讀取顯示數據。DMA即直接內存存取,CPU只需配置DMA相關的寄存器后,DMA 控制器就會自動將數據從一個地址傳送到另外一個地址,不占用CPU 時間。本文采用STM32F103VE 芯片外部連接FLASH 用作顯存,其整體硬件方案如圖1所示。
由于圖片的數據太大需要外接FLASH存儲器用來存儲圖片數據,電路如圖2 所示。
本設計使用的AT25DF041A芯片是一個串行接口的閃存設備,靈活的架構AT25DF041A擦掉、消除粒度小至4 KB,使它非常適合數據存儲,不再需要額外數據存儲E2PROM設備。
4 軟件設計
本設計的軟件主要有硬件層配置和顯示驅動函數。硬件層配置主要是對STM32 的I/O 口的輸入/輸出和FSMC 相關的寄存器配置。顯示驅動函數主要是向TFT彩屏發送控制命令和數據,另外還有一些簡單的畫圖函數。
4.1 FSMC簡介
FSMC是靈活靜態存儲控制器。STM32芯片可利用FSMC 控制NOR FLASH、PSRAM 和NAND FLASH 存儲芯片[3].這里,只使用FSMC 的NOR/PSRAM 模式控制LCD,所以只需分析NOR FLASH 控制信號線部分。
STM32 尋址空間的地址映射中的0×60000000 ~0x6FFFFFFF 是分配給PSRAM、NOR FLASH 這類可直接尋址的器件。當外部接了NOR FLASH,并且FSMC外設被設置為正常工作,當向0×60000000 地址寫入數據0xFFFF,FSMC會自動把數據轉化成各信號線上相應的電平信號寫入數據。
4.2 用FSMC模擬8080時序
FSMC寫NOR 時序跟8080接口的時序是十分相似的,對它們的信號線對比如表1所示。
為了模擬出8080 時序,把FSMC 地址線中的A0 連接8080的DCX,當A0為低電平時,數據線D[15:0]的信號會被理解為ILI9341命令,若A0為高電平時,傳輸的信號則會被理解為數據。所以傳送數據時只需向地址為0x6xxxxxx1,0x6xxxxxx3,0x6xxxxxx5 這些奇數地址寫入數據,此時地址線A0(D/CX)會為高電平;需要發送命令時向0x6xxxxxx0,0x6xxxxxx2,0x6xxxxxx4 這些偶數地址寫入數據時,地址線A0(D/CX)會為低電平,這個數據會被理解為命令。在代碼中利用指針變量,向不同的地址單元寫入數據,就能夠由FSMC 模擬出8080 接口向ILI9341寫入控制命令或GRAM的數據了。
4.3 部分代碼設計
(1)初始化液晶屏
初始化液晶屏是對液晶控制器ILI9341 用到的I/O口、FSMC 接口進行初始化,并且向該控制器寫入了命令參數,配置好LCD液晶屏的基本功能。除了復位、背光用的PD11和PD0設置為通用推挽輸出外,其他的與FSMC 接口相關的控制信號、地址信號、數據信號的端口全部設置為復用推挽輸出。代碼如下:
(2)初始化FSMC模式
LCD_Init()函數調用LCD_FSMC_Config()設置FSMC的模式使它模擬出8080接口,函數主要作用是設置各個信號的產生時間,使FSMC接口的時序與8080接口匹配。LCD_FSMC_Config()設置FSMC模式的代碼如下:
以上主要使用FSMC_NORSRAMInitTypeDef類型的結構體和FSMC_NORSRAMTimingInitTypeDef類型的結構體對FSMC 進行配置。第一種類型結構體主要配置存儲器類型,數據寬度等用于NOR FLASH 的模式配置;另一種類型結構體用于配置FSMC 的NOR FLASH模式下讀/寫時序中的地址建立時間、地址保持時間等。
(3)FSMC模擬8080讀/寫參數、命令
初始化完成FSMC 接口后,就可以使用FSMC 向ILI9341發送數據了。在LCD_Ini(t )中調用Lcd_init_conf()函數向ILI9341寫入一系列的控制參數:
限于篇幅,以上只是該函數其中的一部分,省略部分的代碼只是寫入的參數和命令有些不一樣,這些命令和參數設置了像素點顏色格式、屏幕掃描方式、橫屏/豎屏等初始化配置,可以從ILI9341的datasheet命令列表中查到這些命令的意義。函數LCD_ILI9341_CMD()的作用是寫入命令,函數LCD_ILI9341_Parameter()的作用是寫入命令參數。
5 結語
本文對基于STM32的TFT液晶顯示模塊的驅動方法進行了探討,設計的硬件電路和軟件能對顯示控制芯片ILI9341進行有效的控制,所有程序均在STM32系列的軟件編譯環境下調試通過。經實際證明,本方案是可行的,能保證320×240 點陣的TFT 刷新率,且留有足夠CPU時間給用戶程序。其硬件電路結構簡單、控制方式靈活、對于其他型號的接口芯片也有參考價值。
上一篇:STM32之TFT觸摸屏(ILI9320):通過LCD_ShowChar顯示
下一篇:STM32系列第14篇--TFTLCD驅動原理
推薦閱讀
史海拾趣
創立不久,愛普特微電子便迎來了一次重大的技術突破。公司成功研發出了全國產、全自主可控、高可靠性的32位微處理器芯片。這一產品的推出,不僅填補了國內市場的空白,更以其卓越的性能和穩定性,贏得了市場的廣泛認可。隨后,公司又基于自研IP庫及RISC架構內核,量產了一系列全國產高可靠性32位MCU產品,廣泛應用于工業控制、物聯網、智能家電等領域。
為了更好地服務中國及亞太地區的電子產業集群,Henkel在東莞市投建了漢高電子粘合劑華南應用技術中心。該中心不僅具備先進的研發設備和測試能力,還擁有一支專業的技術團隊。通過模擬仿真和數字化手段,該中心能夠快速響應客戶需求,提供定制化的粘合劑解決方案。自啟用以來,該中心已幫助眾多電子企業實現了技術創新和產品升級。
隨著全球對環保和可持續發展的重視,Everbuild也將綠色環保理念融入到產品設計和生產過程中。公司采用環保材料和節能技術,減少生產過程中的污染和能源消耗。同時,Everbuild還積極參與環保公益活動,倡導綠色生活方式。這些舉措不僅提高了公司的社會責任感,也為公司的可持續發展奠定了基礎。
進入21世紀,福祿克通過一系列精明的并購活動,實現了業務的快速擴張。2000年,公司成功收購了Wavetek Wandell Goltermann的精密測量部門,這次并購不僅增強了福祿克在電氣校準市場的競爭力,還為其帶來了豐富的技術專利和客戶資源。此后,福祿克繼續通過并購方式,進入新的技術領域和市場領域,不斷拓寬其業務范圍。
Datatronic公司深知人才是企業發展的核心。因此,公司一直注重人才的培養和引進。公司建立了完善的人才培訓體系,為員工提供廣闊的發展空間和機會。同時,公司還積極引進國內外優秀人才,為公司的技術創新和市場拓展提供了有力支持。這些舉措使得Datatronic公司在人才方面形成了競爭優勢。
隨著產品的不斷升級和市場的擴大,勝利公司開始將目光投向國際市場。1980年代,VICTOR品牌成功進入歐美市場,憑借優質的產品和合理的價格,迅速贏得了消費者的認可。公司還積極參加國際賽事,通過贊助等方式提升品牌知名度。
原來用的是ccsv2,現在用的是ccsv3.3,可是發現一個問題,就是原來在v2版本里面的可以運行的項目文件到了3.3里面就不行啦,老是有錯誤,不知道怎么解決,還望大俠指點迷津?。?! 謝謝~~~… 查看全部問答∨ |
|
本帖最后由 dontium 于 2015-1-23 12:45 編輯 D105的輸入1.25*(1+740/220)=5.45V,D105的輸出到芯片供電約5.1V,平時由它供電,并同時向4.8V鎳氫電池充電,當掉電后,鎳氫電池供電,同時又不會向LM317反灌。 … 查看全部問答∨ |
|
大家好,求助,急,bootloader在avr studio(gcc)的環境下配置問題,我用是mega128 大家好、請教一下,bootloader在avr studio(gcc)的環境下應該怎么配置呀?我用是mega128 這幾天上網找了很多的資料(包括馬潮老師,傻孩子老師,shaoziyang老師的帖子)也看了大家的討論,ICC下的bootloader已經實現。但是avr studio(gcc)始 ...… 查看全部問答∨ |
LED驅動芯片供應商Marvell繼推出其數字反激式PFC控制芯片88EM8081/2的評估板、多種功率規格LED驅動電路參考設計之后,又特別針對中國市場強勢推出基于這顆驅動芯片的高度優化交鑰匙(Turn-key)設計方案和燈泡實物,旨在幫助中國LED照明廠商降低 ...… 查看全部問答∨ |
s3c 2410RP 和 HOLUX GR-87 的連接問題請教,急,大牛請幫忙?。?! 本人想用s3c 2410RP 開發板開發關于GPS的一個東西,在網上搜了很多連接方法,但現在搞不清楚兩者到底是怎么個物理連法,現特來請教大牛們悉心指點。 最好是連接方法加配套程序,萬分感謝! 急用!… 查看全部問答∨ |
DSP28335程序燒寫進去了,但是重新上電后DSP好像沒有正常啟動,因為開始時要點亮的LED燈一直處于微亮狀態(此時用示波器觀看該IO口電平只有1.6V),等過了一分鐘左右,感覺才正常進入DSP程序,燈亮一秒滅一秒,這時燈比較亮(IO口電平在3.3V和0 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI
- 玩轉 ESP32 + Arduino (八) U8G2驅動OLED
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- 助力全電氣時代:浩亭亮相2025漢諾威工業博覽會
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- Gartner:到2027年,AI代理將使利用賬號暴露進行攻擊的時間減少50%
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI