异步串行通信协议的设计与实现
引言
在单片机控制系统中,CPU和外部通信主要有两种方 式:并行通信和串行通信。并行通信,即数据的各位同时传 送;串行通信,即数据按位次序传送。串行通信能够节省传 输线,特别是数据位数很多和传输距离较远时,这一优点更 为突出。现在流行的高级语言一般都支持对串口直接操作, 常用的单片机也把串行通讯口作为一个标准接口集成在单片 机内,串行通讯接口的开发具有开发周期短、开发简单等特 点。目前异步串行通信已广泛用于微机之间的通信、工业控 制系统中的数据采集与控制、远程数据的传送等领域。
1 串口通信的基本原理
在嵌入式系统中,串口是一种重要的数据通信接口, 其本质功能是,在CPU和串行设备间进行编码转换。当CPU 通过串行端口发送数据时,字节数据转换为串行的位串;接 收数据时,串行的位串被转换为字节数据。应用程序使用串 口进行通信,必须在使用之前向操作系统提出资源申请要求 (打开串口),通信完成后必须释放资源(关闭串口)。
典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线;(2)发送数据线;(3)接收数据线。串口通
图1 通信命令格式
图2 通信时序
信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个互相通信的端口,这些参数必须一致:波特率衡量通 信速度,表示每秒钟传送的bit的个数;数据位衡量通信中 实际数据位宽,标准值是5、7和8位。如何设置取决于具体 需求;停止位用于表示单个包的最后一位,典型值为1,1.5 和2位,停止位不仅仅表示传输的结束,还能提供计算机校 正时钟同步的机会;奇偶校验位是串口通信中一种简单的检 错方式,有四种检错方式——偶、奇、高和低,也可以没有 校验位。
2 异步串行通信协议的设计
通信协议是通信双方共同遵守的约定,对同步方式、 传送速度、传送步骤及检纠错方式定义等问题做出统一规 定。
在 控 制 系 统 中 , 单 片 机 间 通 信 一 般 采 用 异 步 串 行 通 信,传统的异步串行通信协议一般采用如图1所示的命令格 式,命令消息括帧头(命令码)、 数 据 场 、 校 验 场 ;响应消息为ACK信号 ( A C K 取 不 同 的 值 , 例 如 : 正 确 响应 ACK = 0x55; 错 误 响 应 A C K =0 x A A ) 。 由 于 串 口 通信存在很多不可靠因素,例如由
表1 通信命令
电磁干扰造成帧字节丢失、 传输误码, 以及因主从单片机处理繁忙而造成响应延迟等。传统的通信协议难以克服由单片机处理
繁忙造成的响应延迟现象。如图2所示,当主芯片发送[命令1]后,当超过响应等待时间而没有得到ACK时,主芯片发送[命令2],在下一个响应等待时间内将收到两次[ACK],这种
图4 响应处理程序
图5 整体软件设计
现象将导致主芯片做出错误判断,调用错误的程序分支,严 重影响系统的正常运行。因此,本文在通信协议的设计中, 采用响应消息加权的方法,提高了通信的可靠性,保证系统 正常运行。
本 文 设 计 的 响 应 消 息 加 权 式 通 信 协 议 , 实 现 方 式 如 下:通信协议采用如图3所示的格式,命令消息和响应消息 采用相同的帧格式,包括帧头(命令码)、数据场、校验场; 其中响应消息帧头 = 命令消息帧头的加权(RPS = CMD | 0x80 或RPS = CMD | 0xC0),主控芯片通过对响应消息的处理, 识别出响应的类型。通信协议各数据场的定义如表1所示, 本协议由nByte(n是用户自定义的任意正整数)构成,D1[7:6]为通信类型,D1[5:0]为指令码,D2~Dn-1为数据场,Dn为校验场。
程序处理过程如图4所示,当接收到响应时,响应处理 程序对响应消息帧头进行0xC0位与运算,还原并判断响应 类型;同时对帧头进行0x3F位与运算,还原出当前响应对应 的命令消息,然后调用相应的应用程序执行。例如,主芯
图6 硬件原理框图
片发送命令消息,命令消息帧头D1=0x02,从芯片正常接收 并进行加权响应,响应消息帧头D1=0x82,主芯片再经过位 与运算判断响应类型并还原出与之相对应的命令消息帧头
0x02。然后调用相应的程序执行,完成一次通信周期。
3 程序设计
在设计通信程序时充分考虑了主从单片机在通信过程 中的不确定因素,因此通信协议采用加权响应式通信协议, 克服主从单片机处理繁忙而造成的响应延迟;对于通信过程 中因干扰而导致通信数据丢失、传输误码等现象,可以在程 序设计时采用超时定时、计数重发等方法,保证通信的准确 性。软件程序设计中,主控芯片采用芯片内部的串口2,通信波特率为9600 bit /s,8 位数据,1位停止位。软件编写严格按照异步通信的时序进行,其响应处理程序流程如图4。
4 系统的实现及应用
本协议的设计初衷是用于一款内嵌DTMB接收功能的便 携式DVD产品的操作控制芯片与DTV解码芯片间的通信服 务。该产品为商业性产品,质量是产品的生命。为保证产品 质量,提高通信的可靠性,在设计异步串行通信时采用本文 的响应加权式通信协议。系统通信控制实现如图5。
硬件系统由主控芯片和DTV解码芯片构成,原理框图如图6所示。主控芯片内部串口2的收发引脚与DTV解码芯片 的收发引脚相连接。主控芯片在整个通信过程中起主导作用,用于发起通信与判断DTV解码芯片的响应。DTV解码芯片接收主控芯片发送的命令,解析后进行相关的动作。
5 结束语
本协议的设计初衷是为了克服主从单片机处理繁忙而 造成的响应延迟现象,同时又具有可扩展性,其中数据场的 字节长度可以由用户自行定义。将本协议应用到DVD产品的通信控制时,经过测试,在波特率9600bit/s下可以成功通信;并且本协议能保证主控 端正确识别响应类型以及还原出当前响应相对应的命令消 息,保证主控芯片做出正确的处理,从而保证整个系统的正 确运行。
评论