APP下载

基于单片机的串行通信研究

2012-04-16河南中光学集团研发中心吕瑞云

电子世界 2012年13期
关键词:全双工波特率通信协议

河南中光学集团研发中心 吕瑞云

1.串行通信简介

所谓串行通信,就是将数据和控制信息分成一个个的二进制位(bit),然后通过一个通信信道逐位按顺序传输,实现计算机与外部设备之间的数据交换。串行通信和并口相比,速度慢,但传送数据距离远,因此,常应用于需要长距离通信而对速度要求不太高的场合。串行通信因其占用硬件资源少、可有效降低成本、简化通信设备,在电力通信、自动化控制等领域得到了广泛应用。

串行通信的通信方式有以下三种:单工、半双工和全双工。由于单工只能单向传送数据,不能反方向传送数据,所以应用比较广泛的通信方式是半双工及全双工。

目前,比较常用的全双工通信模式有RS232、RS422等,比较常用的半双工通信模式有RS485。

RS232由于推出时间早,传送距离短、传输速度慢,而RS422采用非平衡发送器和差分接收器,所以允许比RS232使用更高的波特率,而且传输距离更远。RS232的通信距离在15m左右,而RS422的通信距离可达1200m(波特率为90000bps时)。

RS485是RS422的变型。RS485是半双工工作方式,不能同时发送或者接收。

2.串行通信原理

串行通讯不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的远程控制。由于串行通信接线简单,所以在远距离传输中得到了广泛的运用。

2.1 波特率选择

计算通信速度的单位称为波特率(Baud Rate),波特率是指单位时间内传送的信息量,其单位为bps(bit/s)。51单片机串行端口一般有四种工作方式:方式0、方式1、方式2和方式3,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率来控制。

表2

图2 串行通信程序框图

在选择波特率时,首先要考虑系统的通信速率,然后考虑时钟频率及误差。为了通信的稳定,应该选择频率误差较小的时钟。

2.2 通信协议的使用

在串行通信技术中,若要进行正常的通信,需共同遵守一个通信规则的约定,即通信协议,这个协议通常搭建在RS232、RS422等硬件线路基础上。

通讯协议一般包含以下功能:信号的传送与接收、差错控制、顺序控制等。

单片机、计算机之间有了协议约定,通信双方才能明白彼此的意图,以便进行下一步动作。在系统工作过程中,当单片机接收到计算机机数据信息后,便根据约定的协议,完成相应的操作。

3.串行通信协议的设计

3.1 协议帧格式

本协议的通讯格式见表1。

一帧协议的格式及示例见表2。

3.2 协议帧解释

示例协议每帧共9个字节,协议以十六进制表示。

STX:帧首,一帧协议的开始标志,串口接收数据时,总是先寻找帧首。帧首的排他性将有利于提高各通信节点的接收效率;

ADDR:地址,多机通信时使用,可同时控制多台设备,地址范围为00-FF,对应十进制为0-255。

SIZE:帧长,从帧首到帧尾一帧数据的字节数;

COMMAND:指令码,根据实际通信应用需求,应用I~2字节的通信指令码;本例子的协议为温度查询协议,指令码为“T”“A”,十六进制为54、41。

DATA:数据码,跟在指令码之后的信息场,是要传送的数据,并不是每一帧都有数据码;

CHK:校验,可根据应用需求选择不同的校验方式,示例的校验为前七个字节的异或值。

ETX:帧尾,一帧协议的结束标志。

4.串行通信硬件电路设计

51单片机有一个全双工的串行通讯口,因此计算机和单片机之间可以方便地进行串口通讯。

当使用设备距离计算机超过15m时,需使用RS422或RS485的通信模式。

串口收发器采用TI公司的低功耗全双工RS-422收发器芯片SN65HVD53,该收发器可在多种工作速率下实现交流性能,在RS-422总线上可支持256个器件。并具有15KV以上的ESD保护功能,能够为RS-485及RS-422应用提供强大可靠的接口。

计算机的串口通过RS232/RS422转换器后,连接到SN65HVD53的TX、RX、DE、RE上,即可进行通信。串行通信硬件电路见图1。

5.串行通信软件设计

5.1 串行通信程序框图

串行通信程序框图见图2。

5.2 串行通信程序示例

6.结束语

本文对单片机的串行通信原理作了介绍,并设计了一套完整的通信协议、硬件电路、软件程序示例等。本系统已广泛应用于边海防视频监控系统、机场防卫系统、车载转台系统等200余套产品中。实践表明,按照此协议进行的通信数据准确,自适应能力强,通信可靠,具有在相关领域推广的价值。

[1]单片机通信技术与工程实践[A].求是科技[C].北京:人民邮电出版社,2005,1.

猜你喜欢

全双工波特率通信协议
UART 波特率检测电路的FPGA 设计算法与实现
CAN 总线波特率自适应程序设计
RLS算法在同时同频全双工系统中的自干扰抑制性能分析
波特率自适应的CAN驱动在嵌入式Linux下的实现①
基于Z-Stack通信协议栈的红外地温采集电路设计
基于GRT平台的全双工WiFi设计与实现
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
同频同时全双工数字自干扰抵消算法
5G全双工技术浅析