優(yōu)勝從選擇開始,我們是您最好的選擇!—— 中州期刊聯盟(新鄉(xiāng)市博翰文化傳媒有限公司)
0373-5939925
2851259250@qq.com
我要檢測 我要投稿 合法期刊查詢
您的位置:網站首頁 > 優(yōu)秀論文 > 其他論文 > 正文

基于FSMC總線的嵌入式系統多顯示終端驅動設計

作者:黃克亞來源:《液晶與顯示》日期:2022-08-09人氣:1537

嵌入式系統均需配備顯示設備以指示程序運行狀態(tài)和輸出控制結果。薄膜晶體管液晶顯示器(TFT-LCD)因為功耗低、輻射小、顏色鮮艷、顯示內容豐富等優(yōu)點而成為嵌入式系統的主流,但是其控制復雜,需要移植廠家提供的底層驅動程序1-2。數碼管亮度高、穩(wěn)定可靠、價格便宜,在家用電器、工業(yè)控制和傳感檢測等領域有著廣泛的應用,是嵌入式學習的經典器件。

為提高數據傳輸速度,降低軟硬件設計難度,并行接口是數碼管、液晶顯示器與微控制器(MCU)連接的首選。但并口需要占用大量I/O口資源,以6位數碼管為例,共有6個位選信號和8個段選信號,TFT-LCD顯示模塊則有6個控制信號和16位數據線。設計系統時,為了編程方便,一般希望位選信號、段選信號、LCD數據線分別占用連續(xù)的16位端口,而這些I/O引腳又離散地分布于芯片的四周,上述技術需求給微控制器引腳資源分配和PCB布線帶來極大的挑戰(zhàn),同時降低了實驗裝置的可靠性,而破解這一難題的方法就是將二者均掛接在FSMC總線上,同時進行信號線復用。

2 FSMC總線

靈活靜態(tài)存儲控制器(Flexible Static Memory Controller, FSMC)能夠連接同步、異步存儲器和16位PC存儲卡,支持SRAM、NAND Flash、NOR Flash和PSRAM等類型存儲器。FSMC連接的所有外部存儲器共享地址、數據和控制信號,但有各自的片選信號,所以FSMC一次只能訪問一個外部器件3-4。

圖1所示,FSMC將外部存儲器1 GB空間劃分為固定大小為256 MB的4個存儲塊(Bank),Bank1可連接多達4個NOR Flash或PSRAM/SRAM存儲器件,Bank2和Bank3用于訪問NAND Flash存儲器,每個存儲區(qū)域連接一個設備,Bank4用于連接PC Card設備。其中Bank1又被分為4個區(qū)(Sector),每個區(qū)管理64 MB空間,每個區(qū)都有獨立的寄存器對所連接的存儲器進行配置。

圖1  FSMC存儲區(qū)域劃分

Fig.1  Division of FSMC storage area


表1所示,Bank1的256 MB空間由28根地址線(HADDR[27:0])尋址。這里HADDR是內部AHB總線地址,其中HADDR[25:0]來自外部存儲器地址FSMC_A[25:0],對應引腳地址信號;而HADDR[27: 26]對4個區(qū)進行尋址,由系統自動完成,無外部引腳對應信號。

表1  Bank1存儲區(qū)選擇表
Tab.1  Bank1 storage area selection table
Bank1所選區(qū)片選信號地址范圍HADDR
[27:26][25:0]
第1區(qū)FSMC_NE10X6000 0000-0X63FF FFFF00FSMC_A[25:0]
第2區(qū)FSMC_NE20X6400 0000-0X67FF FFFF01
第3區(qū)FSMC_NE30X6800 0000-0X6BFF FFFF10
第4區(qū)FSMC_NE40X6C00 0000-0X6FFF FFFF11

在設計或分析系統時需要特別注意HADDR[25:0]的對應關系。

當Bank1連接的是8位寬度存儲器時,總線和外設均采用字節(jié)編址,二者一一對應,即:HADDR[25:0]→FSMC_A[25:0]。

當Bank1連接的是16位寬度存儲器時,總線字節(jié)編址,存儲器雙字節(jié)尋址,此時總線26地址中最低位HADDR[0]用來表示16位數據的高位或低位,高25位HADDR[25:1]對應16位寬的存儲器單元地址,即:HADDR[25:1]→FSMC_A[24:0],相當于總線地址右移了一位5-6

