异步串口通信协议的信息帧格式介绍

一、异步串口通信概述

异步串口通信(Asynchronous Serial Communication)是一种在数据传输过程中不需要严格时钟同步的通信方式,发送方和接收方依赖于数据帧中的起始位和停止位来标识数据的开始和结束。这种通信方式适用于数据传输速率较低、传输距离较短的场景,因其实现简单、成本低廉而在工业控制、计算机外设、嵌入式系统等领域得到广泛应用。

在异步通信中,不存在独立的时钟信号线,数据传输通过预先约定的波特率(Baud Rate)和数据帧格式实现“松散同步”。通信双方必须在通信开始前就波特率(如9600bps、115200bps等)和数据帧格式达成一致,否则将无法正确解析数据。

二、信息帧的总体结构

异步串口通信的信息帧(Data Frame)是数据传输的基本单位,其结构固定且标准化。一个完整的数据帧从左到右由以下五个主要部分组成:

智能照明

[空闲位(高电平)] → [起始位(0)] → [数据位(5~8位,低位先传)] → [奇偶校验位(可选)] → [停止位(1或2位)]

具体而言,标准帧格式可以表示为:起始位 + 数据位 + 校验位(可选)+ 停止位。接收端通过检测起始位和停止位来识别帧的边界,从而准确解析数据内容。这种结构是异步串行通信中最常见的格式,广泛应用于RS-232、RS-485等串行接口标准中。

值得注意的是,通信线路在没有数据传输时处于 逻辑“1”状态(高电平)‍ ,即空闲状态。当发送设备要发送数据时,线路状态会发生跳变,这个电平变化就是接收端识别数据开始的关键信号。

三、起始位(Start Bit)详解

1. 起始位的定义与作用

起始位是异步串行通信数据帧中的第一位信号,用于通知接收方开始接收数据。它必须是持续一个比特时间的逻辑0电平(低电平),标志传输一个字符的开始。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。

起始位在通信中承担着至关重要的同步功能。具体而言,它的作用包括:

标志字符传送开始:起始位的下降沿(由高电平跳变到低电平)向接收端明确指示“一个新的字符即将开始传输”。在通信线上没有数据传送时,线路处于逻辑“1”状态(高电平),而当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。

实现收发双方时钟同步:起始位使接收方能够用自己的接收时钟与发送方的数据进行同步。由于异步通信没有独立的时钟信号线,接收端必须依赖起始位来校准本地采样时钟,确保后续数据位的正确采样。

提供重新同步的机会:异步通信是按字符传输的,每传输一个字符,就用起始位来通知接收方,以此重新核对收发双方的同步。即使接收设备和发送设备的时钟频率存在略微偏差,也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供了一种缓冲,因此异步串行通信的可靠性高。

2. 起始位的长度

起始位固定为1位,持续时间为一个比特时间(即波特率的倒数)。例如,在9600bps的波特率下,起始位的持续时间约为104微秒。这种固定长度的设计使得接收端能够在精确的时间窗口内检测起始位的存在,并以此为基准开始采样后续数据位。

3. 起始位的实现方式

起始位在物理层表现为一个从高电平到低电平的跳变。以RS-232标准为例,逻辑“1”对应-12V电压,逻辑“0”对应+12V电压。当线路空闲时保持-12V(高电平),发送起始位时将电压拉升至+12V(低电平),这个跳变就是接收端识别数据开始的标志。

四、数据位(Data Bits)详解

1. 数据位的定义与功能

数据位紧跟在起始位之后,是通信中的真正有效信息,承载了实际需要传输的数据内容。数据位的位数可以由通信双方共同约定,一般可以是5位、6位、7位或8位。其中,标准的ASCII码使用7位(0127),扩展的ASCII码使用8位(0255)。选择不同位数的数据位需要考虑传输的数据类型和精度要求——数据位越多,传输的数据量越大,但同时也会增加传输时间和误码率,在实际应用中需要根据具体情况进行权衡和选择。

2. 数据位的传输顺序

异步串行通信中,数据位的传输遵循 ‍“低位先行”‍ 的原则,即 先传送字符的低位(LSB,Least Significant Bit),后传送字符的高位(MSB,Most Significant Bit)‍ 。

以传输ASCII字符“A”(二进制01000001)为例,实际传输顺序为:先发送最低位1.然后是0、0、0、0、0、1、0.最后发送最高位0.这种低位先行的排列方式在多个资料中均有明确记载,例如在9600波特率下传输ASCII码“m”(二进制表示为0110 1101)时,数据位的顺序同样从最低有效位开始,第一个数据位对应2^0.最后一个数据位对应2^7.

