雷曉榮
(中煤科工集團(tuán)西安研究院有限公司,陜西 西安 710077)
?
基于STM32的礦用手持式孔口顯示器設(shè)計(jì)
雷曉榮
(中煤科工集團(tuán)西安研究院有限公司,陜西 西安 710077)
為了提高礦用孔口顯示器使用的便捷性,采用STM32微控制器和emWin圖形庫(kù)設(shè)計(jì)了礦用手持式孔口顯示器。首先介紹了孔口顯示器的整體硬件設(shè)計(jì);軟件部分介紹了軟件整體架構(gòu),并詳細(xì)介紹了采集控制程序的設(shè)計(jì)和emWin圖形庫(kù)在STM32平臺(tái)的移植。試驗(yàn)結(jié)果表明,孔口顯示器系統(tǒng)工作穩(wěn)定,性能可靠,界面設(shè)計(jì)友好,實(shí)用性強(qiáng)。
孔口顯示器;STM32微控制器;emWin圖形庫(kù)
STM32微控制器是意法半導(dǎo)體(ST)公司生產(chǎn)的32位ARM處理器。該處理器具有內(nèi)部資源豐富、擴(kuò)展能力強(qiáng)、功率消耗低、價(jià)格便宜等優(yōu)點(diǎn),已逐漸成為 32位微控制器中的理想器件[1]。
孔口顯示器是探管和用戶之間的人機(jī)接口,用戶通過它向探管發(fā)送同步、配置和數(shù)據(jù)提取等命令;同時(shí),探管接收命令后,向孔口顯示器發(fā)回相應(yīng)的信息;孔口顯示器將接收到的數(shù)據(jù)信息經(jīng)過計(jì)算和處理將結(jié)果以數(shù)字和圖形(剖面圖和水平面圖)的方式顯示出來[2-3]。傳統(tǒng)的孔口顯示器根據(jù)實(shí)現(xiàn)的主控芯片不同,一般有三種:基于工控機(jī)平臺(tái)的孔口顯示器,具有體積大、重量大等缺陷;基于單片機(jī)的孔口顯示器,沒有圖形化顯示界面;基于嵌入式ARM一體機(jī)的孔口顯示器,連續(xù)工作時(shí)間短,加大電池容量后體積又大。針對(duì)這些問題,筆者基于STM32微控制器設(shè)計(jì)了一款體積小、功耗低、方便攜帶的礦用手持式孔口顯示器。
礦用手持式孔口顯示器的主要功能就是配合中煤科工集團(tuán)西安研究院有限公司研制的煤礦井下各型軌跡儀使用,作為其顯示控制設(shè)備。礦用手持式孔口顯示器硬件主要由STM32F103系列微控制器、FLASH、SDRAM、LCD觸摸顯示控制模塊、USB轉(zhuǎn)藍(lán)牙模塊、接口模塊和其他模塊組成如圖1所示。
圖1 顯示器硬件框架圖
1.1微控制器
STM32F103 系列微控制器是新一代基于32位Cortex-M3內(nèi)核的嵌入式 ARM處理器,最高處理速度可達(dá)72 MHz,片上集成存儲(chǔ)器,擁有USB2.0和USART等多個(gè)通信接口、11個(gè)定時(shí)器、中斷源和外設(shè)等。工作電壓為 2.0~3.6 V;具有休眠、停止、待機(jī)3種低功耗模式,從而在低功耗、短啟動(dòng)時(shí)間和可用喚醒源之間達(dá)到一個(gè)最好的平衡點(diǎn),適合孔口顯示器使用[4]。
1.2顯示控制電路
LCD觸摸顯示控制模塊采用了BL32007型3.2 in(1 in=2.54 cm)TFT液晶屏,分辨率為320×240,控制驅(qū)動(dòng)芯片采用經(jīng)典的ILI9341,其組成包括720通道的源極驅(qū)動(dòng)器、320通道的柵極驅(qū)動(dòng)器、圖形顯示的GRAM以及供電電路。ILI9341支持8/9/16/18位數(shù)據(jù)總線的MCU接口,6/16/18位數(shù)據(jù)總線的RGB接口,以及3/4線的SPI接口,使用1.65~3.3 V的I/O接口電壓和一個(gè)對(duì)應(yīng)的電壓跟隨電路來產(chǎn)生驅(qū)動(dòng)LCD的電壓,有精確的電壓控制支持全色顯示、8色顯示和睡眠模式。觸摸屏控制芯片選用XPT2046,內(nèi)含12位分辨率125 kHz的轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器。 XPT2046支持從1.5 V到5.25 V的低電壓I/O接口。 XPT2046能通過執(zhí)行2次A/D轉(zhuǎn)換查出被按的屏幕位置。顯示控制電路連接如圖2所示。
圖2 顯示控制電路連接圖
1.3通信電路
通信電路改進(jìn)了上一代產(chǎn)品有線串口通信的方式,設(shè)計(jì)了有線串口通信和無線藍(lán)牙傳輸模塊共存的模式,可根據(jù)實(shí)際使用工況自由切換[5]。ADM2687E采用 Analog Devices的 iCoupler技術(shù),在單一封裝中結(jié)合了3通道隔離器、三態(tài)差分線路驅(qū)動(dòng)器、差分輸入接收器,內(nèi)置 5 kV(rms)隔離式DC-DC集成電源,不需要采用外部DC-DC隔離塊,具有 ±15 kV ESD 保護(hù)功能,適合在多點(diǎn)傳輸線路中用于高速通信。采用 5 V 或 3.3 V 單電源供電,實(shí)現(xiàn)了全集成式信號(hào)和電源隔離式 RS-485 解決方案;BF10-A 藍(lán)牙模塊直接把串口數(shù)據(jù)通過藍(lán)牙傳輸?shù)姆绞桨l(fā)送或接收回來,送到STM32F103 系列微控制器進(jìn)行處理[6]。
圖形用戶界面是礦用手持式孔口顯示器設(shè)計(jì)的關(guān)鍵部分,軟件設(shè)計(jì)的主要內(nèi)容包括emWin圖形庫(kù)在STM32平臺(tái)的移植和基于emWin圖形庫(kù)的數(shù)據(jù)采集控制程序設(shè)計(jì)。
2.1數(shù)據(jù)采集控制軟件設(shè)計(jì)
數(shù)據(jù)采集控制軟件作為軌跡儀的人機(jī)交互界面,直接關(guān)系到整個(gè)系統(tǒng)的用戶體驗(yàn)。因此,軟件的設(shè)計(jì)采用模塊化設(shè)計(jì)方法,具體操作采用“數(shù)字導(dǎo)向式”設(shè)計(jì),簡(jiǎn)化了軟件的操作步驟。該軟件實(shí)現(xiàn)了井下數(shù)據(jù)通信、調(diào)試測(cè)量、定時(shí)同步、數(shù)據(jù)處理計(jì)算及存儲(chǔ)、軌跡圖顯示和USB導(dǎo)出等功能,軟件架構(gòu)如圖3所示。
圖3 軟件架構(gòu)圖
2.2emWin移植
emWin是SEGGER公司開發(fā)圖形庫(kù),將它授權(quán)給ST公司使用稱之為STemWin,二者是一樣的。emWin來源有兩處,一個(gè)是MDK(Keil)軟件目錄下的,另外一個(gè)是ST公司的,文中采用ST公司的STemWinLibrary522,它的移植主要有以下幾個(gè)步驟[7-8]:
1)添加庫(kù)文件和配置文件。
打開工程文件,添加GUI配置文件GUIConf.h和GUICon.c、GUI驅(qū)動(dòng)模板文件GUIDRV_Template.h和GUIDRV_Template.c、LCD配置文件LCDConf_FlexColor_Template.h和LCDConf_FlexColor_Template.c及LCDConf_Lin_Template.h和LCDConf_Lin_Template.c;庫(kù)文件添加與STM32F103 系列微控制器對(duì)應(yīng)的STemWin522_CM3_Keil.lib和STemWin522_CM3_OS_Keil.lib。
2)配置LCD文件
LCD文件配置主要針對(duì)ILI9341控制驅(qū)動(dòng)芯片進(jìn)行配置,配置它的顯示尺寸、顏色模式、顯示方向、寄存器地址等參數(shù),主要配置如下:
/* 顯示尺寸 */
#define XSIZE_PHYS240
#define YSIZE_PHYS320
/* 觸摸屏四個(gè)角的AD采樣值 */
#define TOUCH_AD_TOP3802
#define TOUCH_AD_BOTTOM189
#define TOUCH_AD_LEFT213
#define TOUCH_AD_RIGHT3859
/* 設(shè)置寄存器 */
static void LcdWriteReg(U16 Data)
{
ILI9341_REG = Data;
}
/* 寫寄存器 */
static void LcdWriteData(U16 Data)
{
ILI9341_RAM = Data;
}
void LCD_X_Config(void)
{
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
/* 控制驅(qū)動(dòng)器和顏色模式 */
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
/* 控制驅(qū)動(dòng)器配置 */
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
/* 顯示方向 */
Config.FirstCOM = 0;
Config.FirstSEG = 0;
Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;Config.NumDummyReads = 2;
GUIDRV_FlexColor_Config(pDevice, &Config);
/* 配置控制驅(qū)動(dòng)器和操作方式 */
PortAPI.pfWrite16_A0= LcdWriteReg;
PortAPI.pfWrite16_A1= LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1= LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);
GUI_TOUCH_SetOrientation((GUI_MIRROR_X * LCD_GetMirrorXEx(0)) |
(GUI_MIRROR_Y * LCD_GetMirrorYEx(0)) |
(GUI_SWAP_XY* LCD_GetSwapXYEx (0)));
/* 觸摸屏校正 */
GUI_TOUCH_Calibrate(GUI_COORD_X, 0,240-1, UCH_AD_RIGHT ,TOUCH_AD_LEFT );
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,320-1,TOUCH_AD_BOTTOM ,TOUCH_AD_TOP );
}
3)配置GUI文件
GUI文件配置分為GUIConf.h配置和GUIConf.c配置。GUIConf.h配置多層顯示、多任務(wù)支持、觸摸屏支持、可用包支持信息和缺省字體等,具體如下:
/* 設(shè)置2層顯示支持 */
#define GUI_NUM_LAYERS2
/* 匹配多任務(wù)支持 */
#ifdef OS_SUPPORT
#define GUI_OS(1)
#else
#define GUI_OS(0)
#endif
/* 觸摸屏支持 */
#ifndef GUI_SUPPORT_TOUCH
#define GUI_SUPPORT_TOUCH(1)
#endif
/* 缺省字體 */
#define GUI_DEFAULT_FONT&GUI_Font6x8
/* 鼠標(biāo)支持 */
#define GUI_SUPPORT_MOUSE(1)
/* 支持窗口 */
#define GUI_WINSUPPORT(1)
/* 存儲(chǔ)器設(shè)備支持 */
#define GUI_SUPPORT_MEMDEV(1)
/* 設(shè)備指針支持 */
#define GUI_SUPPORT_DEVICES(1)
GUIConf.c配置主要配置動(dòng)態(tài)顯示緩沖區(qū)大小和缺省的字體等,具體如下:
/* emWin動(dòng)態(tài)顯示緩沖區(qū)大小 */
#define GUI_NUMBYTES1024*38
/* 設(shè)置塊大小 */
#define GUI_BLOCKSIZE 0x80
void GUI_X_Config(void)
{
/* 32位分配存儲(chǔ)區(qū)域 */
static U32 aMemory[GUI_NUMBYTES / 4];
/* 分配存儲(chǔ)區(qū)域給emWin */
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
/* 設(shè)置塊大小 */
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
/* 設(shè)置缺省字體 */
GUI_SetDefaultFont(GUI_FONT_6X8);
}
移植完成后,將使用emWin圖形庫(kù)設(shè)計(jì)的數(shù)據(jù)采集控制程序添加到工程目錄中進(jìn)行編譯并下載到MCU中,初始的功能界面如圖4所示。
圖4 數(shù)據(jù)采集控制軟件界面(截圖)
為了驗(yàn)證礦用手持式孔口顯示器的性能,配合中煤科工集團(tuán)西安研究院有限公司研制的YBG1-T便攜式軌跡儀探管一起進(jìn)行了地面鉆孔試驗(yàn)。測(cè)試效果如圖5所示。
圖5 地面鉆孔試驗(yàn)效果
打開礦用手持式孔口顯示器,啟動(dòng)后自動(dòng)彈出數(shù)據(jù)采集軟件功能界面,和YBG1-T便攜式軌跡儀探管進(jìn)行藍(lán)牙連接,連接成功后開始各項(xiàng)功能測(cè)試:1)調(diào)試測(cè)量,點(diǎn)擊發(fā)送命令后功能界面顯示當(dāng)前的測(cè)量?jī)A角和方位,各項(xiàng)工作正常;2)定時(shí)同步測(cè)試,定時(shí)同步設(shè)置完成并發(fā)送命令,把YBG1-T便攜式軌跡儀探管送入地面鉆孔開始測(cè)量,每隔3 m測(cè)量一次,直到測(cè)試結(jié)束。本次測(cè)試鉆孔深度72 m,全程耗時(shí)32 min,礦用手持式孔口顯示器成功記錄了測(cè)量信息;3)數(shù)據(jù)傳輸測(cè)試,取出YBG1-T便攜式軌跡儀探管后再次進(jìn)行藍(lán)牙連接,成功取出所有的測(cè)試數(shù)據(jù),如圖5b所示;4)圖形顯示測(cè)試,數(shù)據(jù)傳輸結(jié)束后,點(diǎn)擊圖形曲線后程序自動(dòng)計(jì)算全部測(cè)量數(shù)據(jù)的軌跡坐標(biāo),并生成二維軌跡圖,如圖5c所示。全部功能測(cè)試完成后,又選取了2號(hào)鉆孔、3號(hào)鉆孔進(jìn)行了測(cè)試,測(cè)試效果良好。
基于STM32微控制器和3.2 in(1 in=2.54 cm)高分辨率觸摸顯示屏作為硬件平臺(tái),設(shè)計(jì)了礦用手持式孔口顯示器。該儀器搭載了emWin操作系統(tǒng),并采用emWin圖形庫(kù)設(shè)計(jì)了數(shù)據(jù)采集控制程序。通過大量的室內(nèi)外試驗(yàn)驗(yàn)證,設(shè)計(jì)的礦用手持式孔口顯示器具有系統(tǒng)工作穩(wěn)定、性能可靠、攜帶方便等優(yōu)點(diǎn),能滿足煤礦井下鉆孔施工的要求。
[1]肖林京,于鵬杰,于志豪,等.基于STM32和emWin圖形庫(kù)的液晶顯示系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2015,39(1):39-42.
[2]雷曉榮.回轉(zhuǎn)鉆進(jìn)隨鉆測(cè)斜儀的研制及應(yīng)用[J].煤田地質(zhì)與勘探,2015,43(3):118-121.[3]雷曉榮,程建遠(yuǎn).YZG05/30礦用鉆孔軌跡記錄儀及其應(yīng)用[J].煤田地質(zhì)與勘探,2015,43(4):120-122.
[4]STMicroelectronics.STM32F103XX Datasheet[EB/OL]. [2016-04-05].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164491,2016.2.
[5]深圳藍(lán)色飛舞科技有限公司.BF10藍(lán)牙模塊數(shù)據(jù)表[EB/OL]. [2016-04-05].http://www.lanwind.com/download.php,2016.2.
[6]AnalogDevices.ADM2687E Datasheet[EB/OL]. [2016-04-05].http://www.analog.com/en/products/interface-isolation/isolation/isolated-rs-485/adm2687e.html#product-overview,2016.2.
[7]鄭力,蔡啟仲,陸偉男,等.基于emWin圖形庫(kù)的四旋翼飛行器監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2015,23(6):1986-1988.
[8]張峰,張團(tuán)善,呂雙慶,等.emWin在LPC1788上的移植與應(yīng)用[J].電子設(shè)計(jì)工程,2015,23(6):156-159.
Design of mine hand-held orifice display based on STM32
LEI Xiaorong
(Xi′anResearchInstituteofChinaCoalTechnology&EngineeringGroupCrop,Xi′an710077,China)
In order to improve the convenience of the use of mine orifice display, a mine hand-held orifice display is designed by using STM32 micro controller and emWin graphics library. The hardware design of orifice display is firstly elaborated. In the software part, the whole software structure and the design of acquisition control program and transplant of emWin graphics library in STM32 platform are described in detail. The results show that mine orifice display is steady, reliable, user-friendly and practicable.
orifice display;STM32 micro controller;emWin graphics library
TN873
ADOI: 10.16280/j.videoe.2016.10.009
陜西省科技統(tǒng)籌創(chuàng)新工程計(jì)劃項(xiàng)目(2012KTCL03-23)
2016-04-05
文獻(xiàn)引用格式:雷曉榮. 基于STM32的礦用手持式孔口顯示器設(shè)計(jì)[J].電視技術(shù),2016,40(10):41-44.
LEI X R. Design of mine hand-held orifice display based on STM32 [J]. Video engineering,2016,40(10):41-44.
雷曉榮(1981— ),工程師,碩士,主要研究方向?yàn)槲锾絻x器。
責(zé)任編輯:閆雯雯