当前位置:文档之家› 串行通信技术基础知识

串行通信技术基础知识

串行通信技术基础在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。

发送者依次逐位发送一串数据信号,按一定的约定规则为接收者所接收。

由于串行端口通常只是定义了物理层的接口规范,所以为确保每次传送的数据报文能准确到达目的地,使每一个接收者能够接收到所有发向它的数据,必须在通信连接上采取相应的措施。

由于借助串行通信端口所连接的设备在功能、型号上往往互不相同,其中大多数设备出了等待接收数据之外还会有其他的任务,例如,一个数据采集单元需要周期性地收集和存储数据;一个控制器需要负责控制计算机或向其他设备发送报文;一台设备可能会在接收方正在进行其他任务时向它发送信息。

因此,必须有能应对多种不同工作状态的一系列规则来保证通信的有效性。

这里所讲的保证串行通信的有效性的方法包括:使用轮询或者中断来检测、接收信息;设置通信帧的起始、停止位;建立连接握手;实行对接收数据的确认、数据缓存以及错误检查等。

一、串行通信基本概念1、连接握手通信帧的起始位可以引起接收方的注意,但发送方并不知道,也不能确定接收方是否已经做好了接收数据的准备。

利用连接握手可以使收发双方确认已经建立了连接关系,接收方已经做好准备,可以进入数据收发状态。

连接握手过程是指发送者在发送一个数据块之前使用一个特定的握手信号来引起接收者的注意,表明要发送数据,接收者则通过握手信号回应发送者,说明它已经做好了接收数据的准备。

连接握手可以通过软件,也可以通过硬件来实现。

在软件连接握手中,发送者通过发送一个字节表明它想要发送数据;接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据;当发送者看到这个信息时,便知道它可以发送数据了。

接收者还可以通过另一个编码来告诉发送者停止发送。

在普通的硬件握手中,接收者在准备好了接收数据的时候将相应的握手信号线变为高电平,然后开始全神贯注地监视它的串行输入端口的允许发送端。

这个允许发送端与接收者已准备好接收数据的信号端相连,发送者在发送数据之前一直在等待这个信号变化。

一旦得到信号说明接收者已处于准备好接收数据的状态,便开始发送数据。

接收者可以在任意时候将握手信号变为低电平,即便是在接收一个数据块的过程中间也可以把这根导线带入到低电平。

当发送者检测到这个低电平信号时,就应该停止发送。

而在完成本次传输之前,发送者还会继续等待握手信号线在此变为高电平,以继续被中止的数据传输。

2、确认接收者为表明数据已经收到而向发送者回复信息的过程称为确认。

有的传输过程可能会收到报文而不需要向相关节点回复确认信息。

但是在许多情况下,需要通过确认告之发送者数据已经收到。

有的发送者需要根据是否收到信息来采取相应的措施,因而确认对某些通信过程是必需的和有用的。

即便接收者没有其他信息要告诉发送者,也要为此单独发一个数据确认已经收到的信息。

确认报文可以是一个特别定义过的字节,例如一个标识接收者的数值。

发送者收到确认报文就可以认为数据传输过程正常结束。

如果发送者没有收到所希望回复的确认报文,它就认为通信出现了问题,然后将采取重发或者其它行动。

3、中断中断是一个信号,它通知CPU有需要立即响应的任务。

每个中断请求对应一个连接到中断源和中断控制器的信号。

通过自动检测端口事件发现中断并转入中断处理。

许多串行端口采用硬件中断。

在串口发生硬件中断,或者一个软件缓存的计数器到达一个触发值时,表明某个事件已经发生,需要执行相应的中断响应程序,并对该事件做出及时的反应。

这种过程也称为事件驱动。

采用硬件中断就应提供中断服务程序,以便在中断发生时让它执行所期望的操作。

很多微控制器为满足这种应用需求而设置了硬件中断。

在一个事件发生的时候,应用程序会自动对端口的变化做出响应,跳转到中断服务程序。

例如发送数据,接收数据,握手信号变化,接收到错误报文等,都可能成为串行端口的不同工作状态,或称为通信中发生了不同事件,需要根据状态变化停止执行现行程序而转向与状态变化相适应的应用程序。

外部事件驱动可以在任何时间插入并且使得程序转向执行一个专门的应用程序。

4、轮询通过周期性获取特征或信号来读取数据或发现是否有事件发生的工作过程称为轮询。

它需要足够频繁地轮询端口,以便不遗失任何数据或事件。

轮询的频率取决于对事件快速反应的需求以及缓存区的大小。

轮询通常用于计算机与I/O端口之间较短数据或字符组的传输。

由于轮询端口不需要硬件中断,因此可以在一个没有分配中断的端口运行此类程序。

很多轮询使用系统计时器来确定周期性读取端口的操作时间。

5、差错检验数据通信中的接收者可以通过差错检验来判断所接收的数据是否正确。

冗余数据校验、奇偶校验、校验和、循环冗余校验等都是串行通信中常用的差错检验方法。

(1)冗余数据校验发送冗余数据是实行差错检验的一种简单办法。

发送者对每条报文都发送两次,有接收者根据这两次收到的数据是否一致来判断本次通信的有效性。

当然,采用这种方法意味着每条报文都要花两倍的时间进行传输。

在传送短报文时经常会用到它。

许多红外线控制器就使用这种方法进行差错检验。

(2)奇偶校验串行通信中经常采用奇偶校验来进行错误检查。

校验位可以按奇数位校验,也可以按偶数位校验。

许多串口支持5~8个数据位再加上奇偶校验位的工作方式。

按数据位加上奇偶校验位共有偶数个0的规则填写校验位的方式称为偶校验;而按数据位加上奇偶校验位共有奇数个0的规则填写的校验位方式称为奇校验。

