任克強,王傳強
(江西理工大學 信息工程學院,江西 贛州 341000)
TFT液晶屏是嵌入式系統(tǒng)中重要的組成部分,但由于TFT液晶屏驅動較為復雜,對處理器有較高的要求,在大部分8位和16位機、部分32位機中較難實現驅動。文獻[1]和文獻[2]利用STM32處理器的FSMC功能實現了對TFT液晶屏的驅動,但此方法具有一定的局限性,只能在具有FSMC功能的處理器中實現TFT液晶屏的驅動,無法滿足沒有FSMC功能的處理器(如51單片機等處理器[3-4])驅動TFT液晶屏的需求。
針對上述問題,本文設計了一種多通道串口控制驅動MUC接口模式的TFT液晶屏的顯示系統(tǒng),該系統(tǒng)提供4個控制TFT液晶屏的串口通道,使用TFT液晶屏的外部處理器只需有串口或通過I/O口模擬串口就可以使用TFT液晶屏,簡化了TFT液晶屏驅動和使用,降低了使用TFT液晶屏外部處理器的功能要求,拓展了TFT液晶屏的適應性和使用范圍。
本文設計的TFT液晶屏顯示系統(tǒng)由STM32F4處理器和TFT液晶屏兩大部分組成,硬件框圖如圖1所示。
圖1 系統(tǒng)硬件框圖Fig.1 Hardware framework of system
利用STM32F4的FSMC功能驅動TFT液晶屏,并通過其串口向使用TFT液晶顯示系統(tǒng)的外部處理器提供控制通道。STM32F4的時鐘頻率高達168 MHz,具有8個串行口和1個FSMC接口,可模擬8080時序驅動TFT液晶屏[5-7]。最大支持4個通道同時接入,外部處理器通過串口訪問STM32F4內部預先燒錄的接口程序,實現對TFT液晶屏的控制。STM32F4處理器主存儲塊具有1 M FLASH,分為11個扇區(qū),主存儲塊FLASH扇區(qū)劃分如表1所示。本設計將這1 M的FLASH劃分為兩個部分,其中:扇區(qū)0~8為程序存儲區(qū),扇區(qū)9~11為漢字字庫存儲區(qū)。
液晶驅動控制器是集成于TFT液晶屏的一個驅動芯片,每種控制器具有唯一的序列號,雖然控制器型號眾多,但大部分的底層驅動方式是一樣的,可以通過STM32F4模擬8080時序進行驅動,差別主要在于控制指令的不同。因此,為了可以兼容多種不同型號的MUC接口TFT液晶屏,本設計采用讀取液晶驅動控制器的序列號進行液晶屏的識別,從而執(zhí)行對應屏幕型號的控制指令,實現多種不同型號液晶屏的驅動。本文設計的TFT液晶顯示系統(tǒng)可驅動60.1~177.8 mm(2.4~7 in)5種尺寸,包括ILI9341、IGDP453和SSD1936等15種不同驅動芯片的MUC接口TFT液晶屏。
表1 STM32F4主存儲塊Flash扇區(qū)劃分
Tab.1 Sector division of FLASH in STM32F4 main memory
扇區(qū)號地址大小扇區(qū)00x08000000-0x08003FFF16 kB扇區(qū)10x08004000-0x08007FFF16 kB扇區(qū)20x08008000-0x0800BFFF16 kB扇區(qū)30x0800C000-0x0801FFFF16 kB扇區(qū)40x08020000-0x0803FFFF64 kB扇區(qū)50x08040000-0x0805FFFF128 kB???扇區(qū)90x080C0000-0x080DFFFF128 kB???扇區(qū)110x080E0000-0x080FFFFF128 kB
圖2 系統(tǒng)軟件流程圖Fig.2 Flow chart of system software
μC/OS-Ⅲ是一種可移植、可剪裁的實時多任務操作系統(tǒng),專為嵌入式系統(tǒng)設計,可與應用程序一起固化到ROM中。μC/OS-Ⅲ以其優(yōu)異的性能和較高的穩(wěn)定性已經被移植到8位、16位、32位和64位等多種不同處理器中[8-11]。μC/OS-Ⅲ在處理器的RAM空間允許條件下,可創(chuàng)建無數任務。本文系統(tǒng)軟件全部是在μC/OS-Ⅲ操作系統(tǒng)的基礎上建立的。
系統(tǒng)軟件流程圖如圖2所示。程序運行時首先調用OSInit()完成對整個操作系統(tǒng)所有變量和數據結構的初始化,自動創(chuàng)建空閑任務,完成操作系統(tǒng)運行前的準備工作。然后調用OSTaskCreate()創(chuàng)建一個起始任務,起始任務運行時將創(chuàng)建5個任務,分別是1個串口配置任務和4個控制串口通道任務,將串口配置任務設置為最高級,然后將起始任務刪除,起始任務只在程序運行時執(zhí)行一次。之后將創(chuàng)建的5個任務添加到就緒列表,調用OSStart()啟動μC/OS-Ⅲ,開始多任務之間的調度。按照任務的優(yōu)先級,串口配置任務將首先被執(zhí)行,此時采用非阻塞延時的方式讓系統(tǒng)延時5 s,在這5 s內若有更改配置操作則可進行人工修改配置,否則跳過,保留串口默認配置,隨之將串口配置任務刪除,將不會再被執(zhí)行,最后操作系統(tǒng)將會在空閑任務和4個控制串口通道任務之間循環(huán)調度。
本設計所支持的TFT液晶屏都是MUC接口的16位8080并口驅動方式,完全可以通過FSMC模擬8080時序進行驅動,只是初始化控制指令有所差別,只需根據讀取TFT液晶屏的ID序列號判斷屏幕型號,調用不同的初始化程序完成液晶屏驅動顯示。TFT液晶屏的信號線包括:數據總線(D0~D15)、設置寫入數據/命令(RS)、寫使能(WR)、讀使能(RD)、片選(CS)、復位(RST)和背光(BL),在控制時只需要用到D0~D15、RS、WR、RD和CS引腳。FSMC模式A讀寫時序如圖3所示,TFT液晶屏16位并口8080接口時序如圖4所示,對比圖3和圖4可知,TFT液晶屏沒有地址線,具有一個設置寫入數據/命令(RS)引腳,通過此引腳決定傳輸的是數據還是命令,可以將此信號線看作FSMC的其中一個地址線,將RS引腳連接到FSMC A0地址線。當FSMC寫地址0時,對于TFT液晶屏即為寫命令;當FSMC寫地址1時,對于TFT液晶屏即為寫數據。這樣就可以通過FSMC模擬16位并口8080時序完成對TFT液晶屏的控制操作。
(a)讀時序(a)Read timing
(b)寫時序(b)Write timing圖3 FSMC模式A讀寫時序Fig.3 FSMC mode A read and write timing
圖4 16位并口8080接口時序Fig.4 16 bit parallel port 8080 interface timing
串口是連接外部處理器和本文TFT液晶屏顯示系統(tǒng)的橋梁,所有外部處理器傳入的所有數據和指令都是通過串口進行發(fā)送。本設計采用STM32F4的4個串口作為傳輸通道,利用DMA方式進行傳輸。DMA傳輸數據的本質是將數據從一個地址空間復制到另一個地址空間,無需CPU參與,大大減輕了CPU的負擔。
本設計的系統(tǒng)配置界面如圖5所示。圖5(a)界面顯示當前4個串口的默認波特率都為9.6 kB/s,通過觸摸屏幕可以選擇是否配置串口波特率或者直接跳過配置;圖5(b)為串口配置界面,可通過觸摸屏幕完成4個串口的波特率配置。
(a) 設備信息及選擇界面(a) Equipment information and selection interface
(b) 串口配置界面(b) Serial port configuration interface圖5 系統(tǒng)配置界面Fig.5 System configuration interface
外部處理器在控制TFT液晶屏顯示系統(tǒng)前,先發(fā)送一系列的設置數據,STM32F4處理器接收這些數據并進行數據解析,獲取端口號,選擇是顯示圖像還是顯示字符、數字或者漢字。如果顯示圖像,首先會判斷圖像的顯示坐標和大小,然后接受串口發(fā)來的圖像數據,寫入到液晶屏進行顯示。如果顯示字符、數字或者漢字,首先會判斷顯示字體的大小、長度和坐標,設置背景顏色和字體顏色,然后調取STM32F4內部FLASH存入的字模數據寫入到液晶屏進行顯示。驅動控制接口調用流程如圖6所示。
圖6 驅動控制接口調用流程圖Fig.6 Flow chart of driver control interface calling
首先測試在不同波特率下的數據傳輸速度,外部處理器通過串口通道發(fā)送數據控制TFT液晶屏顯示系統(tǒng),傳輸速度的理論值與實際值如表2所示。如果選擇最為常用的9.6 kB/s波特率,每秒可以傳輸9 400字節(jié),若傳輸長寬為16×16像素的漢字或者字符,每秒可以傳輸約29個漢字
表2 不同波特率的數據傳輸速度
Tab.2 Data transfer speeds with different baud rates (kB·s-1)
波特率理論值實際值 2.4 2.4 2.34.8 4.8 4.7 9.6 9.6 9.4 115.2 115.2 111.3 256 256 232.7 2 0002 000 1 969
或者字符。
采用11 cm(4.3 in)800×480分辨率的TFT液晶屏進行顯示測試,在9.6 kB/s波特率下測試外部處理器通過串口控制TFT液晶屏顯示漢字、字符和數字的效果,測試結果如圖7所示。其中,圖7(a)為1個外部處理器控制TFT液晶屏顯示系統(tǒng)的全屏顯示結果;圖7(b)為2個外部處理器同時控制TFT液晶屏顯示系統(tǒng)的2分屏顯示結果;圖7(c)為3個外部處理器同時控制TFT液晶屏顯示系統(tǒng)的3分頻顯示結果;圖7(d)為4個外部處理器同時控制TFT液晶屏顯示系統(tǒng)的4分頻顯示結果。當多個處理器通過串口通道同時控制TFT液晶顯示系統(tǒng)時,顯示效果穩(wěn)定流暢。
(a) 單通道控制顯示(a) Single channel control display
(b) 雙通道控制顯示(b) Dual channel control display
(c) 三通道控制顯示(c) Three channel control display
(d) 四通道控制顯示(d) Four channel control display圖7 液晶屏控制顯示測試結果Fig.7 LCD control display test results
TFT液晶屏驅動是開發(fā)和設計嵌入式應用系統(tǒng)經常要面對和解決的問題。常規(guī)的MUC接口TFT液晶屏驅動方法較為復雜,對直接使用TFT液晶屏的外部處理器和開發(fā)設計人員均有一定的要求。本文采用串口方式控制MUC接口模式的TFT液晶屏的方法,降低了對外部處理器的功能要求,可以滿足無法直接進行屏幕驅動的8位、16位和32位機使用TFT液晶屏的需求,僅需兩根I/O線就能進行TFT液晶屏的控制,節(jié)約了外部處理器的資源。本文方法可同時提供4個控制TFT液晶屏的串口通道,既可以單個外部處理器控制TFT液晶屏,也可以多個外部處理器同時控制TFT液晶屏,拓展了TFT液晶屏的使用范圍,可滿足某些特定場合的應用需求。本文方法具有較好的兼容性,可適用5種不同尺寸、15種不同IC芯片的MUC接口TFT液晶屏。經測試,TFT液晶屏的驅動速度能較好地滿足顯示需要,在4個串口通道同時控制TFT液晶屏的情況下,顯示效果清晰流暢,系統(tǒng)運行穩(wěn)定可靠。