999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SPI閃存和主存IAP的嵌入式平臺中文顯示系統設計

2022-03-22 08:04:28黃克亞
實驗室研究與探索 2022年12期
關鍵詞:嵌入式系統

黃克亞, 陳 良

(蘇州大學機電工程學院,江蘇 蘇州 215131)

0 引 言

中文顯示是嵌入式系統的普遍需求,可實現界面友好,系統易用性大幅提升。實現中文顯示存在兩條技術路線,一種方法是將漢字字模數據定義為常量數組,存儲于系統主存儲器當中,顯示時直接訪問主存,速度很快,但僅可存儲個別漢字,需要手動取模,通用性較差;另一種方法是將所有漢字包含全角英文字符,取字模后存儲于外部存儲器當中,顯示時先訪問外存獲取字模數據再調入內存完成顯示,系統通用性強,可實現任意漢字以及部分特殊字符顯示,但顯示速度較慢,對嵌入式系統實時性有一定的影響[1-2]。

因為嵌入式系統需要顯示的漢字是有限且相對固定的,本文將上述兩種技術方法組合在一起,設計了一通用嵌入式平臺中文顯示系統,在外部SPI(Serial Peripheral Interface)接口Flash 存儲器上存儲中文字庫,在片內利用IAP(In Application Programming)技術緩沖存儲常用漢字字模數據,取長補短,兼顧系統通用性和快速性,且中文顯示平臺對用戶和程序員來說是完全透明的[3-6]。

1 系統硬件設計

1.1 系統結構

嵌入式系統中文顯示平臺硬件結構如圖1 所示,主控芯片選擇基于ARM Cortex-M4 內核的性能強勁的STM32F407ZET6 微控制器,168 MHz 主頻,512 KB 片內Flash ROM,完備的FSMC 接口,更快的USART 和SPI通信速度。使用靈活靜態存儲控制器(Flexible Static Memory Controller,FSMC)連接數碼顯示器和TFT LCD兩個顯示設備,CPU 引腳資源利用率高,訪問速度快。使用SPI接口連接片外Flash ROM存儲器W25Q128。板載CMSIS-DAP 調試器支持JTAG/SWD兩種調試方式,同時還具有串口通信功能。

圖1 嵌入式平臺硬件結構

1.2 顯示設備

嵌入式平臺顯示系統硬件連接如圖2 所示,系統配備雙顯示終端,數碼顯示器為6 位共陽數碼管,PNP三極管驅動,74HC573D 鎖存;液晶顯示器為71.12 mm(2.8 in)全彩TFT LCD 顯示模塊,240 ×320 像素,ILI9341 驅動,16 位8080 并行接口。設計時使用FSMC總線的存儲塊1 子區4 連接TFT LCD,FSMC接口與LCD數據、控制信號直接相連,由FSMC 控制器產生LCD的8080 控制時序。數碼顯示器通過鎖存器與LCD復用數據線,FSMC 總線的存儲塊1 子區3 片選信號反相后作為數碼顯示器的選通信號[7-11]。

圖2 嵌入式平臺顯示設備連接電路

1.3 外部存儲器

Flash結合了ROM和RAM的長處,不僅具備電可擦編程只讀存儲器(E2PROM)的功能,還可以快速讀取數據,具有非易失性隨機訪問存儲器的優勢。為存儲字庫數據,實驗平臺擴展了一片容量為128 Mbit 的NOR Flash 存儲芯片W25Q128,連接至微控制器的SPI1 接口,硬件電路如圖3 所示。W25Q128 芯片的DO、DI、CLK 引腳分別接至微控制器的SPI1_MISO、SPI1_MOSI、SPI1_SCK。微控制器的PB14 引腳連接存儲器的引腳,低電平選中。存儲芯片和引腳接VDD,即不使用寫保護和數據保持功能。

圖3 嵌入式平臺W25Q128連接電路

1.4 CMSIS-DAP調試器

CMSIS-DAP調試器硬件電路如圖4 所示,電路核心為F103T8U6 微控制器,通過運行監控程序,模擬JTAG/SWD兩種調試協議,可實現一鍵下載,單步執行、連續運行等全部調試方式。監控程序還虛擬出一個USART串行接口,用于嵌入式平臺與上位機雙向數據通信。CMSIS-DAP調試器可實現嵌入式平臺下載、調試、通信、供電功能四合一,同時還具有開源、高速、免驅動等優點。