3 系統硬件設計

作者設計的嵌入式系統實驗裝置結構框圖如圖2所示,其重點展示TFT-LCD和數碼管的FSMC總線連接關系,其他模塊,如CMSIS-DAP調試器、LED流水燈、獨立/矩陣按鍵等雖也為實驗裝置重要組成部分,但不是本文討論重點,故未繪制。實驗裝置主控芯片選擇基于ARM Cortex-M4內核,性能出色的STM32F407ZGT6微控制器,該芯片擁有完備的FSMC接口系統,塊1的4個子區(qū)可同時連接4個NOR Flash/PSRAM/SRAM存儲設備。實驗裝置配備雙顯示終端,數碼顯示器為6位14.22 mm (0.56 in)共陽數碼管,PNP三極管S8550驅動;液晶顯示器為70.82 mm (2.8 in)全彩TFT-LCD顯示模塊,240像素×320像素,2.8~3.3 V供電,ILI9341驅動,16位8080并行接口。

圖2  實驗裝置FSMC連接結構框圖

Fig.2  FSMC connection structure block diagram of experimental device


3.1 FSMC與TFT-LCD連接

在STM32內部,FSMC起到橋梁作用,其一端通過內部高速總線AHB連接到Cortex內核,另一端則是面向擴展存儲器的外部總線,既能夠進行信號類型的轉換,又能夠進行信號寬度和時序的調整,提供多種讀寫模式,使之對內核而言沒有區(qū)別7-8。模式A比較適合連接至Bank1的NOR Flash/PSRAM/SRAM存儲器,其讀寫時序如圖3所示9。信號線主要包括26位地址線A[25:0],16位數據線D[15:0],片選信號NE[x],輸出使能NOE,寫入使能NEW。

圖3  FSMC模式A讀寫時序

Fig.3  Read and write timing of FSMC mode A


TFT-LCD顯示模塊信號線包括:數據線D[15:0],寄存器/存儲器選擇RS,讀使能RD,寫使能WR,片選CS,復位RST。通常使用標準的16位8080并口與微控制器連接,其讀寫時序如圖4所示10。

圖4  8080接口讀寫時序

Fig.4  Read and write timing of 8080 interface


對比圖3、圖4讀寫時序和二者控制信號可以發(fā)現,TFT-LCD模塊,除了已連接至系統復位電路的RST信號外,其他信號均可由FSMC接口提供,所以FSMC連接PSRAM/SRAM的工作模式適合于連接TFT-LCD顯示模塊。如圖2所示,項目實施時選擇FSMC總線的Bank1.Sector4連接TFT-LCD,FSMC_NE4接LCD片選信號CS,FSMC_NOE接LCD讀引腳RD,FSMC_NWE接LCD寫引腳WR,選擇FSMC_A6地址線連接LCD的寄存器/存儲器選擇信號RS,FSMC_D[15:0]接LCD的16位數據線D15~D0,LCD工作于16位8080接口模式。

3.2 FSMC與數碼管連接

圖2所示,數碼管和TFT-LCD同時掛接在STM32F4的FSMC總線上,二者共享數據線,為使二者輸出信號互不影響,需要將向數碼管送出的數據信號進行鎖存,鎖存器選擇2片74HC573D,鎖存引腳LE高電平傳輸,低電平封鎖。選擇FSMC總線的Bank1.Sector3連接6位共陽數碼管,所以FSMC_NE3作為數碼管的片選信號,但是NE3是低電平有效,與鎖存器傳輸信號正好相反,所以FSMC_NE3需要經反相器U2連接U3的兩片74HC573D的鎖存引腳LE。由于只需要一路反相器,系統實施時采用由1個PMOS管和1個NMOS管構成的單路CMOS反相器。數碼管8個段選線和6個位選線共14條信號線由FSMC_D[13:0]控制,需要經過鎖存模塊U3鎖存,FSMC_D[7:0]接一片鎖存器輸入端,鎖存器輸出端接數碼管段選線dp~a,FSMC_D[13:8]接另一片鎖存器的輸入端,鎖存器的輸出端接數碼管位選線DS6~DS1。

