雷曉榮
(中煤科工集團西安研究院有限公司,陜西 西安 710077)
?
基于STM32的礦用手持式孔口顯示器設計
雷曉榮
(中煤科工集團西安研究院有限公司,陜西 西安 710077)
為了提高礦用孔口顯示器使用的便捷性,采用STM32微控制器和emWin圖形庫設計了礦用手持式孔口顯示器。首先介紹了孔口顯示器的整體硬件設計;軟件部分介紹了軟件整體架構,并詳細介紹了采集控制程序的設計和emWin圖形庫在STM32平臺的移植。試驗結果表明,孔口顯示器系統工作穩定,性能可靠,界面設計友好,實用性強。
孔口顯示器;STM32微控制器;emWin圖形庫
STM32微控制器是意法半導體(ST)公司生產的32位ARM處理器。該處理器具有內部資源豐富、擴展能力強、功率消耗低、價格便宜等優點,已逐漸成為 32位微控制器中的理想器件[1]。
孔口顯示器是探管和用戶之間的人機接口,用戶通過它向探管發送同步、配置和數據提取等命令;同時,探管接收命令后,向孔口顯示器發回相應的信息;孔口顯示器將接收到的數據信息經過計算和處理將結果以數字和圖形(剖面圖和水平面圖)的方式顯示出來[2-3]。傳統的孔口顯示器根據實現的主控芯片不同,一般有三種:基于工控機平臺的孔口顯示器,具有體積大、重量大等缺陷;基于單片機的孔口顯示器,沒有圖形化顯示界面;基于嵌入式ARM一體機的孔口顯示器,連續工作時間短,加大電池容量后體積又大。針對這些問題,筆者基于STM32微控制器設計了一款體積小、功耗低、方便攜帶的礦用手持式孔口顯示器。
礦用手持式孔口顯示器的主要功能就是配合中煤科工集團西安研究院有限公司研制的煤礦井下各型軌跡儀使用,作為其顯示控制設備。礦用手持式孔口顯示器硬件主要由STM32F103系列微控制器、FLASH、SDRAM、LCD觸摸顯示控制模塊、USB轉藍牙模塊、接口模塊和其他模塊組成如圖1所示。

圖1 顯示器硬件框架圖
1.1微控制器
STM32F103 系列微控制器是新一代基于32位Cortex-M3內核的嵌入式 ARM處理器,最高處理速度可達72 MHz,片上集成存儲器,擁有USB2.0和USART等多個通信接口、11個定時器、中斷源和外設等。工作電壓為 2.0~3.6 V;具有休眠、停止、待機3種低功耗模式,從而在低功耗、短啟動時間和可用喚醒源之間達到一個最好的平衡點,適合孔口顯示器使用[4]。
1.2顯示控制電路
LCD觸摸顯示控制模塊采用了BL32007型3.2 in(1 in=2.54 cm)TFT液晶屏,分辨率為320×240,控制驅動芯片采用經典的ILI9341,其組成包括720通道的源極驅動器、320通道的柵極驅動器、圖形顯示的GRAM以及供電電路。ILI9341支持8/9/16/18位數據總線的MCU接口,6/16/18位數據總線的RGB接口,以及3/4線的SPI接口,使用1.65~3.3 V的I/O接口電壓和一個對應的電壓跟隨電路來產生驅動LCD的電壓,有精確的電壓控制支持全色顯示、8色顯示和睡眠模式。觸摸屏控制芯片選用XPT2046,內含12位分辨率125 kHz的轉換速率逐步逼近型A/D轉換器。 XPT2046支持從1.5 V到5.25 V的低電壓I/O接口。 XPT2046能通過執行2次A/D轉換查出被按的屏幕位置。顯示控制電路連接如圖2所示。

圖2 顯示控制電路連接圖
1.3通信電路
通信電路改進了上一代產品有線串口通信的方式,設計了有線串口通信和無線藍牙傳輸模塊共存的模式,可根據實際使用工況自由切換[5]。ADM2687E采用 Analog Devices的 iCoupler技術,在單一封裝中結合了3通道隔離器、三態差分線路驅動器、差分輸入接收器,內置 5 kV(rms)隔離式DC-DC集成電源,不需要采用外部DC-DC隔離塊,具有 ±15 kV ESD 保護功能,適合在多點傳輸線路中用于高速通信。采用 5 V 或 3.3 V 單電源供電,實現了全集成式信號和電源隔離式 RS-485 解決方案;BF10-A 藍牙模塊直接把串口數據通過藍牙傳輸的方式發送或接收回來,送到STM32F103 系列微控制器進行處理[6]。
圖形用戶界面是礦用手持式孔口顯示器設計的關鍵部分,軟件設計的主要內容包括emWin圖形庫在STM32平臺的移植和基于emWin圖形庫的數據采集控制程序設計。
2.1數據采集控制軟件設計
數據采集控制軟件作為軌跡儀的人機交互界面,直接關系到整個系統的用戶體驗。因此,軟件的設計采用模塊化設計方法,具體操作采用“數字導向式”設計,簡化了軟件的操作步驟。該軟件實現了井下數據通信、調試測量、定時同步、數據處理計算及存儲、軌跡圖顯示和USB導出等功能,軟件架構如圖3所示。

