黃克亞
(蘇州大學(xué) 機(jī)電工程學(xué)院,江蘇 蘇州, 215131)
嵌入式系統(tǒng)均需配備顯示設(shè)備以指示程序運(yùn)行狀態(tài)和輸出控制結(jié)果。薄膜晶體管液晶顯示器(TFT-LCD)因?yàn)楣牡?、輻射小、顏色鮮艷、顯示內(nèi)容豐富等優(yōu)點(diǎn)而成為嵌入式系統(tǒng)的主流,但是其控制復(fù)雜,需要移植廠家提供的底層驅(qū)動(dòng)程序[1-2]。數(shù)碼管亮度高、穩(wěn)定可靠、價(jià)格便宜,在家用電器、工業(yè)控制和傳感檢測(cè)等領(lǐng)域有著廣泛的應(yīng)用,是嵌入式學(xué)習(xí)的經(jīng)典器件。
為提高數(shù)據(jù)傳輸速度,降低軟硬件設(shè)計(jì)難度,并行接口是數(shù)碼管、液晶顯示器與微控制器(MCU)連接的首選。但并口需要占用大量I/O口資源,以6 位數(shù)碼管為例,共有6 個(gè)位選信號(hào)和8 個(gè)段選信號(hào),TFT-LCD 顯示模塊則有6 個(gè)控制信號(hào)和16 位數(shù)據(jù)線。設(shè)計(jì)系統(tǒng)時(shí),為了編程方便,一般希望位選信號(hào)、段選信號(hào)、LCD 數(shù)據(jù)線分別占用連續(xù)的16 位端口,而這些I/O 引腳又離散地分布于芯片的四周,上述技術(shù)需求給微控制器引腳資源分配和PCB 布線帶來極大的挑戰(zhàn),同時(shí)降低了實(shí)驗(yàn)裝置的可靠性,而破解這一難題的方法就是將二者均掛接在FSMC 總線上,同時(shí)進(jìn)行信號(hào)線復(fù)用。
靈活靜態(tài)存儲(chǔ)控制器(Flexible Static Memory Controller,F(xiàn)SMC)能夠連接同步、異步存儲(chǔ)器和16 位PC 存儲(chǔ)卡,支持SRAM、NAND Flash、NOR Flash 和PSRAM 等 類 型 存 儲(chǔ) 器。FSMC 連接的所有外部存儲(chǔ)器共享地址、數(shù)據(jù)和控制信號(hào),但有各自的片選信號(hào),所以FSMC 一次只能訪問一個(gè)外部器件[3-4]。
如圖1 所示,F(xiàn)SMC 將外部存儲(chǔ)器1 GB 空間劃分為固定大小為256 MB 的4 個(gè)存儲(chǔ)塊(Bank),Bank1 可連接多達(dá)4 個(gè)NOR Flash 或PSRAM/SRAM 存 儲(chǔ) 器 件,Bank2 和Bank3 用 于 訪 問NAND Flash 存儲(chǔ)器,每個(gè)存儲(chǔ)區(qū)域連接一個(gè)設(shè)備,Bank4 用于連接PC Card 設(shè)備。其中Bank1又被分為4 個(gè)區(qū)(Sector),每個(gè)區(qū)管理64 MB 空間,每個(gè)區(qū)都有獨(dú)立的寄存器對(duì)所連接的存儲(chǔ)器進(jìn)行配置。
圖1 FSMC 存儲(chǔ)區(qū)域劃分Fig.1 Division of FSMC storage area
如 表1 所 示,Bank1 的256 MB 空 間 由28 根地址線(HADDR[27:0])尋址。這里HADDR 是內(nèi)部AHB 總線地址,其中HADDR[25:0]來自外部存儲(chǔ)器地址FSMC_A[25:0],對(duì)應(yīng)引腳地址信號(hào);而HADDR[27:26]對(duì)4 個(gè)區(qū)進(jìn)行尋址,由系統(tǒng)自動(dòng)完成,無外部引腳對(duì)應(yīng)信號(hào)。
表1 Bank1 存儲(chǔ)區(qū)選擇表Tab.1 Bank1 storage area selection table
在設(shè)計(jì)或分析系統(tǒng)時(shí)需要特別注意HADDR[25:0]的對(duì)應(yīng)關(guān)系。
當(dāng)Bank1 連接的是8 位寬度存儲(chǔ)器時(shí),總線和外設(shè)均采用字節(jié)編址,二者一一對(duì)應(yīng),即:HADDR[25:0]→FSMC_A[25:0]。
當(dāng)Bank1 連接的是16 位寬度存儲(chǔ)器時(shí),總線字節(jié)編址,存儲(chǔ)器雙字節(jié)尋址,此時(shí)總線26 地 址 中 最 低 位HADDR[0]用 來 表 示16 位數(shù) 據(jù) 的 高 位 或 低 位,高25 位HADDR[25:1]對(duì)應(yīng)16 位寬的存儲(chǔ)器單元地址,即:HADDR[25:1]→FSMC_A[24:0],相當(dāng)于總線地址右移了一位[5-6]。
作者設(shè)計(jì)的嵌入式系統(tǒng)實(shí)驗(yàn)裝置結(jié)構(gòu)框圖如圖2 所示,其重點(diǎn)展示TFT-LCD 和數(shù)碼管的FSMC 總線連接關(guān)系,其他模塊,如CMSIS-DAP調(diào)試器、LED 流水燈、獨(dú)立/矩陣按鍵等雖也為實(shí)驗(yàn)裝置重要組成部分,但不是本文討論重點(diǎn),故未繪制。實(shí)驗(yàn)裝置主控芯片選擇基于ARM Cortex-M4 內(nèi)核,性能出色的STM32F407ZGT6微控制器,該芯片擁有完備的FSMC 接口系統(tǒng),塊1 的4 個(gè)子區(qū)可同時(shí)連接4 個(gè)NOR Flash/PSRAM/SRAM 存儲(chǔ)設(shè)備。實(shí)驗(yàn)裝置配備雙顯示終端,數(shù)碼顯示器為6 位14.22 mm(0.56 in)共陽(yáng)數(shù)碼管,PNP 三極管S8550 驅(qū)動(dòng);液晶顯示器為70.82 mm(2.8 in)全彩TFT-LCD 顯示模塊,240 像素×320像素,2.8~3.3 V 供電,ILI9341驅(qū)動(dòng),16 位8080 并行接口。
圖2 實(shí)驗(yàn)裝置FSMC 連接結(jié)構(gòu)框圖Fig.2 FSMC connection structure block diagram of experimental device
在STM32 內(nèi)部,F(xiàn)SMC 起到橋梁作用,其一端通過內(nèi)部高速總線AHB 連接到Cortex 內(nèi)核,另一端則是面向擴(kuò)展存儲(chǔ)器的外部總線,既能夠進(jìn)行信號(hào)類型的轉(zhuǎn)換,又能夠進(jìn)行信號(hào)寬度和時(shí)序的調(diào)整,提供多種讀寫模式,使之對(duì)內(nèi)核而言沒 有 區(qū) 別[7-8]。模 式A 比 較 適 合 連 接 至Bank1 的NOR Flash/PSRAM/SRAM 存儲(chǔ)器,其讀寫時(shí)序如圖3 所示[9]。信號(hào)線主要包括26 位地址線A[25:0],16 位數(shù)據(jù)線D[15:0],片選信號(hào)NE[x],輸出使能NOE,寫入使能NEW。
圖3 FSMC 模式A 讀寫時(shí)序Fig.3 Read and write timing of FSMC mode A
TFT-LCD 顯示模塊信號(hào)線包括:數(shù)據(jù)線D[15:0],寄存器/存儲(chǔ)器選擇RS,讀使能RD,寫使能WR,片選CS,復(fù)位RST。通常使用標(biāo)準(zhǔn)的16 位8080 并口與微控制器連接,其讀寫時(shí)序如圖4 所示[10]。
圖4 8080 接口讀寫時(shí)序Fig.4 Read and write timing of 8080 interface
對(duì)比圖3、圖4 讀寫時(shí)序和二者控制信號(hào)可以發(fā)現(xiàn),TFT-LCD 模塊,除了已連接至系統(tǒng)復(fù)位電路的RST 信號(hào)外,其他信號(hào)均可由FSMC 接口提供,所以FSMC 連接PSRAM/SRAM 的工作模式適合于連接TFT-LCD 顯示模塊。如圖2所示,項(xiàng)目實(shí)施時(shí)選擇FSMC 總線的Bank1.Sector4 連接TFT-LCD,F(xiàn)SMC_NE4 接LCD 片選 信 號(hào)CS,F(xiàn)SMC_NOE 接LCD 讀 引 腳RD,F(xiàn)SMC_NWE 接LCD 寫 引 腳WR,選 擇FSMC_A6 地址線連接LCD 的寄存器/存儲(chǔ)器選擇信號(hào)RS,F(xiàn)SMC_D[15:0]接LCD 的16 位 數(shù) 據(jù) 線D15~D0,LCD 工作于16 位8080 接口模式。
如圖2 所示,數(shù)碼管和TFT-LCD 同時(shí)掛接在STM32F4 的FSMC 總線上,二者共享數(shù)據(jù)線,為使二者輸出信號(hào)互不影響,需要將向數(shù)碼管送出的數(shù)據(jù)信號(hào)進(jìn)行鎖存,鎖存器選擇2 片74HC573D,鎖存引腳LE 高電平傳輸,低電平封鎖。選擇FSMC 總線的Bank1.Sector3 連接6 位共陽(yáng)數(shù)碼管,所以FSMC_NE3 作為數(shù)碼管的片選信號(hào),但是NE3 是低電平有效,與鎖存器傳輸信號(hào)正好相反,所以FSMC_NE3 需要經(jīng)反相器U2 連接U3 的兩片74HC573D 的鎖存引腳LE。由于只需要一路反相器,系統(tǒng)實(shí)施時(shí)采用由1 個(gè)PMOS 管和1 個(gè)NMOS 管構(gòu)成的單路CMOS 反相器。數(shù)碼管8 個(gè)段選線和6 個(gè)位選線共14 條信號(hào)線由FSMC_D[13:0]控制,需要經(jīng)過鎖存模塊U3 鎖存,F(xiàn)SMC_D[7:0]接一片鎖存器輸入端,鎖存器輸出端接數(shù)碼管段選線dp~a,F(xiàn)SMC_D[13:8]接另一片鎖存器的輸入端,鎖存器的輸出端接數(shù)碼管位選線DS6~DS1。
上述設(shè)計(jì)實(shí)現(xiàn)了數(shù)碼管和TFT-LCD 數(shù)據(jù)線和控制線的時(shí)分復(fù)用,減少了微控制器GPIO需求,節(jié)約了CPU 資源,降低了PCB 布線難度,提升了系統(tǒng)可靠性。
系統(tǒng)底層軟件設(shè)計(jì)的任務(wù)是完成顯示設(shè)備的讀寫,因?yàn)轱@示設(shè)備均掛接在FSMC 總線上,所以要實(shí)現(xiàn)顯示設(shè)備數(shù)據(jù)訪問,首先就需要FSMC 初始化。
4.1.1 FSMC 讀寫時(shí)序
FSMC 有多種時(shí)序模型用于NOR Flash/PSRAM/SRAM 的 訪 問,對(duì)TFT-LCD 來 說,讀取操作比較慢,寫入操作比較快,使用模式A 的讀寫分離時(shí)序控制比較方便,可以使讀寫操作均獲得較高性能表現(xiàn)。數(shù)碼管控制只涉及寫,且沒有速度要求,任何模式均可以滿足要求,為了和LCD 保持一致,也采用模式A 進(jìn)行控制。
訪問NOR Flash/PSRAM/SRAM 的模式A的讀取時(shí)序如圖3(a)所示,寫入時(shí)序如圖3(b)所示,在這兩個(gè)時(shí)序中都只需要設(shè)置地址建立時(shí)間ADDSET 和數(shù)據(jù)建立時(shí)間DATAST 這兩個(gè)參數(shù),它們都用HCLK 的時(shí)鐘周期個(gè)數(shù)表示,其中ADDSET 最小值為0,最大值為15,DATAST 最小值為1,最大值為255。根據(jù)參考文獻(xiàn)[9]說明,實(shí)際的地址建立時(shí)間是ADDSET 個(gè)HCLK 周期,數(shù)據(jù)建立時(shí)間是(DATAST+1)個(gè)HCLK周期。
4.1.2 FSMC 初始化
FSMC 工作模式靈活多變,控制寄存器眾多,直接操作寄存器很難完成,一般采用基于庫(kù)函數(shù)的開發(fā)方式,而庫(kù)函數(shù)又分為標(biāo)準(zhǔn)庫(kù)和硬件抽象層(Hardware Abstraction Layer,HAL)庫(kù)。借助STM32 推出的圖形化配置軟件STM32CubeMX的HAL 庫(kù)開發(fā),只需要輸入幾個(gè)關(guān)鍵參數(shù),即可自動(dòng)完成FSMC 接口初始化工作。自動(dòng)化程度高,是未來嵌入式開發(fā)的技術(shù)方向。
(1) 數(shù)碼管FSMC 初始化設(shè)置
在STM32CubeMX 軟件中,打開圖5 所示的設(shè)置界面,首先設(shè)置Mode 選項(xiàng)內(nèi)容,配置NOR Flash/PSRAM/SRAM/ROM/LCD 3,即 選 擇Bank1. Sector3 連接數(shù)碼管,片選信號(hào):NE3,存儲(chǔ)器類型:LCD Interface,LCD 的RS 信號(hào):A6,數(shù)據(jù)寬度:16 位。隨后配置Configuration 選項(xiàng)內(nèi)容,其中大部參數(shù)采用默認(rèn)即可,使能擴(kuò)展模式,使其支持分開設(shè)置讀寫時(shí)序。對(duì)數(shù)碼管的訪問只有寫不需要讀,所以讀時(shí)序參數(shù)可以任意設(shè)置;寫時(shí)序中無需送出地址信號(hào),所以寫時(shí)序地址建立時(shí)間設(shè)置為0,以使其選中芯片后立即送出數(shù)據(jù)。因片選信號(hào)需要經(jīng)過反相器送給鎖存芯片以完成數(shù)據(jù)傳輸,所以數(shù)據(jù)送出后需要保持一定的時(shí)間,數(shù)據(jù)建立時(shí)間需要設(shè)置大一些,作者設(shè)置的是160。所有需要配置的信息在圖5 中均使用紅色框線標(biāo)出。
圖5 數(shù)碼管FSMC 初始化界面Fig.5 FSMC initialization interface of digital tube
(2) LCD 的FSMC 初 始化設(shè)置
如 圖6 所 示,TFT-LCD 的FSMC 初 始 化 基本上和圖5 的數(shù)碼管FSMC 初始化設(shè)置是一樣的,不同的地方均使用藍(lán)色框線標(biāo)出。LCD 連接到FSMC 的Bank1. Sector4,所以此時(shí)需要配置NOR Flash/PSRAM/SRAM/ROM/LCD 4,片選信號(hào)也相應(yīng)地調(diào)整為NE4。FSMC 總線選擇模式A 分開設(shè)置讀寫時(shí)序控制LCD 顯示屏,由于LCD 讀速度要比寫速度慢得多,所以在設(shè)置讀時(shí)序時(shí)時(shí)間參數(shù)盡量設(shè)置大一些,作者將ADDSET 和DATAST 分別設(shè)置為15 和59。對(duì)于STM32F407 微控制器,在168 MHz 主頻時(shí),HCLK 約為6 ns,其對(duì)應(yīng)的地址建立時(shí)間為15×6 ns=90 ns,數(shù)據(jù)建立時(shí)間為(59+1)×6 ns=360 ns。LCD 寫時(shí)序的時(shí)間參數(shù)設(shè)置適當(dāng)小一些,作者將ADDSET 和DATAST 分別設(shè)置為9和8,兩個(gè)參數(shù)對(duì)應(yīng)的時(shí)間數(shù)值均約為54 ns。上述參數(shù)設(shè)置對(duì)70.82 mm(2.8 in)TFT-LCD 的常規(guī)驅(qū)動(dòng)芯片ILI9341 來說可以保證其穩(wěn)定運(yùn)行,并留有足夠的裕量。
圖6 LCD 的FSMC 初始化界面Fig.6 FSMC initialization interface of LCD
完成上述配置后,STM32CubeMX 會(huì)自動(dòng)將FSMC 總線用到的GPIO 引腳配置為FSMC 復(fù)用推挽模式,無須上拉或下拉,并在FSMC 初始化程序中完成調(diào)用,大大減輕了用戶編程工作量。
STM32CubeMX 完成FSMC 初始化后,生成Keil MDK 工程,在工程的主函數(shù)中會(huì)自動(dòng)調(diào)用初始化函數(shù),此時(shí)就可以直接訪問數(shù)碼管或LCD。6 位共陽(yáng)數(shù)碼管采用PNP 三極管S8550 驅(qū)動(dòng),所以位選碼是低電平有效,段選碼也是低電平相應(yīng)筆劃點(diǎn)亮。假設(shè)我們需要將DS1、DS3、DS5 三個(gè)數(shù)碼管上面均顯示的數(shù)字“1”,則應(yīng)送出的顯示碼如表2 所示,即向FSMC 總線送出一個(gè)16 進(jìn)制數(shù)據(jù)0xEAF9,即可實(shí)現(xiàn)顯示控制。
表2 數(shù)碼管控制實(shí)例顯示碼對(duì)應(yīng)表Tab.2 Corresponding table of digital tube control example display code
數(shù)據(jù)管是掛接在FSMC 總線的Bank1.Sector3 上的,由表1 可知,這一區(qū)域?qū)?yīng)的地址范圍為0x6800 0000-0x6BFF FFFF,只要向這個(gè)64 MB 單元中任一地址送數(shù)據(jù),即可將顯示碼發(fā)送至數(shù)據(jù)線,并自動(dòng)產(chǎn)生片選信號(hào)FSMC_NE3,反相后形成鎖存信號(hào),完成數(shù)據(jù)鎖存。為此選擇這一區(qū)域的首地址0x6800 0000,轉(zhuǎn)換為指針型常量,將其賦值給uint16_t 型指針型變量SEG_ADDR,向該地址寫數(shù)據(jù)即可實(shí)現(xiàn)顯示控制,十分簡(jiǎn)單。
相比于數(shù)碼管顯示控制,LCD 顯示程序則要復(fù)雜得多,分為底層驅(qū)動(dòng)、基礎(chǔ)顯示和高層應(yīng)用3 部分?;A(chǔ)顯示程序和高層應(yīng)用程序一般由顯示屏廠家直接提供,且在移植了底層驅(qū)動(dòng)程序之后,一般無需任何更改,就可直接使用,所以本文重點(diǎn)討論的是基于FSMC 的底層驅(qū)動(dòng)程序的實(shí)現(xiàn)。
對(duì)TFT-LCD 寄存器和存儲(chǔ)器一體化控制簡(jiǎn)單、便捷的方法是定義一個(gè)LCD 數(shù)據(jù)訪問結(jié)構(gòu)體,包含寄存器和存儲(chǔ)器2 個(gè)16 位無符號(hào)型成員。并確定該結(jié)構(gòu)體的基地址為0x6C00007E,其 中HADDR[27:26]=11,表 明 選 擇 的 是Bank1.Sector4,即片選信號(hào)FSMC_NE4 有效。
結(jié)構(gòu)體第一個(gè)成員LCD_REG 地址和LCD 結(jié)構(gòu)體的基地址相同,即:0x6C00007E,第二個(gè)成員LCD_RAM 地址為基地址加2,即:0x6C000080。如果只觀察HADDR 低8 位,即LCD->LCD_REG的HADDR[7:0]=0111 1110,LCD->LCD_RAM的HADDR[7:0]=1000 0000,由于FSMC外接16 位存儲(chǔ)器時(shí)內(nèi)外地址對(duì)應(yīng)關(guān)系為HAD?DR[25:1]→FSMC_A[24:0],相當(dāng)于右移1 位。由此可知LCD->LCD_REG 的FSMC_A[6:0]=011 1111,F(xiàn)SMC_A6(RS)=0,讀 寫LCD 寄 存器;LCD->LCD_RAM 的FSMC_A[6:0]=100 0000,F(xiàn)SMC_A6(RS)=1,讀寫LCD 存儲(chǔ)器。在FSMC 配置過程中選擇不同的地址線連接LCD 的RS 信號(hào),其基地址的確定亦可舉一反三。
有了上述定義并確定好基地址之后,通過選擇結(jié)構(gòu)體的不同成員,即可實(shí)現(xiàn)對(duì)不同存儲(chǔ)對(duì)象的訪問,編程簡(jiǎn)潔、高效、直觀。結(jié)合LCD 驅(qū)動(dòng)芯片ILI9341[10]控制時(shí)序,將讀寫控制代碼封裝成LCD 基本讀寫函數(shù),即為L(zhǎng)CD 底層驅(qū)動(dòng)程序,供基礎(chǔ)顯示程序和高層應(yīng)用程序調(diào)用。
由于技術(shù)發(fā)展歷史原因,一般LCD 控制程序是用標(biāo)準(zhǔn)庫(kù)編寫的,所以還需將標(biāo)準(zhǔn)庫(kù)程序向HAL 庫(kù)程序移植,一般步驟為:在STM32CubeMX中配置并自動(dòng)生成FSMC 初始化代碼,含LCD和數(shù)碼管兩部分;定義LCD 結(jié)構(gòu)體、確定基地址,編寫LCD 底層驅(qū)動(dòng)程序;將原LCD 初始化程序中的FSMC 初始化和復(fù)用引腳配置代碼刪除,其余部分保留;移植基礎(chǔ)顯示和高層應(yīng)用代碼,經(jīng)過上述步驟即可完成LCD 顯示代碼移植。
為檢驗(yàn)電路功能和觀察運(yùn)行效果,依據(jù)系統(tǒng)設(shè)計(jì)成果,完成樣品生產(chǎn)、組裝和測(cè)試工作。
第一步:數(shù)碼管顯示測(cè)試。編寫數(shù)碼管動(dòng)態(tài)顯示時(shí)間程序,在6 位數(shù)碼管上顯示時(shí)、分、秒數(shù)值,各占兩位數(shù)碼管,且在小時(shí)和分鐘的末尾顯示一個(gè)小數(shù)點(diǎn)。
第二步:LCD 顯示測(cè)試。在完成顯示程序移植之后,調(diào)用顯示函數(shù)分別進(jìn)行字符、字符串、整型、浮點(diǎn)數(shù)等文字信息顯示測(cè)試;調(diào)用圖形處理函數(shù)進(jìn)行畫點(diǎn)、畫線、畫圓、矩形、三角形、指定區(qū)域填充等圖形顯示測(cè)試;制作漢字字庫(kù)并存于字庫(kù)文件當(dāng)中,調(diào)用中文顯示函數(shù)進(jìn)行多種字號(hào)漢字顯示測(cè)試。
第三步:綜合測(cè)試。設(shè)計(jì)了一個(gè)綜合實(shí)例,系統(tǒng)主程序是一個(gè)電子萬(wàn)年歷,實(shí)時(shí)采集現(xiàn)場(chǎng)溫濕度信息,合并實(shí)驗(yàn)裝置設(shè)計(jì)信息,所有信息均顯示于TFT-LCD 顯示屏上,同時(shí)將當(dāng)前時(shí)間高亮顯示于數(shù)碼管,便于遠(yuǎn)距離觀看,測(cè)試結(jié)果如圖7 所示。由于項(xiàng)目綜合性較強(qiáng),主程序處理任務(wù)較多,而數(shù)碼管動(dòng)態(tài)顯示是阻塞運(yùn)行的,CPU占有率較高,作者采用定時(shí)器中斷的方式依次刷新需要顯示的數(shù)碼管,在主程序中只需要對(duì)顯示數(shù)組賦值即可,使兩個(gè)顯示設(shè)備顯示控制方式基本相同,提升了系統(tǒng)運(yùn)行效率。
圖7 實(shí)驗(yàn)裝置綜合測(cè)試圖Fig.7 Comprehensive test diagram of experimental device
第四步:對(duì)比測(cè)試。分別使用FSMC 總線、GPIO 并口、SPI 串口連接數(shù)碼管和TFT-LCD 雙顯示設(shè)備,運(yùn)行測(cè)試程序,使用STM32 定時(shí)器記錄LCD 刷整屏?xí)r間,測(cè)試條件和測(cè)試結(jié)果如表3所示。由表3 可知,SPI 串口顯示速度很慢,對(duì)于有刷新頻率要求的場(chǎng)合原則上不使用。FSMC接口和GPIO 并口測(cè)試時(shí)使用相同的TFT-LCD模塊和微控制器,工作于同一主頻,使測(cè)試數(shù)據(jù)更具可比性。由表中數(shù)據(jù)計(jì)算得出,F(xiàn)SMC 接口相比于微控制器并口控制,減少了38.2% 的GPIO 引腳資源占有率,LCD 刷屏速度提高了17.6 倍。以上數(shù)據(jù)視軟硬件設(shè)置情況會(huì)有小幅波動(dòng),但是大致范圍不會(huì)變化。
表3 顯示終端驅(qū)動(dòng)接口對(duì)比測(cè)試Tab.3 Comparison test of display terminal driver interface
測(cè)試結(jié)果表明,采用FSMC 總線同時(shí)連接數(shù)碼管和TFT-LCD 顯示屏各項(xiàng)顯示功能均很好完成,刷新速度快,畫面清晰流暢,系統(tǒng)穩(wěn)定可靠,項(xiàng)目設(shè)計(jì)達(dá)到了預(yù)期目標(biāo)。
本文設(shè)計(jì)了一款嵌入式系統(tǒng)多顯示終端實(shí)驗(yàn)裝置,將數(shù)碼顯示器和TFT-LCD 均掛接在STM32 微控制器的高速FSMC 總線上,實(shí)現(xiàn)數(shù)據(jù)信號(hào)和控制信號(hào)時(shí)分復(fù)用。LCD 的8080 控制時(shí)序和數(shù)碼顯示器地址鎖存信號(hào)均由硬件自動(dòng)產(chǎn)生,F(xiàn)SMC 初始化亦可通過STM32CubeMX圖形化配置工具輕松完成,軟件設(shè)計(jì)工作量顯著減少。相比于微控制器直接并口控制,減少了38.2%的GPIO 引腳資源占有率,LCD 刷屏速度提高了17.6 倍。系統(tǒng)設(shè)計(jì)方案具有較高的數(shù)據(jù)訪問性能,降低了軟硬設(shè)計(jì)難度,提高了系統(tǒng)可靠性。