上述設計實現了數碼管和TFT-LCD數據線和控制線的時分復用,減少了微控制器GPIO需求,節(jié)約了CPU資源,降低了PCB布線難度,提升了系統可靠性。

4 系統軟件設計

4.1 FSMC初始化

系統底層軟件設計的任務是完成顯示設備的讀寫,因為顯示設備均掛接在FSMC總線上,所以要實現顯示設備數據訪問,首先就需要FSMC初始化。

4.1.1 FSMC讀寫時序

FSMC有多種時序模型用于NOR Flash/PSRAM/SRAM的訪問,對TFT-LCD來說,讀取操作比較慢,寫入操作比較快,使用模式A的讀寫分離時序控制比較方便,可以使讀寫操作均獲得較高性能表現。數碼管控制只涉及寫,且沒有速度要求,任何模式均可以滿足要求,為了和LCD保持一致,也采用模式A進行控制。

訪問NOR Flash/PSRAM/SRAM的模式A的讀取時序如圖3(a)所示,寫入時序如圖3(b)所示,在這兩個時序中都只需要設置地址建立時間ADDSET和數據建立時間DATAST這兩個參數,它們都用HCLK的時鐘周期個數表示,其中ADDSET最小值為0,最大值為15,DATAST最小值為1,最大值為255。根據參考文獻[9]說明,實際的地址建立時間是ADDSET個HCLK周期,數據建立時間是(DATAST+1)個HCLK周期。

4.1.2 FSMC初始化

FSMC工作模式靈活多變,控制寄存器眾多,直接操作寄存器很難完成,一般采用基于庫函數的開發(fā)方式,而庫函數又分為標準庫和硬件抽象層(Hardware Abstraction Layer,HAL)庫。借助STM32推出的圖形化配置軟件STM32CubeMX的HAL庫開發(fā),只需要輸入幾個關鍵參數,即可自動完成FSMC接口初始化工作。自動化程度高,是未來嵌入式開發(fā)的技術方向。

(1) 數碼管FSMC初始化設置

在STM32CubeMX軟件中,打開圖5所示的設置界面,首先設置Mode選項內容,配置NOR Flash/PSRAM/SRAM/ROM/LCD 3,即選擇Bank1.Sector3連接數碼管,片選信號:NE3,存儲器類型:LCD Interface,LCD的RS信號:A6,數據寬度:16位。隨后配置Configuration選項內容,其中大部參數采用默認即可,使能擴展模式,使其支持分開設置讀寫時序。對數碼管的訪問只有寫不需要讀,所以讀時序參數可以任意設置;寫時序中無需送出地址信號,所以寫時序地址建立時間設置為0,以使其選中芯片后立即送出數據。因片選信號需要經過反相器送給鎖存芯片以完成數據傳輸,所以數據送出后需要保持一定的時間,數據建立時間需要設置大一些,作者設置的是160。所有需要配置的信息在圖5中均使用紅色框線標出。

圖5  數碼管FSMC初始化界面

Fig.5  FSMC initialization interface of digital tube


(2) LCD的FSMC初始化設置

圖6所示,TFT-LCD的FSMC初始化基本上和圖5的數碼管FSMC初始化設置是一樣的,不同的地方均使用藍色框線標出。LCD連接到FSMC的Bank1.Sector4,所以此時需要配置NOR Flash/PSRAM/SRAM/ROM/LCD 4,片選信號也相應地調整為NE4。FSMC總線選擇模式A分開設置讀寫時序控制LCD顯示屏,由于LCD讀速度要比寫速度慢得多,所以在設置讀時序時時間參數盡量設置大一些,作者將ADDSET和DATAST分別設置為15和59。對于STM32F407微控制器,在168 MHz主頻時,HCLK約為6 ns,其對應的地址建立時間為15×6 ns=90 ns,數據建立時間為(59+1)×6 ns=360 ns。LCD寫時序的時間參數設置適當小一些,作者將ADDSET和DATAST分別設置為9和8,兩個參數對應的時間數值均約為54 ns。上述參數設置對70.82 mm (2.8 in)TFT-LCD的常規(guī)驅動芯片ILI9341來說可以保證其穩(wěn)定運行,并留有足夠的裕量。

圖6  LCD的FSMC初始化界面

Fig.6  FSMC initialization interface of LCD