3. 数据位的编码方式

异步串行通信中,数据位通常采用ASCII编码或二进制编码。每个字符由7位或8位二进制数表示,其中最高位(第8位)可能用于校验。在工业控制和仪器仪表领域,也可能传输自定义的二进制协议数据,这时数据位可以是任意的8位二进制组合。

从采样波形的角度看,数据位以高低电平的形式在传输线上呈现,高电平代表逻辑“1”,低电平代表逻辑“0”。接收端以波特率确定的时间间隔对线路电平进行采样,逐位解析出数据。例如,传输ASCII字符“a”(十六进制0x61)时,8位数据位b₀至b₇按照从低位到高位的顺序发送。

五、奇偶校验位(Parity Bit)详解

1. 奇偶校验位的定义

奇偶校验位是逻辑设计中用于检测数据错误的一种方法,位于数据位之后,用于提供基本的错误检测能力。校验位本身并不承载有效信息,而是通过对数据位中的“1”的个数进行统计,生成一个额外的位来确保整个数据帧(数据位+校验位)中的“1”的个数满足特定的奇偶性要求。

2. 奇校验与偶校验

奇偶校验分为两种类型: 奇校验(Odd Parity)‍ 和 偶校验(Even Parity)‍。

偶校验(Even Parity)‍ :在数据末尾添加一个校验位,使整个数据(数据位+校验位)中“1”的个数为偶数。计算方式为:统计数据位中“1”的个数,如果为偶数,则校验位设为0;如果为奇数,则校验位设为1.

奇校验(Odd Parity)‍ :在数据末尾添加一个校验位,使整个数据(数据位+校验位)中“1”的个数为奇数。计算方式为:统计数据位中“1”的个数,如果为奇数,则校验位设为0;如果为偶数,则校验位设为1.

3. 校验位的计算示例

为了更好地理解奇偶校验位的计算方法,可以参考以下具体示例:

假设原始数据为二进制10110(共5位),其中包含的“1”的个数为3个(奇数):

偶校验:需要使总“1”个数为偶数,而当前为3个(奇数),因此校验位应为1.使总数为4(偶数)。

奇校验:需要使总“1”个数为奇数,当前已经是3个(奇数),因此校验位应为0.保持总数为3(奇数)。

另一个例子来自标准表格:对于3位消息“000”,在偶校验下,校验位为0(加上校验位后总“1”数为0.为偶数);在奇校验下,校验位为1(总“1”数变为1.为奇数)。

4. 奇偶校验的局限性

需要特别指出的是,奇偶校验位只能检测奇数个比特错误,而无法检测偶数个比特错误。例如,如果传输过程中有两个比特同时发生翻转(0变1或1变0),那么“1”的个数的奇偶性不会改变,校验就无法检测出错误。因此,奇偶校验属于一种简单的错误检测机制,适用于对可靠性要求不是极高的场景。在某些对数据完整性要求更高的应用中,可能需要采用更高级的校验方式,如CRC(循环冗余校验)。

六、停止位(Stop Bit)详解

1. 停止位的定义与作用

停止位用于标记当前数据帧的结束,确保接收端能正确识别数据帧的边界。它被设置为 逻辑“1”(高电平)‍ ,表示一个字符传送完毕。停止位充当了字符之间的间隔标志,在两帧数据之间提供了一个缓冲时间,使收发双方能够准备下一次传输。

停止位更重要的作用在于校准接收方与发送方之间的时钟误差。如果接收方与发送方之前的误差超过了一个比特的耗时,会造成丢失数据的现象,而停止位为接收方提供了重新同步的机会——接收方通过检测下一个字节起始位的下降沿来校准误差。这样,即使收发双方的时钟存在一定的偏差,只要这个偏差在一个字符传输时间内不足以累积到位错误,就不会影响数据的正确接收。

2. 停止位的长度

停止位是按长度来计算的,其逻辑电平始终为“1”(高电平),不同的只是高电平持续的时间长度。一般来讲,停止位有1位、1.5位和2位三种长度:

具体而言,当字长(Word Length)为5位时,停止位长度可以配置为1.5位;当字长为6、7或8位时,停止位长度可以配置为1位或2位。这种配置关系在多个标准和设备手册中均有体现。

3. 停止位与空闲位的区别

