基于STM32单片机的emWin系统设计

2017-05-26 13:05钟涛祝玲
中国新通信 2017年7期
关键词:串口嵌入式鼠标

钟涛+祝玲

【摘要】 嵌入式设备虽然遍布我们生活中,但嵌入式设备的人机交互问题还没有完美的解决方案;在新环境下不论是传统的LCD显示器或者是OLED显示屏都已无法满足多元的信息交互,在此背景下支持多元素的信息交互系统emWin已经诞生并迅速发展成熟。此项目内容为利用STM32为硬件平台,配合emWin系统实现图形应用程序下的GSM通信服务,例如文本信息和语音拨号服务等。同时介绍了emWin系统的设计方法和开发流程,及系统后期维护与更新的相关事宜。

【关键字】 STM32 emWin系统 GSM/GPRS A6通信

一、引言

在嵌入式设备中,提高人机交互是所有嵌入式设备设计者必须考虑的首要问题;与以往不同,随着科技的发展和各种电子成像技术的成熟,让我们告别了传统了黑白显示屏。在嵌入式设备中,传统的LCD1602、LCD12864以及OLED屏正逐步被拥有高像素的电容触摸屏取代;与此同时,图形应用程序的开发也迎来了一个新的挑战。如何让人机交互更加智能,如何让图像显示技术更加美观,如何在嵌入式系统上设计图形应用程序成为了嵌入式设计开发的新问题。此项目以STM32为嵌入式硬件平台,搭建emWin系统实现嵌入式图形应用程序设计提供了重要技术支持。

二、The embedded experts windows manager

The embedded experts windows manager[1]简称emWin,是全球嵌入式大咖公司Segger针对嵌入式平台图形界面处理的优秀作品之一;其通过丰富的图形软件库,即可让嵌入式界面应用开发变得简单而快捷。同时,emWin提供了绘制2D图形、显示位图文件、显示文字信息、处理用户输入等功能大大解决了人机交互的设计难题。与Micrium公司的uC/OS系统相比,由于Segger公司向ST公司出售了emWin版权,所以当我们在STM32芯片上使用emWin时就免去了昂贵的版权费用。

三、项目架构

3.1 项目总体架构:STM32+GSM+emWin

利用STM32为硬件支持平台并自定义开发出可以在此平台上流畅运行的emWin系统,同时配置GSM通信功能,实现STM32单片机、GSM通信服务和emWin系统结合,达到利用emWin系统处理人机交互,呈现图形应用等功能,例如开发图形应用程序完成文本短信发送、拨打语音电话等。

在技术上,采用两个模块实现此项目:

其一:emWin系统采用独立的STM32单片机控制,即在一块STM32单片机上设计并运行emWin系统,同时预留出其串口协议通信引脚,即RX、TX和GND引脚。

其二:用第二塊STM32单片机实现GSM通信功能,然后利用emWin主机预留的串口协议端口进行双机通信即可使用串口协议发送图形应用程序控制指令到enWin机,从而实现enWin的控制。在人机交互上,用户通过图形用用程序输入短信文本信息或者语音拨号号码,emWin获取后即可配合GSM机实现短信或拨号服务。

3.2元器选型

在Cortex-M3和Contex-M4家族系列中,由于内存大小、外设支持度、内核差异等因素把STM32单片机分为许多型号,此项目选用型号为STM32F103ZET6的Cortex-M3单片机作为emWin系统的硬件平台。其72MHz的主频、64KB的SRAM、512KB的FLASH已经足够运行emWin系统,同时由于Cortex-M3系列单片机支持FSMC接口,所以在让硬件电路更容易实现。

市场上支持文本短信内容发送、拨打语言电话的处理芯片很多,例如SIM800A、SIM900A等经典应用芯片。但,为了项目后期的拓展方便,此项目选择GSM/GPRS A6作为通信芯片,其支持850、900、1800和1900MHz四个频段,同时支持一个下载串口,一个AT命令口,非常易于和STM32单片机通信。

四、在STM32上进行emWin系统设计

由于Segger公司向ST公司出售了版权,所以当我们在STM32上使用emWin时可以到Segger官网注册账户并下载emWin基础软件库即可。在emWin基础软件库中包含Config、Documentation、inc、Lib、OS、Software等目录;其中Config文件用于配置emWin的存储空间等信息,inc文件包含了emWin基础库核心头文件,Lib文件包含了针对于Cortex-M3和M4不同内核、不同开发环境的库文件。

4.1 创建自定义库

在emWin提供的基础源码库上创建自定义库是较为容易的。首先复制基础库中Sample\Makelib到根目录下,并根据需要进行必要修改;其中Makelib.bat为启动文件,Prep. bat为要使用的工具链准备环境,cc.bat由Makelib.bat调用。

4.2 emWin输入输出交互

经过对emWin基础库的改写和二次封装我们可以让emWin轻松帮助我们完成一些输出交互任务,例如输出字符可以调用:GUI_DispString("Hello world!");除此之外emWin还可以很轻松帮助我们显示图形,应值得注意的是目前emWin仅支持显示BMP、JPEG、GIF和PNG格式的图片文件,其原因是因为emWin内核暂不支持其他格式的图象文件;但对于嵌入式设备来说,emWin支持这四种格式已经非常强大了,因为嵌入式设备的专用性决定了其使用场景。

除此之外,emWin还支持包含触摸屏、鼠标、游戏操作杆等指针输入设备,可以说只要有设备适当的驱动,想要实现多元丰富emWin的输入交互是完全有可能的。例如当我们想要判断用户的鼠标输入是否启动,我们可以调用GUI_ PID_GetState()函数来实现,每当鼠标执行按下或者松开动作时GUI_PID_GetState()都会记录下其状态,其中用1表示鼠标被按下,否则用0表示鼠标松开。

4.3 让emWin支持多种语言

在传统的人机交互设备中,基本上不支持除英语外的其他语言;随着emWin成长,多国外语支持已经不再是嵌入式设备多元交互的难题。EmWin支持根据Unicode标准定义的字符或者字符串,但前提是要预先使用GUI_UC_ ConvertUTF82UC( )将UTF-8文本转换成C编码。

另外,emWin作为嵌入式图形应用开发系统来说较为神奇的是其支持阿拉伯语和泰语;由于阿拉伯语是从右往左书写,并且不区分大小写,所以传统的Unicode处理方式对阿拉伯语并不适用,此时emWin使用记号形式来表示字符。对泰语而言,由于其采用了符合字符,要想完成对泰语的编码和解码,这时候就需要创建一个扩展类型的字体文件。

4.4 模拟验证

当我们用PC设计好自己的图形界面应用后,可以使用Microsoft Visual C++来模拟、验证图形应用的功能是否完善。具体方法操作如下:

第1步:双击SimulationTrial.dsw,打开Visual C++工作空间

第2步:从菜单栏选择Build/Rebuild All,重建项目

第3步:从菜单栏选择Build/Start Debug/Go,启动模拟

应特别注意:使用PC软件模拟时由于其硬件平台与嵌入式平台差异,所以在响应时间、图像呈现、分辨率上存在一定差异。所以谨慎使用模拟功能。

猜你喜欢
串口嵌入式鼠标
MCS—51单片机中的多串口通讯技术的应用
全国计算机等级考试机房准备工作探讨
鼠标折叠笔
嵌入式LINUX操作系统的研究
微机串口的测试诊断
嵌入式组件技术的研究及应用
45岁的鼠标
超能力鼠标
基于VC串口通信的实现
鼠标也可以是这样的