完成上述配置后,STM32CubeMX會自動將FSMC總線用到的GPIO引腳配置為FSMC復用推挽模式,無須上拉或下拉,并在FSMC初始化程序中完成調用,大大減輕了用戶編程工作量。

4.2 數碼管顯示程序設計

STM32CubeMX完成FSMC初始化后,生成Keil MDK工程,在工程的主函數中會自動調用初始化函數,此時就可以直接訪問數碼管或LCD。6位共陽數碼管采用PNP三極管S8550驅動,所以位選碼是低電平有效,段選碼也是低電平相應筆劃點亮。假設我們需要將DS1、DS3、DS5三個數碼管上面均顯示的數字“1”,則應送出的顯示碼如表2所示,即向FSMC總線送出一個16進制數據0xEAF9,即可實現顯示控制。

表2  數碼管控制實例顯示碼對應表
Tab.2  Corresponding table of digital tube control example display code
名稱//DS6DS5DS4DS3DS2DS1dpgfedcba
FSMCD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
數值1110101011111001
HEXEAF9

數據管是掛接在FSMC總線的Bank1.Sector3上的,由表1可知,這一區(qū)域對應的地址范圍為0x6800 0000-0x6BFF FFFF,只要向這個64 MB單元中任一地址送數據,即可將顯示碼發(fā)送至數據線,并自動產生片選信號FSMC_NE3,反相后形成鎖存信號,完成數據鎖存。為此選擇這一區(qū)域的首地址0x6800 0000,轉換為指針型常量,將其賦值給uint16_t型指針型變量SEG_ADDR,向該地址寫數據即可實現顯示控制,十分簡單。

4.3 LCD顯示程序設計

相比于數碼管顯示控制,LCD顯示程序則要復雜得多,分為底層驅動、基礎顯示和高層應用3部分?;A顯示程序和高層應用程序一般由顯示屏廠家直接提供,且在移植了底層驅動程序之后,一般無需任何更改,就可直接使用,所以本文重點討論的是基于FSMC的底層驅動程序的實現。

對TFT-LCD寄存器和存儲器一體化控制簡單、便捷的方法是定義一個LCD數據訪問結構體,包含寄存器和存儲器2個16位無符號型成員。并確定該結構體的基地址為0x6C00007E,其中HADDR[27:?26]=11,表明選擇的是Bank1.Sector4,即片選信號FSMC_NE4有效。

結構體第一個成員LCD_REG地址和LCD結構體的基地址相同,即:0x6C00007E,第二個成員LCD_RAM地址為基地址加2,即:0x6C000080。如果只觀察HADDR低8位,即LCD->LCD_REG的HADDR[7:?0]=0111 1110,LCD->LCD_RAM?的?HADDR?[7:?0]?=1000 0000,由于FSMC外接16位存儲器時內外地址對應關系為HADDR[25:1]→FSMC_A[24:0],相當于右移1位。由此可知LCD->LCD_REG的FSMC_A[6:?0]=011 1111,FSMC_A6(RS)=0,讀寫LCD寄存器;LCD->LCD_RAM的FSMC_A[6:?0]=100 0000,FSMC_A6(RS)=1,讀寫LCD存儲器。在FSMC配置過程中選擇不同的地址線連接LCD的RS信號,其基地址的確定亦可舉一反三。

有了上述定義并確定好基地址之后,通過選擇結構體的不同成員,即可實現對不同存儲對象的訪問,編程簡潔、高效、直觀。結合LCD驅動芯片ILI934110控制時序,將讀寫控制代碼封裝成LCD基本讀寫函數,即為LCD底層驅動程序,供基礎顯示程序和高層應用程序調用。

由于技術發(fā)展歷史原因,一般LCD控制程序是用標準庫編寫的,所以還需將標準庫程序向HAL庫程序移植,一般步驟為:在STM32CubeMX中配置并自動生成FSMC初始化代碼,含LCD和數碼管兩部分;定義LCD結構體、確定基地址,編寫LCD底層驅動程序;將原LCD初始化程序中的FSMC初始化和復用引腳配置代碼刪除,其余部分保留;移植基礎顯示和高層應用代碼,經過上述步驟即可完成LCD顯示代碼移植。

5 系統運行測試

為檢驗電路功能和觀察運行效果,依據系統設計成果,完成樣品生產、組裝和測試工作。