圖3 軟件架構圖
2.2emWin移植
emWin是SEGGER公司開發圖形庫,將它授權給ST公司使用稱之為STemWin,二者是一樣的。emWin來源有兩處,一個是MDK(Keil)軟件目錄下的,另外一個是ST公司的,文中采用ST公司的STemWinLibrary522,它的移植主要有以下幾個步驟[7-8]:
1)添加庫文件和配置文件。
打開工程文件,添加GUI配置文件GUIConf.h和GUICon.c、GUI驅動模板文件GUIDRV_Template.h和GUIDRV_Template.c、LCD配置文件LCDConf_FlexColor_Template.h和LCDConf_FlexColor_Template.c及LCDConf_Lin_Template.h和LCDConf_Lin_Template.c;庫文件添加與STM32F103 系列微控制器對應的STemWin522_CM3_Keil.lib和STemWin522_CM3_OS_Keil.lib。
2)配置LCD文件
LCD文件配置主要針對ILI9341控制驅動芯片進行配置,配置它的顯示尺寸、顏色模式、顯示方向、寄存器地址等參數,主要配置如下:
/* 顯示尺寸 */
#define XSIZE_PHYS240
#define YSIZE_PHYS320
/* 觸摸屏四個角的AD采樣值 */
#define TOUCH_AD_TOP3802
#define TOUCH_AD_BOTTOM189
#define TOUCH_AD_LEFT213
#define TOUCH_AD_RIGHT3859
/* 設置寄存器 */
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};
/* 控制驅動器和顏色模式 */
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
/* 控制驅動器配置 */
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);
/* 配置控制驅動器和操作方式 */
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配置多層顯示、多任務支持、觸摸屏支持、可用包支持信息和缺省字體等,具體如下:
/* 設置2層顯示支持 */
#define GUI_NUM_LAYERS2
/* 匹配多任務支持 */
#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
/* 鼠標支持 */
#define GUI_SUPPORT_MOUSE(1)
/* 支持窗口 */
#define GUI_WINSUPPORT(1)
/* 存儲器設備支持 */
#define GUI_SUPPORT_MEMDEV(1)
/* 設備指針支持 */
#define GUI_SUPPORT_DEVICES(1)
GUIConf.c配置主要配置動態顯示緩沖區大小和缺省的字體等,具體如下:
/* emWin動態顯示緩沖區大小 */
#define GUI_NUMBYTES1024*38
/* 設置塊大小 */
#define GUI_BLOCKSIZE 0x80
void GUI_X_Config(void)
{
/* 32位分配存儲區域 */
static U32 aMemory[GUI_NUMBYTES / 4];
/* 分配存儲區域給emWin */
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
/* 設置塊大小 */
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
/* 設置缺省字體 */
GUI_SetDefaultFont(GUI_FONT_6X8);
}
移植完成后,將使用emWin圖形庫設計的數據采集控制程序添加到工程目錄中進行編譯并下載到MCU中,初始的功能界面如圖4所示。

圖4 數據采集控制軟件界面(截圖)
為了驗證礦用手持式孔口顯示器的性能,配合中煤科工集團西安研究院有限公司研制的YBG1-T便攜式軌跡儀探管一起進行了地面鉆孔試驗。測試效果如圖5所示。

圖5 地面鉆孔試驗效果
打開礦用手持式孔口顯示器,啟動后自動彈出數據采集軟件功能界面,和YBG1-T便攜式軌跡儀探管進行藍牙連接,連接成功后開始各項功能測試:1)調試測量,點擊發送命令后功能界面顯示當前的測量傾角和方位,各項工作正常;2)定時同步測試,定時同步設置完成并發送命令,把YBG1-T便攜式軌跡儀探管送入地面鉆孔開始測量,每隔3 m測量一次,直到測試結束。本次測試鉆孔深度72 m,全程耗時32 min,礦用手持式孔口顯示器成功記錄了測量信息;3)數據傳輸測試,取出YBG1-T便攜式軌跡儀探管后再次進行藍牙連接,成功取出所有的測試數據,如圖5b所示;4)圖形顯示測試,數據傳輸結束后,點擊圖形曲線后程序自動計算全部測量數據的軌跡坐標,并生成二維軌跡圖,如圖5c所示。全部功能測試完成后,又選取了2號鉆孔、3號鉆孔進行了測試,測試效果良好。
基于STM32微控制器和3.2 in(1 in=2.54 cm)高分辨率觸摸顯示屏作為硬件平臺,設計了礦用手持式孔口顯示器。該儀器搭載了emWin操作系統,并采用emWin圖形庫設計了數據采集控制程序。通過大量的室內外試驗驗證,設計的礦用手持式孔口顯示器具有系統工作穩定、性能可靠、攜帶方便等優點,能滿足煤礦井下鉆孔施工的要求。
[1]肖林京,于鵬杰,于志豪,等.基于STM32和emWin圖形庫的液晶顯示系統設計[J].電視技術,2015,39(1):39-42.
[2]雷曉榮.回轉鉆進隨鉆測斜儀的研制及應用[J].煤田地質與勘探,2015,43(3):118-121.[3]雷曉榮,程建遠.YZG05/30礦用鉆孔軌跡記錄儀及其應用[J].煤田地質與勘探,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]深圳藍色飛舞科技有限公司.BF10藍牙模塊數據表[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圖形庫的四旋翼飛行器監控系統設計[J].計算機測量與控制,2015,23(6):1986-1988.
[8]張峰,張團善,呂雙慶,等.emWin在LPC1788上的移植與應用[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
陜西省科技統籌創新工程計劃項目(2012KTCL03-23)
2016-04-05
文獻引用格式:雷曉榮. 基于STM32的礦用手持式孔口顯示器設計[J].電視技術,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— ),工程師,碩士,主要研究方向為物探儀器。
責任編輯:閆雯雯