1
计算机网络技术理论与实践
1.4.2.1 3.2.1 串行通信原理

3.2.1 串行通信原理

串行通信可以分为同步通信和异步通信两类。同步通信是通过识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。

1.异步通信

串口异步通信的概念非常简单,串口按位(bit)发送和接收字节。尽管这种方式比按字节(byte)的并行通信慢,但是它很简单并且能够实现远距离通信。比如IEEE488定义并行通信状态时,规定设备线总长不得超过20m,任意两个设备间的长度不得超过2m;而对于串口而言,长度可达1 200m。典型的串口异步通信用于ASCII码字符的传输,可使用3根线完成:地线、发送线和接收线。由于串口异步通信方式是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线可用于握手,但是不是必须的。

串口异步通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

(1)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送bit的个数。例如,300波特表示每秒钟发送300个bit。当我们提到时钟周期时,就是指波特率,例如,如果协议需要9 600波特率,那么时钟是9 600Hz,这意味着串口通信在数据线上的采样率为9 600Hz。通常路由器上的串行接口配置为9 600Hz和115 200Hz。波特率可以远远大于这些值,但是波特率和距离成反比,高波特率常常用于放置很近的仪器间的通信。

(2)数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据可以是5、7和8位。如何设置取决于用户想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字符,包括开始/停止位、数据位和奇偶校验位。

(3)停止位:用于表示单个包的最后一位。典型的位数为1、1.5和2位。由于数据是在传输线上定时的,并且每一个设备有自己的时钟,很可能在通信中两台设备间会出现小小的不同步,因此停止位不仅仅是表示传输的结束,而且提供设备校正时钟同步的机会。停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率也就越慢。

(4)奇偶校验位:用于串口通信中简单的检错,共分为四种检错方式:偶、奇、高和低。奇偶校验位是可选的。对于偶和奇校验方式,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个;对于奇校验,校验位为1,这样就有奇数个逻辑高位。高位和低位这两种方式不真正地检查数据,只是简单将校验位置为逻辑高或者逻辑低。这样使得接收设备能够知道校验位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据不同步。

有空闲位的数据包结构如图3-1所示。

img41

图3-1 串行通信数据包格式示意图

2.同步通信

同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。同步通信包含了单同步字符帧和双同步字符帧,其结构如图3-2所示。

img42

图3-2 同步通信帧格式

这两种帧均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始;数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1~2个,用于接收端对接收到的字符序列进行正确性的校验。这两种帧的区别是单同步字符帧中只有一个同步字符,而双同步字符帧中采用了两个同步字符来完成同步。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。