接收方检验接收到的数据,如果接收到的数据违背了事先约定的奇偶校验的规则,不是所期望的数值,说明出现了传输错误,则向发送方发送出错通知。

(3)校验和另一种差错检验的方法是在通信数据中加入一个差错检验字节。

对一条报文中的所有字节进行数学或者逻辑运算,计算出校验和。

将校验和形成的差错检验字节作为该报文的组成部分。

接收端对收到的数据重复这样的计算,如果得到了一个不同的结果,就判定通信过程发生了差错,说明它接收到的数据与发送数据不一致。

一个典型的计算校验和的方法是将这条报文中所有的字节值相加,然后用结果的最低字节的补码作为校验和。

校验和通常只有一个字节,因而不会对通信量有明显的影响,适合在长报文的情况下使用。

但这种方法并不是绝对的安全,会存在很小的概率的判断失误。

那就是即便在数据并不完全吻合的情况下有可能出现得到的校验和一致,将有差错的通信过程判断为没有发生差错。

循环冗余校验(CRC)也是串行通信中常用的检错方法,它采用比校验和更为复杂的数学计算,器校验结果也更加可靠。

(4)出错的简单处理当一个节点检测到通信中出现的差错或者接收到一条无法理解的报文时,应尽量通知发送报文的节点,要求它重新发送或者采取别的措施来纠正。

经过多次重发,如果发送者仍不能纠正这个错误,发送者应该跳过对这个节点的发送,发布一条出错信息,通过报警或者其他操作来通知操作人员发生了通信差错,并尽可能继续执行其他任务。

接收者如果发现一条报文比期望的报文要短,应该能最终停止连接,并让主机知道出现了问题,而不能无休止地等待一个报文结束。

主计算机可以决定让该报文继续发送、重发或者停发。

不应因发现问题而让网络处于无休止的等待状态。

6、串行异步通信数据格式无论是RS-232还是RS-485,均可采用串行异步收发数据格式。

在串行端口的异步传输中,接收方一般事先并不知道数据会在什么时候到达。

在它检测到数据并做出相应之前,第一个数据位就已经过去了。

因此每次异步传输都应该在发送的数据之前设置至少一个起始位,已通知接收方有数据到达,给接收方一个准备接收数据、缓存数据和做出其他响应所需要的时间。

而在传输过程结束时,则应由一个停止位通知接收方本次传输过程已终止,以便接收方正常终止本次通信而转入其他工作程序。

串行异步收发(UART)通信的数据格式如图1所示。

图1 串行异步通信数据格式若通信线上无数据发送,该线路应处于逻辑1状态(高电平)。

当计算机向外发送一个字符数据时,应先送出起始位(逻辑0,低电平),虽有紧跟着数据位,这些数据构成要发送的字符信息。

有效数据位的个数可以规定为5、6、7或8。

奇偶校验位视需要设定,紧跟其后的是停止位(逻辑1,高电平),其位数可在1、1.5、2中选择其一。

二、RS-232C串行通信接口技术1、RS-232C接口RS-232C的连接插头用25针或9针的EIA连接插头座,其主要端子分配表如下表(表1)所示。

端脚方向符号功能25针9针2 3 输出TXD 发送数据3 2 输入RXD 接收数据4 7 输出RTS 请求发送5 8 输入CTS 为发送清零6 6 输入DSR 数据设备准备好7 5 GND 信号地8 1 输入DCD20 4 输出DTR数据信号检测22 9 输入RI表1 RS-232C主要端子(1)信号含义1.从计算机到Modem的信号DTR——数据终端设备(DTE)准备好:告诉Modem计算机已经接通电源,并准备好。

RTS——请求发送:告诉Modem现在要发送数据。

2.从Modem到计算机信号DSR——数据通信设备(DCE)准备好:告诉计算机Modem已接通电源,并准备好了。

CTS——为发送清零:告诉计算机Modem已做好了接收数据的准备。

DCD——数据信号检测:告诉计算机Modem已与对端的Modem建立连接了。

RI——振铃指示器:告诉计算机对端电话已在振铃了。

3.数据信号TXD——发送数据。

RXD——接收数据。

(2)电气特性RS-232C的电气线路连接方式如图2所示。

图2 RS-232C的电气连接图接口为非平衡型,每个信号用一根导线,所有信号回路共用一根地线。

信号速率限于20kbit/s内,电缆长度限于15m之内。

由于是单线,线间干扰较大。

其电性能用±12V标准脉冲。

值得注意的是RS-232C采用负逻辑。

在数据线上:传号Mark=-5~-15V,逻辑“1”电平空号Space=+5~+15V,逻辑“0”电平在控制线上:通On=+5V~+15V,逻辑“0”电平断Off=-5V~-15V,逻辑“1”电平RS-232C的逻辑电平与TTL电平不兼容,为了与TTL电平器件相连必须进行电平转换。

由于RS-232C采用电平传输,在通信速率为19.2kbit/s是,其通信距离只有15m。

若要延长通信距离,必须以降低通信速率为代价。

2、RS-232C通信接口的互连当两台计算机经RS-232C口直接通信时,两台计算机之间的联络线可用图3、图4表示。

虽然不接Modem,图中仍连接着有关的Modem信号线,这是由于INT 14H中断使用这些信号,假如程序中没有调用INT 14H,在自编程序中也没有用到Modem的有关信号,两台计算机直接通信时,只连接2、3、7(25针EIA)或3、2、5(9针EIA)就可以了。

图3 使用Modem信号的RS-232C接口图4 不使用Modem信号的RS-232C接口3、RS-232C驱动器/接收器为了实现采用+5V供电的TTL和CMOS通信接口电路能与RS-232C标准接口连接,必须进行串口的输入/输出信号的电平转换。

相关主题