基于触摸屏的串行通信系统设计
2021-09-12陈翰扬张金龙
陈翰扬,张金龙
(南京师范大学 电气与自动化工程学院,江苏 南京 210020)
随着互联网技术的发展更新,人与物的交互逐渐智能化,其中,触摸屏是重要媒介。实际应用中,触摸屏通常与 PLC 相互配合使用,但是 PLC 相对成本高,体积大, 更适宜在工业场合使用而不适宜家用。以触摸屏为基础,辅以数字信号处理技术设计一个汇集各种家电控制方式的总控系统,不失为一种化繁为简,统筹兼顾的可行方案。故本系统尝试将触摸屏与 DSP 相配合,充分利用触摸屏的显示功能和 DSP 的数据处理能力,达到轻便易操作的效果[1]。作为笔者学习研究触摸屏与 DSP 的一个阶段性成果, 通过 DSP 软件编程和触摸屏的画面设计,从而控制小电机的转速,以此模拟实际家用触摸屏控制小型高速新风系统的情景。
1 系统设计及基本原理
本系统采用的是迪文DGUS屏和数字信号处理器TMS320F28335。系统的完成首先需要构建好触摸屏工程、设计界面、设置触控元件,然后将触摸屏与 DSP 进行串口连接。触摸屏通过触屏操作发送数据信息给 DSP,DSP 接收到数据帧后经过程序处理得到用户侧需要的转速并转化为 PWM 的占空比输出,从而达到控制电机的目的。故本系统中最重要一环为两者之间的通信协议设计。整体结构框架,如图1所示。
图1 整体结构
2 DGUS屏界面设计
触摸屏作为当今使用范围最广,用户体验最好,技术生态最为成熟的人机交互方式之一,无疑也是未来人机交互的主要潮流。本系统采用的是迪文DGUS屏。
DGUS 是迪文图形应用软件(DWIN Graphic Utilized Software)的缩写。DGUS 屏是由北京迪文科技有限公司基于K600+内核驱动的智能屏自主研发的性能优异的智能屏,具有可靠、稳定、功能性强、易用性良好等多个优点,并且界面设计简单,文件配置方便。
DGUS开发体系是由DGUS屏和DGUS开发软件构成的。与传统的HMI不同,迪文DGUS是迪文自己独有的、固化在硬件中的专用界面设计软件,包括界面图形设计和触控元件的选择。
利用绘图软件对界面、图标、字体库、按钮样式等进行设计,并通过PC端开发软件对界面上的控件进行配置。DGUS 提供FLASH储存空间以存储参数配置文件、图片文件、声音文件、字库文件、图标库等;在DGUS中可快速配置数据和文字的显示及输入,同时也具有动画显示,图标显示,曲线显示等多种功能[2]。
本系统主要界面分为功能选择界面与参数调节界面,图2(a)为功能选择界面,点击不同图标可进入不同模式;图2(b)为参数调节界面,点击加减可以调节档位,滑条为快速调节方式。
(a)
3 串行通信及DSP接口特点
所谓数据的串行传输就是由建立在线路链接,接口等的物理层,和建立在物理层上的数据协议共同构成的一种传输方式。数据在传输中只有1个数据位会在设备之间进行的传输,而对其他任何一个由若干位二进制表示的字符,串行传输都是用一个传输信道,按位有序地对字符进行传输[3]。通信中的数据往往都会以数据包的形式进行传送,这样的数据包又被称为数据帧。一个可靠的数据帧通常由帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾组成。
F28335 内部有3路专用的串行通信模块SCIA、SCIB、SCIC,它们是双线异步串行端口,具有两个引脚:发送引脚SCITXD用于实现数据的发送;接收引脚SCIRXD用于实现数据的接收,如图 3 所示。SCI 模块则具有双缓冲接收和发送功能,发送缓冲寄存器为 SCITXBUF,接收缓冲寄存器为 SCIRXBUF[4]。应实际工程需要,仅使用一路 SCIC 进行通信,同时由于本系统没有必要进行长距离通信,为节省成本采用 RS-232 协议。
图3 SCI模块
4 触摸屏与 DSP 间的串口操作
本系统设计主要讨论的是触摸屏与 DSP 之间的通信问题,因而主要介绍其串口操作。DGUS屏次选择异步、全双工串口(UART),串口模式为8n1,即每个数据传送采用十个位,包括1个起始位,1个停止位,8个数据位。串口的波特率可通过 SD 卡中的文件配置。串口所有指令或数据都采用16进制格式;对于字型(2 字节)数据,总是优先采用高字节先传送方式,如 0x2019 现传送0x20。
下面将对数据帧格式和指令集进行具体说明解释:
迪文DGUS屏的串口数据帧由5个数据块构成,见表1。
表1 数据帧格式
其中,帧头为整个数据帧的识别标志和上位机的地址,占两字节,经寄存器内部配置定义。DSP 查询到帧头有效,则接受该帧,否则丢弃;DSP上传数据时,只有数据帧地址与触摸屏内部配置一致时,才会接受该帧。
4.1 字节接收(发送)
①等待接收(或发送)信号置位; ②将接收(发送)寄存器里的数据赋值给预先定义好的变量中。
4.2 数据帧处理
①检测帧头,无误则继续以下步骤,否则丢弃该帧数据。重新等待检测帧头。②读取数据长度n,并创建长度为n的数组以存储之后的n个字节的数据。③读取数据并存储。④取出存在数组第一个字节的指令字节,以确定该数组后续数据的形式。⑤将后续数据按照指令重新组合成为例如变量储存器地址之类的具有实际意义的数据。⑥将数据赋予对应变量备用。
完整软件流程,如图4所示。
图4 软件流程