圖4 CMSIS-DAP調試器硬件電路

2 系統軟件設計

2.1 字庫生成與存儲

要實現中文顯示,需要對每種字體制作相應的中文字庫,并將字庫存儲于片外SPI Flash當中。

2.1.1 字庫生成

中文顯示系統采用GB2312 字符集,包括漢字、全角英文及部分特殊字符共8 178 個字符,每個字符均設置4 種字體,分別為12 ×12、16 ×16、24 ×24、32 ×32,要實現中文顯示第一步就需要制作不同字體的字庫文件。

用PCtoLCD2002 軟件制作宋體16 ×16 中文字庫設置界面如圖5 所示,字模選項設置為:陰碼、逆向、逐行式,對于不同驅動芯片掃描方式會有所差別。對于其他字號取模只需修改圖5 中紅色框線標出的字寬和字高數字即可。之后單擊工具欄“導入大量文本或一個文本文件生成字庫”按鈕,保持默認選項,單擊“生成國標漢字庫”,即可生成二進制字庫文件。依據上述方法,依次生成4 種字體所對應的字庫文件。

圖5 中文字庫制作界面

2.1.2 地址分配

制作生成的中文字庫相對于微控制器主存來說是海量數據,所以系統外擴了一片SPI接口的NOR Flash存儲器W25Q128,用于存儲中文字庫信息。

W25Q128 總容量為16 MB,存儲器的訪問單位分為塊、扇區和頁。因為擦除和寫入都是以扇區為單位進行的,所以只需了解整個存儲空間劃分為4 096 個扇區,每個扇區的大小為4 096 byte,由此可知存儲器的24 位地址的高12 位表示扇區號,低12 位表示扇區內的字節地址。NOR Flash 讀和寫都可以從任意地址開始,但是寫之前一定要確保要寫入單元原來是空白(0xFF),否則一定要先擦除再寫,而要擦除必須整個扇區擦除。

嵌入式平臺片外Flash 存儲器并不只有存儲字庫一個用途,往往是其增值功能。本文制作的4 種字體中文字庫所占空間接近2 MB,考慮到其他應用習慣于從0 地址開始對存儲器頻繁讀寫,例如嵌入式課程的SPI通信實驗,所以將字庫存儲于Flash 芯片的高8 MB空間,即從0x0080 0000 地址開始,同時為了擦除和讀寫方便,字庫存儲是按扇區對齊的,字庫所占空間和詳細地址分配信息如表1 所示。

表1 字庫地址分配表

2.1.3 字庫存儲

因為字庫文件數據量遠超微控制器的SRAM 容量,無法直接讀取并寫入外存,但可以將微控制器作為中轉站,在PC機和微控制器之間建立數據傳輸通道,PC機分批發送數據,微控制器循環接收實時寫入。由此可見,字庫存儲軟件設計分為上位機軟件開發和下位機程序設計兩部分[12-16]。

(1)上位機軟件設計。上位機軟件采用可視化編程工具開發,程序首先獲取PC 機可用串口并對其進行初始化。隨后等待下位機返回Flash 芯片初始化狀態,直至下位機準備就緒,加載字庫文件,向下位機發送包含起始地址和數據長度的傳輸啟動命令。依次將字庫文件以4096 B分塊發送,每塊數據發送完成之后插入軟件延時,以等待下位機完成數據接收和存儲操作。循環發送直至字庫數據傳輸完成,整個通信過程中實時顯示下位機接收和處理數據狀態。

(2)微控制器端程序設計。微控制器要實現串口接收上位機發來的字庫數據,并將其寫入W25Q128,首先就需要對USART和SPI接口進行初始化。

串口初始化界面如圖6(a)所示,選擇USART1,異步工作模式,波特率115.2 Kb/s,數據寬度8 位,1位停止位,無奇偶校驗位,同時打開串口接收中斷。

SPI接口初始化界面如圖6(b)所示,選擇SPI1,全雙工模式,Motorola幀格式,8位數據寬度,MSB先行,預分頻系數8,波特率10 Mb/s,時鐘極為高,時鐘相位為第2邊沿跳變,NSS信號類型為軟件設置。由于系統使用的是硬件SPI,經過上述初始化之后即可調用庫函數實現字節數據的接收和發送,但是對SPI 接口Flash 芯片W25Q128的讀寫還需要編寫驅動程序。

圖6 微控制器端初始化

