基于STM32的人机交互终端的设计

2020-03-26 08:50翟延忠翟宝蓉
仪表技术与传感器 2020年2期
关键词:参数设置总线像素

翟延忠,翟宝蓉,马 强,李 燕

(1.华北科技学院电子信息工程学院,北京 101601;2.华北科技学院研究生院,北京 101601)

0 引言

近年来,随着微处理器性能的提升,嵌入式实时操作系统的引入和图形界面库的出现等,为人机交互终端的开发提供了极大的便利,使得开发人员可以设计出能够深度满足用户需求的交互终端[1-3],例如触摸屏、专门的通讯接口、个性化的画面显示等[4]。

针对交互终端的一般应用需求,本文设计了一款基于STM32F407ZGT6微控制器实现的交互终端,软件运行于FreeRTOS实时多任务操作系统,与控制端通过CAN总线通信,人机界面采用800×480的7″液晶触摸屏,应用EmWin实现图形界面设计,并给出了一种高效的动画设计方法。

1 硬件设计

交互终端以STM32F407ZGT6微控制器[5]为核心构成最小系统,包括电源模块、液晶触摸屏、CAN通信模块、EEPROM存储器、外部SRAM和SWD下载调试模块,整体结构如图1所示。

图1 交互终端硬件结构图

1.1 最小系统

基于高性能ARM Cortex-M4内核的STM32F407ZGT6微控制器, 3.3 V供电,外接8M晶振,内核工作频率168 MHz,片外低电平的复位阻容电路实现微控制器与液晶触摸屏复位,软件下载调试采用SWD模式。

1.2 电源模块

交互终端外部接入24VDC,其内部电路需要5 V和3.3 V的两种电源供电,其中5 V为液晶触摸屏的背光供电,而3.3 V为微控制器和其他模块供电的主电源。输入24VDC经TPS5403单片降压稳压器转换输出电压/电流为3.3 V/710 mA,经TPS5405单片降压稳压器转换输出电压/电流为5 V/500 mA。

1.3 触摸屏、SRAM与EEPROM

显示屏选用了7″彩色TFT-LCD电容触摸屏,分辨率为800×480,16位彩色显示,驱动芯片为SSD1963,触屏驱动芯片为FT5206。由于STM32F407ZGT6片内SRAM容量仅192 KB,难以支撑画面显示需求,为此外扩一片1M SRAM的IS62WV51216芯片。STM32F407ZGT6以FSMC方式与TFTLCD 模块及外部SRAM接口,使用FSMC_NE3片选TFTLCD 模块,使用FSMC_NE4片选SRAM芯片,微控制器以IIC接口驱动触屏芯片[6]。

交互终端应用中会有参数掉电记忆的需求,为此电路中加入EEPROM芯片,这里选用IIC 接口的AT24C02。

1.4 CAN通信

STM32F407ZGT6内置bxCAN(基本扩展CAN)控制器,波特率最高达1 Mbps,CAN总线驱动选用总线收发器SN65HVD230,该芯片具有差分收发能力和良好抗干扰能力,适用于较高通讯速率与高可靠性的CAN总线通信[7]。

2 软件设计

2.1 软件功能

2.1.1 CAN通信

交互终端界面上显示的信息来源于其服务的控制系统,而控制参数与行为又反作用于其服务的系统,信息的传输通过CAN通信实现,CAN信息的收发及处理需通过交互终端的软件功能实现。

2.1.2 动画显示

人机界面是一个控制系统的窗口,除常规的参数与状态显示外,参数与状态驱动的动画显示可显著提升界面表现力,而动画实现的本质是在短时间内(<20 ms)实现画面像素的改变与刷新,由于嵌入式系统的资源有限,动画显示功能需得到高效处理。

2.1.3 界面管理

交互终端要展现的就是界面,一方面展示控制系统的运行状态与参数,将参数与状态信息在选择的位置,以设定颜色、大小、字体等属性显示出来;另一方面,控制参数与命令的设置与显示,除完成相关信息的显示外,参数设置界面还涉及到按钮操作、对话框等窗口操作;此外还涉及触屏的驱动与检测。

2.2 操作系统

本设计采用FreeRTOS操作系统,将系统功能划分为若干个任务、合理设置任务优先级、选择适当的同步与通信机制使得软件结构清晰、模块化、容易维护[8]。

2.3 GUI图形库

EmWin专为LCD图形界面提供了模块化设计并且适用于多任务操作环境,除可实现基本图形绘制、颜色填充、图片文字的显示外,它的强大功能表现在丰富的可直接调用的接口函数、窗口管理功能等,借助GUI开发工具EmWin进行人机界面的开发可有效地提升开发效率[9]。

2.4 任务架构

综合上述因素,构建软件总体框架如图2所示。

图2 软件总体框架