第一步:數碼管顯示測試。編寫數碼管動態(tài)顯示時間程序,在6位數碼管上顯示時、分、秒數值,各占兩位數碼管,且在小時和分鐘的末尾顯示一個小數點。

第二步:LCD顯示測試。在完成顯示程序移植之后,調用顯示函數分別進行字符、字符串、整型、浮點數等文字信息顯示測試;調用圖形處理函數進行畫點、畫線、畫圓、矩形、三角形、指定區(qū)域填充等圖形顯示測試;制作漢字字庫并存于字庫文件當中,調用中文顯示函數進行多種字號漢字顯示測試。

第三步:綜合測試。設計了一個綜合實例,系統主程序是一個電子萬年歷,實時采集現場溫濕度信息,合并實驗裝置設計信息,所有信息均顯示于TFT-LCD顯示屏上,同時將當前時間高亮顯示于數碼管,便于遠距離觀看,測試結果如圖7所示。由于項目綜合性較強,主程序處理任務較多,而數碼管動態(tài)顯示是阻塞運行的,CPU占有率較高,作者采用定時器中斷的方式依次刷新需要顯示的數碼管,在主程序中只需要對顯示數組賦值即可,使兩個顯示設備顯示控制方式基本相同,提升了系統運行效率。

圖7  實驗裝置綜合測試圖

Fig.7  Comprehensive test diagram of experimental device


第四步:對比測試。分別使用FSMC總線、GPIO并口、SPI串口連接數碼管和TFT-LCD雙顯示設備,運行測試程序,使用STM32定時器記錄LCD刷整屏時間,測試條件和測試結果如表3所示。由表3可知,SPI串口顯示速度很慢,對于有刷新頻率要求的場合原則上不使用。FSMC接口和GPIO并口測試時使用相同的TFT-LCD模塊和微控制器,工作于同一主頻,使測試數據更具可比性。由表中數據計算得出,FSMC接口相比于微控制器并口控制,減少了38.2%的GPIO引腳資源占有率,LCD刷屏速度提高了17.6倍。以上數據視軟硬件設置情況會有小幅波動,但是大致范圍不會變化。

表3  顯示終端驅動接口對比測試
Tab.3  Comparison test of display terminal driver interface
驅動接口TFT-LCD顯示模塊微控制器及主頻I/O引腳數刷屏時間/ms
FSMC70.82 mm (2.8 in) 240×320 ILI9341STM32F407ZGT6 168 MHz21 (20+01)2.9
并口70.82 mm (2.8 in) 240×320 ILI9341STM32F407ZGT6 168 MHz34 (20+14)53.9
SPI60.96 mm (2.4 in) 240×320 ILI9341STM32F103ZET6 72 MHz19 (05+14)1 497.2

測試結果表明,采用FSMC總線同時連接數碼管和TFT-LCD顯示屏各項顯示功能均很好完成,刷新速度快,畫面清晰流暢,系統穩(wěn)定可靠,項目設計達到了預期目標。

6 結論

本文設計了一款嵌入式系統多顯示終端實驗裝置,將數碼顯示器和TFT-LCD均掛接在STM32微控制器的高速FSMC總線上,實現數據信號和控制信號時分復用。LCD的8080控制時序和數碼顯示器地址鎖存信號均由硬件自動產生,FSMC初始化亦可通過STM32CubeMX圖形化配置工具輕松完成,軟件設計工作量顯著減少。相比于微控制器直接并口控制,減少了38.2%的GPIO引腳資源占有率,LCD刷屏速度提高了17.6倍。系統設計方案具有較高的數據訪問性能,降低了軟硬設計難度,提高了系統可靠性。


關鍵字:優(yōu)秀論文

網絡客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號中州期刊聯盟 ICP備案號:豫ICP備2020036848

【免責聲明】:中州期刊聯盟所提供的信息資源如有侵權、違規(guī),請及時告知。

版權所有:中州期刊聯盟(新鄉(xiāng)市博翰文化傳媒有限公司)

法律顧問:北京京師(新鄉(xiāng))律師事務所

關注”中州期刊聯盟”公眾號
了解論文寫作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院單位發(fā)核心?

掃描關注公眾號

論文發(fā)表不再有疑惑

論文寫作全系列課程

掃碼了解更多

輕松寫核心期刊論文

在線留言