微控制器完成初始化之后,串口處于數據接收狀態,當監聽到上位機發來數據傳輸準備命令時,從中獲取數據存儲起始地址、長度,將存儲字庫用到的扇區全部擦除,發送應答信息。上位機確認微控制器已準備就緒時,隨即啟動數據傳輸。微控制器每收到4096 B數據,進行一次W25Q128 寫入操作,即寫入一個扇區,同時復位緩沖區數據指針。當接收到全部數據時,計算最后一幀數據長度,并將其寫入最后一個扇區。

(3)存儲操作。由圖5 取模生成的4 個字庫文件,需要根據表1 確定的起始地址分別寫入SPI Flash存儲器,在產品量產時十分麻煩且容易出錯。為此通過編程語言將4 個字庫文件合并成一個總字庫,存儲效率大幅提升,數據共享也更為方便。合成字庫扇區對齊,中間填充空白字符,末尾以回車換行符結束。

通過CMSIS-DAP 調試器連接嵌入式平臺與PC機,下載微控制器端字庫存儲程序,復位運行。啟動可視化編程工具開發的上位機通信軟件W25Qxx串口下載助手,選擇芯片:W25Q128,輸入起始地址:0x0080 0000,打開合成的字庫文件,等待下位機初始化成功后,單擊發送文件按鈕,啟動文件傳輸,經過一段時間等待之后,字庫文件的傳輸和寫入工作便已完成。

2.2 主存儲器IAP

在應用編程(In Application Programming IAP)是用戶程序在運行過程中通過內部的I-Code 指令總線或D-Code數據總線訪問內置閃存模塊,既可以通過預留的通信接口對固件程序更新升級,又可將主存部分區域作為數據存儲區,實現批量數據快速訪問。

STM32F4 的主存儲器,用來存放代碼和數據常量,共分為12 個扇區,前4 個扇區為16 KB大小,扇區4 是64 KB大小,扇區5 ~11 是128 KB 大小,不同型號的微控制器其Flash 容量也有所不同,作者所設計的嵌入式平臺配備F407ZET6 微控制器,主存儲器容量為512 KB,擁有8 個扇區。

主存數據存儲區在設置時不能與代碼區重疊,否則將會造成程序錯亂,引發未知錯誤。保險的做法是將數據區設置在主存的最后一個扇區,即F407ZET6的扇區7,其地址范圍為:0x08060000 ~0x0807FFFF,共128 KB,使用時,4 種字體緩沖區僅占用整個扇區的低96 KB,詳細地址空間分配如表2 所示。

表2 主存緩沖區存儲空間分配表

由表2 可知,每種字體單個漢字所占的存儲空間除漢字本身的字模信息而外,均附加了2 B 的索引信息,用于存放該漢字的內碼。由于本設計在主存中緩沖中文字庫信息,字模數據是隨機存儲的,為確定字模信息對應的字符,以漢字內碼作為索引信息是簡單有效的,因為在所有計算機設備當中,漢字均以內碼存儲和傳遞的。

在主存儲器中緩沖存儲中文字庫信息,包含主存IAP寫入和IAP讀取兩方面操作。主存儲器寫入可以以字、半字、字節為單位進行寫入,字寫入速度最快,字節寫入最慢。由表2 可知,每種字體字模數據附加上索引信息之后長度已經不是4 的倍數呢,但仍是2 的倍數,所以字庫信息緩沖存儲時是以半字為單位進行寫入的。字庫在主存當中是環形緩沖的,由于NOR Flash只能在空白單元寫入,所以緩沖數據是依次寫入的,當緩沖區寫滿時需要從頭開始,但此時需要將整個扇區全部擦除再寫入。

主存儲器IAP讀取相對來說比較簡單,這也是主存的典型工作狀態,中文字庫在主存中是從某一地址依次存儲的,可以采用和寫入相對應的讀取方法,即一次讀取一個漢字結構體數據到SRAM 當中,然后再進行數據處理。本文采用的方法是將字庫的起始地址轉換為字庫結構體指針,然后使用結構體數組的形式訪問,時間復雜度和空間復雜度都是最小的,體現了C語言指針的強大和靈活。

2.3 顯示系統設計

要實現液晶顯示屏信息顯示,需要驅動TFT LCD,由于LCD是掛接在FSMC總線上的,所以第1 步就是LCD的FSMC初始化設置。

2.3.1 FSMC初始化設置

