快捷搜索: 王者荣耀 脱发

串行通信——异步串行通信

I、串口通信简介

一、定义

在一条传输线上,数据以“位”为单位进行逐个传输,即为串行通信。

二、意义

并行通信控制简单、相对传输速度快,但由于传输线较多,长距离传输时成本高,因此仅适合短距离的数据传输; 相对的,在满足“传输速度 ≥ 最大需求速度”的前提下,使用串行通信便是大势所趋了。

三、分类

串行通信分为两种方式,异步串行通信、同步串行通信。 异步串行通信,是指发送方与接收方,使用各自的时钟控制数据发送和接收过程(为使双方收发协调,要求双方时钟尽可能一致); 同步串行通信,则是发送方时钟直接控制接收方时钟,使双方完全同步(同步方法有“外同步和自同步”两种)。

串行通信的最小传输单位是“位”,一次完整的“接收/发送”的最小单位是“字符”(单独收发一个位的数据,通常没有意义)。

    使用异步串行通信时,由于收发双方时钟不严格一致,所以每个字符都要用到起始位和停止位来作为字符开始和结束的标志,从而保证数据传输的准确性(由于每个字符都有开始和停止位,因此字符之间的时间间隔是任意的); 使用同步串行通信时,由于收发双方时钟严格一致,所以仅在数据块(有效数据)传输的一开始和结束时,用到了开始符和结束符,在有效数据传输完毕后,发送空闲字符。

对比两种串行通信方式,同一数据块,后者仅在头尾处添加了开始与结束标记,因此后者的传输效率较高,但实现的硬件设备也更复杂,所以各设备之间,通常采用的还是异步串行通信方式。

接下来将详细介绍异步串行通信。

II、异步串行通信详解

一、数据格式

一次完整的“接收/发送”的最小单位是“字符”,我们将其称为一个字符帧,字符帧由四部分组成:起始位、数据位、校验位、停止位。

1. 起始位

起始位为0。

    通讯线在空闲状态时保持高电平,因此出现下降沿即可判定为数据传输开始; 另外,由于数据位定长,且起始位在一次接收中只判定一次,所以不用担心数据位中的0误识别成起始位。

2. 数据位

数据位可以是5/6/7/8位,传输时低位在前、高位在后。

3. 奇偶校验位

校验位可以省略,当需要使用校验位时:

    奇偶校验位为1或0; 奇校验时,数据位、校验位中1的个数,应该是奇数; 偶校验时,数据位、校验位中1的个数,应该是偶数。

4. 停止位

停止位为1。

    停止位可以是1位的长度、1.5位的长度、2位的长度(位数的本质含义是信号出现的时间,故可有分数位); 另外,由于数据位定长,所以停止位位置固定可知,接收时只需判定停止位是否为1即可。

二、通信制式

1. 单工

数据仅能沿一个方向传输,不能实现反向传输(只能A→B,不能B→A)。

2. 半双工

数据可以沿两个方向传输,但同一时刻,只能接收或者发送。

3. 全双工

数据可以沿两个方向传输,且可以同时进行。

三、通信速率

    串口通讯的速率用波特率表示,定义为每秒传输二进制码的位数,单位是bps(位/秒); 以9600bps为例,假设一个字符帧共有10位(1起始位、8数据位、1结束位),那么每秒钟能传输的最大字符数为“9600/10 = 960”; 最大传输距离,与波特率成反比关系(9600bps,最大传输距离约为76m)。
经验分享 程序员 微信小程序 职场和发展