通讯协议的基本概念——同步和异步

假设现在波特率为1bps,现在发送方需要发送11111111,那么现在发送方需要掐时间来发送这8bit的数据一共需要掐8次,总时间为8s,而接收方在接收这一组数据时也需要去掐时间,但是现在问题来了发送方和接收方的时间基准不一致,比如发送方发送了1s的高电平,但是接收方只接收了0.9s的高电平,下面的0,1s被接收方作为下一位bit的数据,如果发送了10个数据,那这样的话是不是就会错出一位,一旦错出一位以后以后的话,后续的数据是不是全就乱了,为了避免这个情况,规定了串口通信不允许连续发动,以防止累计误差的出现除此之外还有另外一种方式,那就是同步发送方和接收方的时间基准,也就是同步,而上面描述的发送方和接收方时间基准不一致的称之为异步

在通信领域,异步通信(Asynchronous Communication)同步通信(Synchronous Communication)是两种核心的数据传输方式,二者的本质区别在于时钟同步机制数据传输的协调方式

一、同步通信(Synchronous Communication)

1. 定义

数据传输依赖统一的时钟信号,发送方与接收方通过时钟信号实现严格的位同步。

  • 核心要素
    • 时钟信号:由主设备或独立时钟源(如晶振)产生,控制数据传输的节奏。
    • 数据与时钟绑定:每个数据位的传输时刻与时钟边沿(上升沿/下降沿)严格对齐。

2. 典型结构

  • 单同步模式:发送方在数据块前插入一个同步字符(如ASCII码0x16),接收方检测到同步字符后开始按时钟采样数据。
  • 双同步模式:使用独立的时钟线传输时钟信号(如SPI的SCK、I2C的SCL),数据与时钟同步传输。

3. 关键特点

优点 缺点
传输效率高:无需额外起始/停止位,适合大块数据传输(如以太网帧)。 硬件复杂:需专用时钟线或同步机制,增加布线成本(如SPI需4线)。
同步精度高:时钟信号确保采样点精准,误码率低。 时钟同步要求高:长距离传输时,时钟信号易受干扰(如时钟 skew)。
适合高速场景:如USB、PCIe等高速总线依赖同步时钟。

4. 典型应用场景

  • 短距离高速总线
    • SPI(Serial Peripheral Interface):用于MCU与Flash、ADC等设备通信,时钟频率可达数十MHz。
    • I2C(Inter-Integrated Circuit):多设备同步通信,时钟频率最高400kHz(标准模式)至3.4MHz(高速模式)。
  • 长距离同步传输
    • 以太网:通过曼彻斯特编码将时钟嵌入数据信号(如10Base-T),接收方从数据中提取时钟。
    • 光纤通信:发送方与接收方使用同源时钟(如GPS同步),确保高速数据(如10Gbps)同步传输。

二、异步通信(Asynchronous Communication)

1. 定义

无独立时钟信号,数据传输通过约定的波特率数据帧格式(起始位、停止位)实现松散同步。

  • 核心机制
    • 发送方与接收方预先约定波特率(如9600bps)。
    • 每个数据字节附加起始位(低电平)和停止位(高电平),用于标识字节的开始和结束。

2. 典型数据帧格式(以8N1为例)

[空闲位(高电平)] → [起始位(0)] → [数据位(8位,低位先传)] → [校验位(可选)] → [停止位(1或2位,1)]
  • 示例:传输字符'A'(ASCII码0x41,二进制01000001):
    起始位(0) → 数据位(01000001,低位先传为10000010) → 停止位(1)
    实际传输顺序:0(起始)→ 1 → 0 → 0 → 0 → 0 → 0 → 1 → 1(停止)
    

3. 关键特点

优点 缺点
硬件简单:仅需数据线(如UART的TX/RX),无需时钟线。 传输效率低:每个字节需附加2~3位开销(如起始位+停止位),有效载荷仅80%(8N1格式)。
灵活性高:可随时启停传输(如交互式命令输入)。 同步依赖波特率精度:双方波特率偏差需<5%,否则易导致采样错位。
适合低速场景:如人机交互(键盘输入)、低速传感器通信。

4. 典型应用场景

  • 低速串行接口
    • UART(Universal Asynchronous Receiver-Transmitter):用于MCU与蓝牙模块、Wi-Fi模块通信(如ESP8266的AT指令)。
    • RS-232/RS-485:工业设备通信(如PLC与上位机),支持长距离(RS-485达1200米)。
  • 人机交互设备
    • 老式鼠标、键盘通过PS/2接口(异步串行)传输数据。

三、关键对比:同步 vs 异步

维度 同步通信 异步通信
时钟信号 必须(内置或独立时钟线) 无需(依赖波特率和帧格式)
传输单位 数据块(Block,如帧、包) 单字节(Byte,带起始/停止位)
典型协议 SPI、I2C、USB、以太网 UART、RS-232、Modbus RTU
波特率/时钟频率 时钟频率决定传输速度(如SPI 10MHz=10Mbps) 波特率=比特率(如9600bps=9600bit/s)
适用场景 高速、大块数据、实时性要求高 低速、非实时、点对点简单通信
硬件复杂度 高(需时钟电路或同步逻辑) 低(仅需简单移位寄存器)

四、技术实现与典型案例

案例1:SPI(同步) vs UART(异步)

  • SPI传输流程
    1. 主设备通过SCK时钟线发送时钟信号,每个时钟周期传输1位数据(MOSI/MISO)。
    2. 数据与时钟边沿严格对齐,接收方在时钟边沿采样数据。
    • 示例:传输1字节0x55(01010101),需8个时钟周期,无额外开销。
  • UART传输流程
    1. 发送方在空闲时保持高电平,发送起始位(0)表示数据开始。
    2. 逐位发送8位数据(低位先传),附加1位停止位(1)。
    • 示例:传输1字节0x55需10位(1起始+8数据+1停止),有效效率80%。

案例2:以太网的同步机制

  • 以太网使用曼彻斯特编码,将时钟信号嵌入数据中:
    • 每个比特中间的跳变既表示数据(高→低为1,低→高为0),又作为时钟信号。
    • 接收方无需独立时钟,直接从数据波形中提取同步信号。

五、如何选择通信方式?

优先选同步通信的场景

  • 需高速传输(如>1Mbps)。
  • 多设备同步(如传感器阵列同时采集数据)。
  • 示例:设计一个高速数据采集系统(如ADC通过SPI传输数据至MCU)。

优先选异步通信的场景

  • 低速、低成本需求(如<100kbps)。
  • 点对点简单通信(如单个传感器与MCU交互)。
  • 示例:开发一个基于蓝牙的遥控小车(手机通过UART发送指令至MCU)。

六、总结

  • 同步通信以时钟为核心,追求效率与精准,是高速通信的基石(如现代计算机总线、互联网);
  • 异步通信以简单灵活见长,在低速场景和嵌入式系统中广泛应用(如串口调试、工业仪表)。

理解二者差异后,可根据项目的速度需求、硬件成本、同步精度选择合适的通信方式。实际开发中,还可结合两者优势,例如:

  • 用同步总线(如SPI)实现高速数据传输,用异步串口(如UART)实现控制指令交互,形成“高低速互补”的混合通信架构。
posted @ 2025-05-20 17:44  叉叉星  阅读(748)  评论(0)    收藏  举报