TFT LCD初始化界面如圖7 所法,所有需要配置的信息在圖中均使用紅色框線標出。首先設置Mode選項,配置NOR Flash/PSRAM/SRAM/ROM/LCD 4,即選擇Bank1.Sector4 連接TFT LCD,片選信號:NE4,存儲器類型:LCD Interface,LCD 的RS 信號:A6,數據寬度:16 位。隨后配置Configuration選項內容,選擇模式A分開設置讀寫時序控制液晶顯示屏,由于LCD讀取速度要比寫入速度慢得多,所以讀時序參數需要設置大一些,寫時序則可以小一些,參考設置如圖7 所示。上述參數設置對71.12 mm TFT LCD的常規驅動芯片ILI9341 來說可以保證其穩定運行,并留有足夠的裕量。

圖7 LCD的FSMC初始化設置界面

在STM32CubeMX中配置并自動生成FSMC 初始化代碼,定義LCD 結構體、確定基地址,編寫LCD 底層驅動程序;移植顯示屏廠家提供的基礎顯示和高層應用代碼,即可實現TFT LCD顯示控制。

2.3.2 主存緩沖中文顯示系統

在完成了系統總體規劃,字庫取模及片外存儲,主存IAP讀取和寫入,LCD初始化及驅動移植等各項工作之后,即可開展基于SPI 閃存和主存IAP 的嵌入式平臺中文顯示系統設計。

中英文混合顯示主程序流程如圖8(a)所示,函數入口參數為一字符串指針,讀取其指向的第1 個元素,如果其值大于等于0x80,則為中文字符,根據不同字號調用相應中文顯示函數,返回之后指針向下偏移2位;否則為英文字符,調用英文顯示函數,返回之后指針下移1 位,如此往復直至整個字符串顯示完成。

中文字符顯示函數流程如圖8(b)所示,進入函數首先計算主存緩沖區已存漢字數量,從字庫首地址開始,以字庫結構體長度為步長,依次向后尋找直至主存空白(連續兩個字節為0xFF)結束,即可統計出已存漢字個數,統計程序僅執行一次。

圖8 中英混合顯示流程

在主存字庫存儲區依次比對顯示漢字內碼,若成功則讀取主存字模數據,完成漢字顯示。若顯示漢字不在主存緩沖區當中,需要訪問外存讀取字模信息,GB2312 字符集是一種區位碼,分為94 個區,每區94個字符,每個字符的區號和位號加上0xA1,即為漢字內碼。在制作國標字庫時是按區位號依次存放的,所以將內碼還原為區位號,然后區號乘以94,加上位號,即為該漢字在字庫的中的偏移量,由此計算出顯示漢字在W25Q128 中的絕對地址,從中讀出字模數據,完成漢字顯示。將漢字內碼作為索引信息添加到字模數據的前面,一并寫入主存已有字庫的末尾,實現該漢字的字庫緩沖存儲。

由于主存NOR Flash是非易失性的隨機訪問存儲器,且緩沖區設置較大,多數情況下是一次緩沖,始終受益的,程序員在進行系統開發時也無需關心字庫的具體存儲位置,項目設計最終為嵌入式工程師提供了高速、透明的中文顯示平臺。

3 系統運行測試

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

3.1 接口性能測試

分別使用FSMC總線、GPIO并口連接TFT LCD顯示模塊,運行測試程序,使用STM32 定時器記錄LCD刷新整個屏幕時間。GPIO并口連接時需要54.62 ms,而FSMC接口僅為3.54 ms,速度提升14.4 倍。

3.2 主存緩沖測試

通過串口傳輸并寫入字庫至W25Q128,擦除主存最后一個扇區,運行基于SPI 閃存和主存IAP 的嵌入式平臺中文顯示系統。調用通用顯示函數,輸出16 號漢字“黃克亞”,通過調試器查看主存,初次顯示時,系統已將字模信息寫入主存,結果如圖9 所示。當再次輸出相同字號漢字,即使打亂輸出順序,依然可以成功顯示,且主存緩沖數據沒有變化,表明顯示程序實現既定功能。

圖9 主存緩沖存儲觀察窗口

3.3 中文顯示速度測試

編寫測試程序在TFT LCD全屏顯示24 ×24 中文漢字,通過定時器記錄顯示程序運行時間,字庫片外存儲時需要128.69 ms,字庫主存緩沖時需要16.28 ms,當系統不進行大量中文信息顯示時,在系統調試階段已完成常用漢字主存緩沖存儲,使用論文設計方法,可使中文顯示速度提升6.9 倍。

