服務熱線 :0591-22850016 |
新聞分類
News center
|
基於STM32的便攜式人機界麵係統 |
||
作者
:admin 來源
:本站 發表時間
:2012/9/18 9:17:09 點擊
:3642
|
||
基於STM32的便攜式人機界麵係統 關鍵字 :全站儀 ;STM32 ;TFT液晶 ; 在全站儀應用於飛機的測量過程中 ,常會涉及到計算 ,以滿足不同的應用環境與測量要求 ,以往的方式是測量後期編輯軟件在計算機上實現 ,現代測量迫切需要一種便攜式手持計算係統 ,來完成實時的測量要求 ,而這一係統中中文人機界麵成為一種事實上的行業標準 。實現顯示漢字的TFT液晶和可輸入數字的小鍵盤已成為智能設備必不可少的組成部分 。同時作為便攜式設備基本要求的低功耗特性也貫穿於中文人機界麵的設計始終 。這種低功耗中文人機交互界麵需要在選取處理器和具體元器件上有特殊考慮 。微功耗 、高性能應作為選擇相關器件的首要要求 。本文選用了意法半導體公司基於ARM最新Cortex—M3內核的STM32F103RB作為主控芯片 ,通過選擇合適的液晶模塊 ,構建了一個高性能低功耗的中文人機界麵係統 。 1 係統的工作原理 本係統以STM32F103RBT6為核心 ,采用晶彩光電的AM240320TFT液晶屏作為顯示器 ,完成內容的顯示 ,由於STM32F103RBT6內部Flash為128 K ,如果用來儲存漢字字庫 ,對芯片資源是一種極大的浪費 ,所以本文中采用微控製器外掛SPI接口Flash的設計思路 ,將不用重複改變的中文字庫存放在外部Flash芯片裏麵 ,需要時再通過SPI口調入處理器 。由於STM32F103RBT6不帶有FSMC ,所以采用軟件模擬總線的方法 ,完成對液晶模塊的驅動 。 2 係統硬件設計 2.1 供電部分電路 由於整個係統采用3.3 V供電 ,所以必須外部穩壓電路將電壓穩定到3.3 V ,本設計中采用三端穩壓芯片LM1117-3.3 ,將外部電池電壓穩定為3.3 V位係統提供電源 ,為處理器 、液晶顯示器 、SPI Flash供電 ,采用二極管IN4007串接在電源正極 ,為係統提供電源反接保護 。供電部分原理圖如圖1所示 。
2.2 液晶顯示部分電路設計 液晶顯示部分主要由微控製器驅動液晶顯示模塊完成人機界麵狀態的顯示 ,通過發送命令字 ,完成液晶模塊的初始化以及漢字的顯示 。 2.2.1 STM32F係列ARM微控製器的特點 STM32處理器采用ARM公司最新的V7體係架構的內核Cortex—M3 ,它的速度比ARM7快三分之一 ,功耗低四分之三 ,同時集成了分支預測 ,單周期乘法 ,硬件除法等功能 ,大大地提高了處理器的數據處理能力 ,同時采用最新的Thumb-2指令集 ,有效地降低了代碼的密度 ,提高了程序的執行效率 ,通過對功耗和性能的分析 ,本文中采用的處理器為STM32F103RBT6 ,該處理器工作頻率為72 MHz ,內置高速存儲器(高達128 K字節的閃存和20 K字節的SRAM) ,豐富的增強I/O端口和聯接到2條APB總線的外設 。供電電壓2.0~3.6V ,一係列的省電模式保證低功耗應用的要求 ,達到了性能和功耗的平衡 。 2.2.2 TFT液晶顯示模塊的特點 TFT液晶顯示屏是薄膜晶體管型液晶顯示屏 。TFT液晶為每個像素都設有一個半導體開關 ,每個像素都可以通過點脈衝直接控製 ,因而每個節點都相對獨立 ,並可以連續控製 。不僅提高了顯示屏的反應速度 ,同時可以精確控製顯示色階 ,所以TFT液晶的色彩更真 。 由於大多數帶有LCD控製器的ARM處理器都沒有內部的程序存儲器和數據存儲器 ,而一般的Cortex—M3內核微控製器都不帶有專門的LCD控製器 ,對於不帶有LCD控製器的係統 ,一般長常用Intel 8080接口或者Motorola的6800接口 ,本係統中采用STM32高速的IO口模擬8080接口時序 。綜上所述 ,選用的TFT液晶必須滿足兩個條件 ,第一 ,帶有獨立的顯存 。第二 ,帶有8080接口 。設計中采用了台灣采用晶彩光電的AM2403 20TFT液晶屏 ,它的主控製芯片為ILI9320 ,自帶總大小為172 820(24Ox320x18/8)的顯存 ,模塊的16位數據線與顯寸的對應關係為565方式 ,它支持包括8080接口在內多種控製輸入信號 。 STM32采用外部8 MHz的晶振作為輸入時鍾 ,內部鎖相環將時鍾倍頻到72MHz作為係統時鍾 ,采用GPIO口模擬8080時序並行驅動2.8寸TFT屏 ,顯示部分的處理器和液晶顯示器的硬件電路接口電路如圖2所示 。
2.3 SPI接口Flash存儲疊的特點 由於在本係統中整個的漢字字庫需要存儲在外部Flash中 ,所以需要選擇一種Flash存儲芯片 ,Flash芯片選擇需要滿足以下要求 。第一 ,盡量占用少的IO口 ,因為液晶顯示器已經采用了並行接口 ,如果繼續選用並行接口的Flash ,對芯片的IO消耗較大 ,這樣勢必要選用IO更多的芯片 ,對於便攜式設備來說 ,這是不合理的 ,所以本係統的設計過程中選用的Flash為SST公司的SST25VF080B ,它采用SPI接口 ,SPI是一種高速的 ,全雙工 ,同步的通信總線 ,並且在芯片的管腳上隻占用四根線 ,節約了芯片的管腳 ,同時為PCB的布局上節省空間 ,提供方便 ,正是出於這種簡單易用的特性 ,現在越來越多的芯片集成了這種通信協議 ,本文中的SPI Flash采用美國SST公司的SST25VF080B芯片 ,容量為8 M位 ,它工作電壓範圍為2.7~3.6 V ,工作在SPI模式0或者模式3 ,最高工作在50MHz ,最小擦除單位為4K字節的扇區 ,可擦寫10萬次 ,數據保持100年以上 。而STM32F103RBT6帶有高速的硬件SPI接口 ,可以很方便與SST25VF080B連接通信。所以聚星撲克采用SPI Flash來完成對漢字字庫的存儲 ,字庫存儲部分的硬件電路接口圖如圖3所示 。
3 係統軟件設計 係統軟件包括字庫的調用和TFT液晶顯示軟件設計兩個部分 ,字庫調用主要是通過STM32F103RBT6的SPI接口調用存儲在SST25VF080B中的中文字庫 。TFT液晶顯示部分主要是通過STM32F103RBT6通用I/O口模擬16位的8080並口 ,實現對液晶顯示器的驅動 ,在軟件設計的過程中需要注意一個問題 。就是不同字庫編碼的標準時不一樣的 ,所以在解碼時略有不同 ,常用的漢字字庫有utf-8字庫和utf-8字庫兩種 。 3.1 utf-8字庫和utf-8字庫 utf-8收錄簡化漢字及符號 、字母、日文假名等共7 445個圖形字符 ,其中漢字占6 763個 。utf-8規定“對任意一個圖形字符都采用兩個字節表示 ,每個字節均采用七位編碼表示” ,習慣上稱第一個字節為“高字節” ,第二個字節為“低字節” 。utf-8—80包含了大部分常用的一 、二級漢字 ,和9區的符號 。該字符集是幾乎所有的中文係統和國際化的軟件都支持的中文字符集 ,這也是最基本的中文字符集 。其編碼範圍是高位0xa1~0xfe ,低位也是0xa1~0xfe ;漢字從0xb0a1開始 ,結束於0xf7fe 。utf-8將代碼表分為94個區 ,對應第一字節(0xa1~0xfe) ;每個區94個位(0xa1~0xfe) ,對應第二字節 ,兩個字節的值分別為區號值和位號值加32(20H) ,因此也稱為區位碼 。01~09區為符號 、數字區 ,16~87區為漢字區(0xb0~0xf7) ,10~15區 、88~94區是有待進一步標準化的空白區 。utf-8將收錄的漢字分成兩級 :第一級是常用漢字計3755個 ,置於16~55區 ,按漢語拚音字母/筆形順序排列 :第二級漢字是次常用漢字計3 008個 ,置於56~87區 ,按部首/筆畫順序排列 。故而utf-8最多能表示6763個漢字 。 而utf-8內碼完全兼容utf-8 ,同時支持繁體字 ,總漢字數有2萬多個 ,編碼格式如下 ,每個utf-8碼由2個字節組成 ,第一個字節為0X81~0XFE ,第二個字節分為兩部分 ,一是0X40~0X7E ,二是0X80~0XFE 。其中與utf-8相同的區域 ,字完全相同。把第一個字節代表的意義稱為區 ,那麽utf-8裏麵總共有126個區(0XFE~0X81+1) ,每個區內有190個漢字(0XFE~0X80+0X7E~0X40+2) ,總共就有126x190=23 940個漢字 。點陣庫隻要按照這個編碼規則從0X8140開始 ,逐一建立 ,每個區的點陣大小為每個漢字所用的字節數乘以190 。這樣 ,就可以得到在這個字庫裏麵定位漢字的方法 : 當utf-8L<0X7F時 :Hp=((utf-8H-0x81)×190+utf-8L-0X40)×(sizex2) ; 當utf-8L>0X80時 :Hp=((utf-8H-0x81)×190+utf-8L-0X41)×(sizex2) ; 其中utf-8H 、utf-8LL分別代表utf-8的第一個字節和第二個字節(也就是高位和低位) ,size代表漢字字體的大小(比如16字體 ,12字體等) ,Hp則為對應漢字點陣數據在字庫裏麵的起始地址 。 3.2 係統軟件流程 對於utf-8字庫和utf-8字庫 ,他們的解碼部分部分略有不同 ,這個區別主要是由於他們的編碼方式不同引起的 ,對於utf-8字庫 ,解碼的方式如下 :
其中qh 、ql分別代表utf-8的第一個字節和第二個字節(也就是高位和低位) ,size代表漢字字體的大小(比如16字體 ,12字體等) ,foffset則為對應漢字點陣數據在字庫裏麵的起始地址 。 係統啟動以後 ,首先完成時鍾的初始化 ,采用外部8 MHz的晶振作為輸入時鍾 ,內部鎖相環將時鍾倍頻到72 MHz作為係統時鍾 ,完成GPIO的初始化 ,作為LCD驅動IO的通用IO口的時鍾設置為50 MHz的推挽模式 ,接著完成硬件SPI1的初始化 ,SPI時鍾頻率設置為18 MHz ,接著完成液晶的初始化 ,此過程是通過發送特定的命令序列來實現的 ,然後刷新顯示背景顏色 ,設置字體顏色 ,通過上麵的程序完成字庫中漢字點陣序列的查詢 ,將漢字點陣送液晶屏顯示 。 係統軟件設計的流程圖如圖4所示 。
采用方法還不但可以實現標準字體的顯示 ,還可以根據係統要求 ,采用專用軟件生成各種需要的字體 ,為設計多樣性的人機界麵係統提供了一種可行的方案 。 4 結論 本文根據在全站儀應用於飛機的測量過程中的實際需要 ,設計了用於測量計算的人機界麵係統 ,在該係統中 ,采用的處理器內核為ARM最新的Cortex—M3 ,它基於最新ARMv7架構 ,采用了至今為止最小的ARM內核 ,有效地降低了係統功耗 。采用SPI Flash來存儲漢字字庫 ,通過彩色TFT液晶屏顯示 ,有效地擴展了應用的範圍 ,經過實驗驗證 ,本係統的設計方法完全達到設計要求 。 |
||
|
||
Copyright 2003 -2018 TSheng All Rights Reserved 版權所有: 聚星撲克電氣集團-福州聚星撲克自動化工程有限公司
聯係電話
:0591-22850050 E-mail
:768608509@qq.com 訪問量 :5089956 閩ICP備19020641號-1 |