触屏检测任务用于各界面的触屏检测管理,当点击界面上的按钮(或图标)时,产生相应的标志,通知界面管理任务;CAN接收及接收中断服务用于CAN总线信息接收;界面的切换与交互操作由界面管理任务实现;实时显示任务用于实时数据及状态的更新显示;动画任务用于监控界面的同步动画显示。

3 CAN通信

本交互终端通过CAN总线与控制装置进行通信,一方面接收控制装置发来的信息,将信息以某种形式记录或显示在界面上。另一方面,交互终端接受人工操作并将操作信息发往控制终端。在RTOS运行环境下,交互终端会有多个任务,任务间的通信可通过信号量、事件标志组、消息队列等方式实现。CAN通信按照如下思路实现。

3.1 通信任务的规划

在RTOS的多任务运行环境下,CAN总线通信需根据信息接收与发送的特点与过程来处理,为便于处理,设立多个任务处理CAN通信。

中断服务程序:总线通讯时,信息的接收是被动的,时间上是随机的,为不致接收信息的溢出或丢失, CAN信息的接收采用中断方式,在中断服务程序中快速完成信息的接收与转发,以减少对CPU时间的占用。

CAN接收任务:对接收信息需进行解析以进行相应的处理。

CAN信息的发送:相对于信息接收,信息的发送是主动的,当某个任务需要向CAN总线发送信息时,将信息按设定格式装配好,调用库函数u8 CANx_Send_Msg (u8 *msg,u8 len)即可。

3.2 CAN控制器的初始化

CAN通信初始化除引脚设置、时钟使能、波特率设置、中断设置外,还需注意:

3.2.1 过滤器设置

当CAN总线上节点较多时,传输的信息也会增多,为不使交互终端受到无关信息的干扰,CAN提供了28个过滤器,每个过滤器有标识符列表与标识符屏蔽位两种模式。标识符列表要求列出所有可接收的ID,只有与这些ID完全相同的数据帧或远程帧才能通过过滤被接收。而屏蔽位模式可将ID的某些位按位屏蔽,从而可过滤出一组ID来。在CAN初始化时,需根据通信的内容设置过滤模式。

3.2.2 接收队列的选择

STM32F407ZGT6的CAN控制器具有2个三级缓冲的FIFO,具有强大的缓冲接收能力,降低了处理器接收CAN信息时的负担。每个过滤器在设置时,可选择关联的FIFO,从而使所接收的信息得以按照ID分流。

3.3 接收中断服务

初始化后,每当CAN总线上有信息帧能够通过ID过滤进入FIFO,就会触发中断(FIFO内消息非空时中断)。中断服务中,首先识别哪个FIFO产生中断,将信息帧读出,然后立即将信息存入接收消息队列。

3.4 CAN接收处理

CAN接收任务用于消息的解析与处理,程序流程图如图3所示。

首先检查消息队列是否为空,消息队列内的消息来自于接收中断服务。若不为空,将接收消息中的数据读取到数据缓冲区,提取其中蕴含的消息类型信息MSG_Type。然后根据消息类型,对接收到的信息按约定做出相应的解析,并通过适当的方式通知其他任务进行处理。

图3 CAN接收任务流程图

4 动画处理

人机交互终端的作用就是要提供友好的人机界面,而其中的监控界面是控制系统人机界面开发的重点,与系统运行状态相联系的动画功能是焦点。动画是指受控图形按照一定规律在画面上运动,以形象表现系统某些受控属性,动画显示对提高人机交互界面乃至整个系统的品质有作用。

4.1 动画原理

最基本的动画表现形式为图形的移动与旋转,而实际的动画效果多是由各种图元的运动组合,其基本原理是使图形每隔一定时间移动或旋转一定的像素,将各种图形移动组合在一起就可以获得表现系统运动特质的动画效果,所移动的像素可由所关联的变量加以确定。

当要在显示屏上呈现图形的移动或旋转效果时,需要做以下工作:描绘新增区域的像素;恢复原被掩盖区域的像素。这些工作本质上都是像素描绘。

4.2 描绘问题

由于显示屏的像素描绘是逐点进行的,每个像素点的描绘需要指定像素坐标,发出写GRAM命令,然后再输出颜色信息这一操作过程。作为外设的显示屏,其访问速度相对处理器内部指令执行速度要慢得多,使得每个像素点的描绘需要耗用处理器很多的指令执行时间。当要实现一个图形的移动效果时,如果整个图形全部擦除后再在新的位置重新描绘图形的所有像素,要消耗处理器很长时间,不仅画面的观感会有闪烁,而且也会挤压其他应用代码的运行时间,尤其在处理器负荷较重时。

4.3 有效描绘