3.4 系綜綜合測試

設計一個綜合實例,系統主程序是一個電子萬年歷,實時采集現場溫度、濕度、光照等環境信息,合并實驗裝置設計信息顯示于TFT LCD顯示屏上,同時將當前時間高亮顯示于數碼管,便于遠距離觀看,測試結果如圖10 所示。

圖10 實驗裝置綜合測試圖

測試結果表明,基于SPI 閃存和主存IAP 的嵌入式平臺中文顯示系統各項顯示功能均很好完成,刷新速度快,畫面清晰流暢,系統穩定可靠,項目設計達到了預期目標。

4 結 語

本文設計了一款嵌入式平臺通用中文顯示系統。硬件上將TFT LCD 顯示模塊通過FSMC 接口連接至內部高速AHB 總線;通過SPI 接口擴展了一片NOR Flash存儲器W25Q128;CMSIS-DAP 調試器可實現嵌入式平臺下載、調試、通信、供電功能四合一。系統軟件設計工作是分階段完成的,第一階段工作是對4 種字體國標漢字取模,合成單個字庫文件,通過串口分塊發送至微控制器,以扇區為單位寫入SPI 閃存。第二階段工作是編寫通用顯示函數,如果字模數據已緩存則主存IAP 讀取顯示,否則SPI 讀取外存字模數據,LCD顯示并主存IAP緩沖寫入。測試表明,嵌入式平臺可實現全部中文顯示,顯示效果清晰流暢;LCD 刷新速度較GPIO并口連接提升14.4 倍,中文顯示速度較SPI Flash 存儲方式提高6.9 倍;主存IAP 一次緩沖,始終受益,顯示系統對程序員來說是透明的,通用性強,可移植性好。

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 正在播放久久| 日韩无码视频播放| 欧美国产日韩在线观看| 91在线中文| 婷婷六月激情综合一区| 亚洲中文精品人人永久免费| 高清无码手机在线观看| 欧美日韩国产系列在线观看| 久久国产精品电影| 欧美激情第一欧美在线| 精品撒尿视频一区二区三区| 一区二区三区四区日韩| 免费a在线观看播放| 国产凹凸视频在线观看| 欧美成一级| 欧美成人影院亚洲综合图| 欧美一级爱操视频| 免费国产高清精品一区在线| 国产丝袜无码一区二区视频| 午夜a级毛片| 欧美亚洲中文精品三区| 免费观看男人免费桶女人视频| 丁香婷婷在线视频| 欧美色综合久久| 91一级片| 毛片手机在线看| 99这里只有精品在线| 国产精品精品视频| 久久精品人人做人人爽| 亚洲精品无码AV电影在线播放| 国产综合色在线视频播放线视| 一级毛片在线免费视频| 五月婷婷中文字幕| 亚洲婷婷在线视频| 免费人成又黄又爽的视频网站| 国产精品自在在线午夜| 国产chinese男男gay视频网| 久久网综合| 91久久国产综合精品女同我| 色综合久久88色综合天天提莫| 国产又粗又猛又爽视频| 黄色网址手机国内免费在线观看| 日韩一区二区三免费高清| 在线观看的黄网| 国产亚洲视频中文字幕视频| jizz在线观看| 亚洲首页在线观看| 欧美自慰一级看片免费| 亚洲成人播放| 美女扒开下面流白浆在线试听 | 亚洲视频a| 日韩免费中文字幕| 精品亚洲欧美中文字幕在线看 | 亚洲色中色| 成人看片欧美一区二区| 伊人成人在线视频| 国产精品久久自在自线观看| 丰满少妇αⅴ无码区| 国产理论最新国产精品视频| 香蕉精品在线| 欧美中日韩在线| AV无码一区二区三区四区| 成人福利在线看| 69国产精品视频免费| 亚洲AV无码乱码在线观看代蜜桃 | 午夜视频在线观看免费网站 | 久久黄色免费电影| 国产成人一区在线播放| 天天干天天色综合网| 亚洲成人网在线播放| www精品久久| 亚洲中文无码h在线观看| 精品视频免费在线| 高清视频一区| 一区二区三区国产精品视频| 国产不卡一级毛片视频| 一级高清毛片免费a级高清毛片| 免费在线成人网| 三级视频中文字幕| 中文无码伦av中文字幕| 色综合天天综合| 国产午夜精品一区二区三|