航天行业嵌入式开发通信方式之一:串口通信

今天主要讲常用的串口通信,RS422

也称“平衡电压数字接口电路的电气特性”。它是一种为改进早期RS-232标准缺点而设计的串行通信接口,通过差分信号全双工通信,实现了更远距离、更高速度和更强的抗干扰能力。

是用一对名为AB的双绞线之间的电压差来代表逻辑“1”或“0”。

  • 逻辑“1”:A线电压高于B线,电压差在+2V至+6V之间。

  • 逻辑“0”:A线电压低于B线,电压差在-2V至-6V之间。

  • 接收灵敏度高:接收器可以识别低至±200mV的差分电压,抗干扰能力极强

  • 全双工通信(四线制):RS-422的发送和接收通道是物理上独立的,分别使用两对双绞线(TXD+/- 和 RXD+/-)。这意味着数据可以同时进行发送和接收,像打电话一样双向交流。

  • 传输距离与速率:传输距离和速率成反比,可以根据实际需求灵活取舍。

  • 最大传输距离:约1200米(4000英尺),此时速率通常为100 kbps。

  • 最大传输速率10 Mbps,但只能在很短的距离(如10米)内实现。

  • 网络拓扑与节点数:RS-422支持点对多的通信架构。在一个RS-422网络中,只有一个设备可以作为主发送器,但它可以同时驱动多达10个接收设备。

配置一个串行通信端口需要注意以下5个核心参数:

1. 波特率 (Baud Rate)

这是最重要的参数,表示每秒传输的符号(码元)个数。对于串口来说,通常就等于每秒传输的比特数(bps)。它决定了通信的速度。

  • 常见值:9600、19200、38400、115200(最常用)。

  • 关键点:通信双方的波特率必须设置完全一致。如果一方是9600,另一方是115200,收到的数据全是乱码。

2. 数据位 (Data Bits)

这是指每个数据帧中实际包含的数据字节长度,即发送一个字节(Byte)用多少位来表示。

  • 常见值:7位或8位。

  • 关键点:现在绝大多数应用都使用8位(因为一个字节正好是8位,能完整表示0-255的ASCII码和二进制数据)。7位主要用于早期的纯文本通信(如ASCII),现在已很少见。

3. 停止位 (Stop Bits)

这是指每个数据帧发送完毕后,插入的间隔位,用来告知接收设备“这一帧数据结束了”。

  • 常见值:1位、1.5位、2位。

  • 关键点:现在绝大多数应用都使用1位停止位。更长的停止位(如2位)相当于增加了间隔时间,常用于速度较慢的老式设备,给接收端更多时间准备处理下一帧数据。

4. 校验位 (Parity Bit)

这是指在数据位后面增加的一个用于简单检错的冗余位,用来判断传输的数据是否发生了错误。

  • 常见类型

    • 无校验 (None):最常用。不添加校验位,效率最高,错误检测交给上层协议处理。

    • 奇校验 (Odd):保证这1位加上数据位中“1”的总个数为奇数。

    • 偶校验 (Even):保证这1位加上数据位中“1”的总个数为偶数。

    • 标记位 (Mark) / 空格位 (Space):校验位固定为1或0,几乎不用。

  • 关键点:通信双方的校验方式必须一致。现代的嵌入式设备和电脑通信,绝大多数都设为“无校验”

5. 流控制 (Flow Control)

这是指用于协调发送和接收双方速度的机制,防止接收方因处理不过来而丢失数据。

  • 常见类型

    • 无流控制 (None):最常用。双方默认都能及时处理数据,不进行额外的手握。

    • 硬件流控制 (RTS/CTS):通过额外的物理信号线(请求发送/允许发送)来控制。接收方准备好了才给对方发信号,让对方发送。

    • 软件流控制 (XON/XOFF):通过发送特定的控制字符(如Ctrl-S暂停,Ctrl-Q继续)来控制数据流。这会在数据中引入特殊字符,可能干扰二进制文件传输,因此不常用。

  • 关键点:绝大多数情况都设为“无流控制”。如果硬件支持且连接了对应线缆,可开启硬件流控以获得更可靠的传输,但配置也更复杂。

常见的配置:波特率 115200,数据位 8,停止位 1,校验位 奇校验,流控制 无