由于在每帧画面的图形移动过程中只是部分区域的像素发生了改变,即移进区域需新绘和移出区域需恢复原覆盖的显示。如果仅对变化的像素点进行描绘,而不是将整个图形擦除后在新的位置上进行重绘,减少了对CPU时间的消耗,从而改善画面动画效果。

以一个填充矩形的水平移动为例,设矩形的像素数为x(U)*y(V),如果按简单的擦掉重绘的方式,需要描绘2xy个像素。实际图形在平面移动中,如果移动Δx个像素,需重绘的像素为2yΔx个,而中间的(x-Δx)y像素没有变化,不需要重绘。如图4所示:由于Δx很小,需重绘的像素量大幅降低,从而大幅节省了处理器的时间。

图4 图形移动像素变更示意图

一个人机界面由若干个图形元素合成,当一个移动图形掠过不同的图形元素时,移出的区域就要恢复成原来被掩盖的图形元素像素,需要判断像素恢复点属于哪个可显示的图形,这将增加像素描绘的复杂性,使描绘时间加长。因此,应尽可能使移动图形在一个单色背景中移动,以简化软件的设计。

5 界面管理

人机交互终端除了实现控制系统的监控画面外,还需要若干的参数(或状态)的显示/设置界面,用以实现参数设置、数据统计、状态指示与设置等功能。内容涉及按钮的操作、参数与图形的显示、对话框操作等[10],开发这类的界面是耗时与繁琐的,利用EmWin的图形界面库可使这类开发的工作量显著降低。具体地,利用EmWin附带的GUIBuilder工具创建界面。GUIBuilder是一款无需编程即可创建对话框的工具,它提供了丰富的控件,只需简单的拖拽、摆放与属性设置即可完成界面的设计,结果生成.c文件嵌入应用程序中即可,设计的初始参数设置界面如图5所示。

图5 参数设置界面

在多界面工作的情况下,必然存在界面之间的切换问题,界面切换时需要载入界面的图形与参数,并接受这一界面的操作管理。以下以载入某一参数设置界面的过程为例加以说明,界面任务流程图如图6所示,其中需显示的参数位于控制端,还需通过CAN通信获取参数。

图6 界面管理任务流程图

在界面管理任务中,需要等待界面更新标志,只有出现界面更新标志,界面切换工作才开始执行。在进入界面时,需要获取该界面的参数。如果界面参数位于控制端,界面管理任务需通过消息队列向CAN发送任务发送请求参数的消息,再由CAN发送任务将其发送到控制端。CAN接收任务接收控制端的响应消息并将解析后的参数存入缓冲区。与控制端的通信有时间约束,若在规定时间内收到参数则在界面上显示,若超时则指示通讯失败。

参数设置界面中要显示若干个标号与触屏按钮,每个按钮为一个控件,界面的交互操作涉及按钮检测、参数值修改、界面刷新、消息传递等内容。这些功能均利用EmWin的图形库实现,所生成的代码文件以回调函数的形式被调用运行。

当查询到退出参数设置界面标志置位时,判断参数是否更改。若更改则将修改后的参数放入消息队列由CAN发送任务推送到控制端,将界面标号设置为监控主界面且置位界面更新标志位,从而退出参数设置界面。

6 应用

基于STM32开发的嵌入式人机交互终端在快开压滤机控制系统中得以应用,如图7所示。

图7 嵌入式人机交互终端监控画面示例

系统中,交互终端安装于控制柜上,与位于现场的压滤机控制器间通过CAN总线通信,控制器的某些运行参数与状态通过CAN通信传输至交互终端并在交互终端上以多种方式呈现,交互终端上的某些设置参数与命令也通过CAN通信传输至控制器以控制系统的运行。为了生动体现控制系统的运行状况,交互终端的监控界面以动画形式显示控制系统的压紧、进料、卸料等进程,形象地表现了控制系统的实时进程。此外,交互终端上还设有若干个参数设置与统计、状态设置与显示界面,各个界面间可方便地通过触屏按钮进行切换。

7 结束语

基于STM32所设计的嵌入式交互终端,硬件设计简单合理。FreeRTOS实时操作系统环境下的软件开发将交互终端的功能分成了若干个相对独立又相互配合的任务,EmWin图形库的使用使界面设计变得方便快捷,软件开发效率显著提高,而有效的实时动画实现方法与嵌入式处理器的运行相匹配,动画功能的实现更是提高了交互终端的品质。

动画功能的进一步开发,需借助于辅助软件的开发,以实现更为生动与灵活的动画功能。

猜你喜欢
参数设置总线像素
像素前线之“幻影”2000
“像素”仙人掌
一种基于CAN总线的误码测试方法
ÉVOLUTIONDIGAE Style de vie tactile
逃生疏散模拟软件应用
蚁群算法求解TSP中的参数设置
高像素不是全部
RTK技术在放线测量中的应用
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计