串行通信技术基础知识
串行通信技术基础
在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数
据信号,按一定的约定规则为接收者所接收。由于串行端口通常只是定义了物理层的接口规范,所以
为确保每次传送的数据报文能准确到达目的地,使每一个接收者能够接收到所有发向它的数据,必须
在通信连接上采取相应的措施。
由于借助串行通信端口所连接的设备在功能、型号上往往互不相同,其中大多数设备出了等待接
收数据之外还会有其他的任务,例如,一个数据采集单元需要周期性地收集和存储数据;一个控制器
需要负责控制计算机或向其他设备发送报文;一台设备可能会在接收方正在进行其他任务时向它发送
信息。因此,必须有能应对多种不同工作状态的一系列规则来保证通信的有效性。这里所讲的保证串
行通信的有效性的方法包括:使用轮询或者中断来检测、接收信息;设置通信帧的起始、停止位;建
立连接握手;实行对接收数据的确认、数据缓存以及错误检查等。
一、 串行通信基本概念
1、连接握手
通信帧的起始位可以引起接收方的注意,但发送方并不知道,也不能确定接收方是否已经做好了
接收数据的准备。利用连接握手可以使收发双方确认已经建立了连接关系,接收方已经做好准备,可
以进入数据收发状态。
连接握手过程是指发送者在发送一个数据块之前使用一个特定的握手信号来引起接收者的注意,
表明要发送数据,接收者则通过握手信号回应发送者,说明它已经做好了接收数据的准备。
连接握手可以通过软件,也可以通过硬件来实现。在软件连接握手中,发送者通过发送一个字节
表明它想要发送数据;接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据;当发
送者看到这个信息时,便知道它可以发送数据了。接收者还可以通过另一个编码来告诉发送者停止发
送。
在普通的硬件握手中,接收者在准备好了接收数据的时候将相应的握手信号线变为高电平,然后
开始全神贯注地监视它的 串行输入端口的允许发送端。这个允许发送端与接收者已准备好接收数据 的
信号端相连,发送者在发送数据之前一直在等待这个信号变化。一旦得到信号说明接收者已处于准备
好接收数据的状态,便开始发送数据。接收者可以在任意时候将握手信号变为低电平,即便是在接收
一个数据块的过程中间也可以把这根导线带入到低电平。当发送者检测到这个低电平信号时,就应该
停止发送。而在完成本次传输之前,发送者还会继续等待握手信号线在此变为高电平,以继续被中止
的数据传输。
2 、确认
接收者为表明数据已经收到而向发送者回复信息的过程称为确认。有的传输过程可能会收到报文
而不需要向相关节点回复确认信息。但是在许多情况下,需要通过确认告之发送者数据已经收到。有
的发送者需要根据是否收到信息来采取相应的措施,因而确认对某些通信过程是必需的和有用的。即
便接收者没有其他信息要告诉发送者,也要为此单独发一个数据确认已经收到的信息。
确认报文可以是一个特别定义过的字节,例如一个标识接收者的数值。发送者收到确认报文就可
以认为数据传输过程正常结束。如果发送者没有收到所希望回复的确认报文,它就认为通信出现了问
题,然后将采取重发或者其它行动。
3 、中断
中断是一个信号,它通知 CPU 有需要立即响应的任务。每个中断请求对应一个连接到中断源和中
断控制器的信号。通过自动检测端口事件发现中断并转入中断处理。
许多串行端口采用硬件 中断。在串口发生硬件中断,或者一个软件缓存的计数器到达一个触发值
时,表明某个事件已经发生,需要执行相应的中断响应程序,并对该事件做 出及时的反应。这种过程
也称为事件驱动。
采用硬件中断就应提供中断服务程序,以便在中断发生时让它执行所期望的操作。很多微控制器
为满足这种应用需求而设置了硬件中断。在一个事件发生的时候,应用程序会自动对端口的变化做出
响应,跳转到中断服务程序。例如发送数据,接收数据,握手信号变化,接收到错误报文等,都可能
成为串行端口的不同工作状态,或称为通信中发生了不同事件,需要根据状态变化停止执行现行程序
而转向与状态变化相适应的应用程序。
外部事件驱动可以在任何时间插入并且使得程序转向执行一个专门的应用程序。
4 、轮询
通过周期性获取特征或信号来读取数据或发现是否有事件发生的工作过程称为轮询。它需要足够
频繁地轮询端口,以便不遗失任何数据或事件。轮询的频率取决于对事件快速反应的需求以及缓存区
的大小。
轮询通常用于计算机与 I