异步串行通信协议的设计与实现

2018-11-08 02:32贾昊张烨崔忠政徐曌杨扬徐佳
电子制作 2018年20期
关键词:通信协议解码串口

贾昊,张烨,崔忠政,徐曌,杨扬,徐佳

(1.大连科技学院电气工程学院,辽宁大连,116052;2.中国华录松下电子信息有限公司开发中心,辽宁大连,116000)

0 引言

在单片机控制系统中,CPU和外部通信主要有两种通信方式:并行通信和串行通信。并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。串行通信能够节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出。现在流行的高级语言一般都支持对串口的直接操作,常用的单片机也把串行通讯口作为一个标准接口集成在单片机内,串行通讯接口的开发具有开发周期短,开发简单等特点。目前异步串行通信已广泛用于微机之间的通信、工业控制系统中的数据采集与控制、远程数据的传送等方面。

1 串口通信的基本原理

串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送数据线,(3)接收数据线。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:波特率是一个衡量通信速度的参数,它表示每秒钟传送的bit的个数;数据位是衡量通信中实际数据位的参数,当计算机发送一个信息包,标准的值是5、7和8位。如何设置取决于你的需求;停止位用于表示单个包的最后一位,典型的值为1,1.5和2位,停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会;奇偶校验位是串口通信中一种简单的检错方式,有四种检错方式—偶、奇、高和低,也可以没有校验位。

2 异步串行通信协议的设计

通信协议是通信双方共同遵守的约定,这种约定还包括对同步方式、传送速度、传送步骤及检纠错方式定义等问题做出统一规定。

在控制系统中,单片机间通信一般采用异步串行通信,传统的异步串行通信协议一般采用如图1所示的命令格式,命令消息包括帧头(命令码)、数据帧、校验帧;响应消息为ACK信号(ACK取不同的值,例如:正确响应 ACK =0x55;错误响应 ACK = 0xAA)。由于在串口通信中还存在很多不可靠的因素,例如由于电磁干扰造成的帧字节丢失、传输误码,以及因主从单片机处理繁忙而造成的响应延迟等。传统的通信协议难以克服由于单片机处理繁忙而造成的响应延迟现象。如图2所示,当主芯片发送[命令1]后,当超过响应等待时间而没有得到ACK时,主芯片发[命令2],而此时在下一个响应等待时间内收到两次[ACK],这时将导致主芯片做出错误判断,调用并非本意的程序执行,严重影响系统的正常运行。因此,本文在通信协议的设计中,采用响应消息加权的方法,提高了通信的可靠性,保证系统正常运行。

图1 通信命令格式

图2 通信时序

本响应消息加权式通信协议,实现方式如下:通信协议采用如图3所示的格式,命令消息和响应消息采用相同的帧格式,包括帧头(命令码)、数据帧、校验帧;其中响应消息帧头 = 命令消息帧头的加权(RPS = CMD | 0x80 或RPS= CMD | 0xC0),主控芯片通过对响应消息的处理,识别出响应的类型。通信协议各数据位的定义如表1所示,本协议由nByte(n是由用户自己定义的任意值正整数)构成,D1[7:6]为通信类型,D1[5:0]为指令码,D2~Dn-1为数据位,Dn为校验位。

表1 通信命令

程序处理过程如图4所示,当有响应发生时,响应处理程序对响应消息帧头进行0xC0加权处理,还原并判断响应类型;同时经过对帧头进行0x3F加权处理,还原出当前响应相对应的命令消息,然后调用相应的应用程序执行。例如,当主芯片发送命令消息,命令消息帧头D1=0x02,从芯片正常接收并进行加权响应,响应消息帧头D1=0x82,主芯片再经过加权处理判断响应类型并还原出与之相对应的命令消息帧头0x02。然后调用相应的程序执行,完成一次通信周期。

图3 加权响应命令格式

图4 响应处理流程图

3 程序设计

通信程序在设计时充分考虑了主从单片机在通信过程中的不确定因素,因此通信协议采用加权响应式通信协议,克服主从单片机处理繁忙而造成的响应延迟;对于通信过程中的干扰而导致通信数据丢失、传输误码等现象,可以在程序设计时采用超时定时、计数重发等方法,保证通信的准确性。

软件程序设计中,主控芯片采用芯片内部的串口2,通信波特率为9600 bit /s,8 位数据,1位停止位。其中软件编写要严格按照异步通信的时序进行,其响应处理程序流程如图5所示。

图5 整体软件流程图

4 系统的实现及应用

本协议的设计是初衷是为一款内嵌DTMB接收功能的便携式DVD产品的操作控制芯片与DTV解码芯片间的通信服务。由于该产品为商业性产品,因此质量是产品的生命。为保证产品质量,提高通信的可靠性,本设计在异步串行通信上采用笔者设计的响应加权式通信协议。系统通信控制实现如下:

硬件系统操作控制部由主控芯片和DTV解码芯片构成,原理框图如图6所示。通过主控芯片内部串口2的收发引脚与DTV解码芯片的收发引脚相连接。主控芯片在整个通信过程起主导作用,用于通信控制的发起与对DTV解码芯片的响应判断。DTV解码芯片接收主控芯片发送的命令,解析后进行相关的动作。

图6 原来的电路原理图

5 结论

本协议的设计初衷是为了克服主从单片机处理繁忙而造成的响应延迟现象,同时又具有可扩展性,其中数据位的字节长度可以由用户自行定义。

将本协议应用到DVD产品的通信控制时,经测过试,在波特率9600bit/s下可以成功通信;并且本协议能保证主控端正确识别响应类型以及还原出当前响应相对应的命令消息,保证主控芯片的做出正确的处理,从而保证整个系统的正确运行。

猜你喜欢
通信协议解码串口
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
文化解码
解码eUCP2.0
文化 解码
文明 解码
车载网络通信协议标准化问题研究
MCS—51单片机中的多串口通讯技术的应用
电动汽车充电接口及通信协议新国标发布
基于R8C的汽车OBD通用故障诊断仪设计