需要明确的是,停止位虽然也是高电平,但它与线路空闲状态(IDLE)的概念不同。停止位是数据帧的组成部分,有明确的时间长度限定;而空闲位是字符与字符之间无数据传输时线路保持的高电平状态,其长度不固定。帧格式可表示为:空闲位(高电平) → 起始位(0) → 数据位 → 校验位(可选) → 停止位(1或2位)。

七、典型帧格式及应用场景

1. 常见帧格式命名规则

异步串行通信中,常用 ‍“数据位-校验方式-停止位”‍ 的格式来描述帧配置,例如“8N1”表示:8位数据位、无校验(None)、1位停止位。常见的组合包括:

  • 8N1:8位数据 + 无校验 + 1位停止位——最常用的配置
  • 8E1:8位数据 + 偶校验 + 1位停止位
  • 8O1:8位数据 + 奇校验 + 1位停止位
  • 7E1:7位数据 + 偶校验 + 1位停止位
  • 7N2:7位数据 + 无校验 + 2位停止位

2. 不同应用场景的帧格式变体

不同应用场景对帧格式有不同的需求,形成了多样化的帧格式变体:

标准ASCII字符传输:采用8位数据位、无校验、1位停止位的格式(8N1),适用于大多数计算机外设和终端通信场景。

需要错误检测的通信:采用7位数据位 + 1位奇偶校验 + 1位停止位的格式(如7E1),在传输ASCII字符的同时提供基本的错误检测能力。

噪声环境下的通信:采用7位数据位、无校验、2位停止位的格式(7N2),通过增加停止位的长度增强接收端的同步能力和抗干扰能力。

工业变频器通信:常见配置有 8N2(8位数据+无校验+2位停止位)‍ 、 8E1(8位数据+偶校验+1位停止位)‍ 和 8O1(8位数据+奇校验+1位停止位)‍ ,根据具体设备的通信协议要求选择。

多处理器通信:扩展至8位或9位数据位,并引入“ADDR/STOP DATA”字段以支持地址和数据复用,适用于复杂系统。

终端设备(TTY)‍ :经典配置为7位数据 + 1位奇偶校验 + 2位停止位,适用于电传打字机等早期终端设备。

高速同步数据传输:简化为 纯8位数据位加时钟信号(CLK)‍ ,专为高速、同步的数据传输设计。

八、帧格式的实际传输示例

为了更直观地理解异步串口通信信息帧的完整工作过程,以下以传输ASCII字符“A”(十六进制0x41.二进制01000001)为例,演示实际的数据传输顺序:

假设采用8N1格式(8位数据、无校验、1位停止位):

  • 步骤1:线路空闲,保持高电平(逻辑“1”)
  • 步骤2:发送起始位,线路跳变为低电平(逻辑“0”)
  • 步骤3:依次发送8位数据,按低位先行的顺序:1(LSB)→ 0 → 0 → 0 → 0 → 0 → 1 → 0(MSB)
  • 步骤4:无校验位(8N1配置)
  • 步骤5:发送停止位,线路恢复高电平

实际传输的比特序列为: 0(起始)→ 1 → 0 → 0 → 0 → 0 → 0 → 1 → 0 → 1(停止)‍ 。

整个帧长度为10位(1起始位 + 8数据位 + 1停止位)。接收端检测到起始位后,按照约定波特率采样数据位,再检测停止位确认帧结束,从而完整地解析出字符“A”。

九、总结

异步串口通信协议的信息帧格式是串行通信的基础核心,理解其结构和工作原理对于嵌入式系统开发、工业通信、设备互联等领域至关重要。其核心要点可以归纳为:

  • 帧结构:由起始位、数据位、校验位(可选)、停止位四部分组成,在空闲位(高电平)之间传输。
  • 起始位:固定1位,逻辑“0”,用于标志字符传送开始并实现收发双方同步。
  • 数据位:通常为5~8位,从低位到高位依次传输,常用ASCII编码或二进制编码。
  • 校验位:可选,分为奇校验和偶校验,通过统计数据位中“1”的个数来生成,用于检测传输错误。
  • 停止位:逻辑“1”,长度可为1位、1.5位或2位,用于标记帧结束并提供时钟误差校准。
  • 应用变体:不同应用场景采用不同帧格式配置,如8N1用于通用通信、7E1用于ASCII传输、8E1/8O1用于工业设备等。

通过合理配置帧格式参数,异步串口通信能够在多种应用场景下实现可靠、高效的数据传输。理解这些帧格式的细节,对于正确配置通信参数、排除通信故障以及设计可靠的串行通信系统具有重要的指导意义。

滚动至顶部