嵌入式-常见简单通信协议介绍

📅 2026/6/25 14:53:41
嵌入式-常见简单通信协议介绍
串口串口UART是嵌入式系统中最基础最常用的通信方式之一简单通用并且无需时钟同步。串口通信是一种异步串行通信方式数据按位bit依次传输每次传输一个字节通常为8位。由于是异步通信通信双方不共享时钟信号而是通过约定好的参数来保证数据正确接收。1. UART硬件连接最基础的串口通信只需要两根信号线TXTransmit发送数据RXReceive接收数据。UART 数据传输是全双工的通信双方可以同时发送和接收数据。此外发送和接收双方需要共地以保证参考电平一致。连线方式示意图如下。串口通信以帧为单位传输数据一个完整的数据帧通常包括起始位1位数据位8位最常用校验位奇偶校验可选停止位常用1位。最常用的搭配是8N1即8位数据位无校验1位停止位。由于没有时钟同步所以通信双方必须约定一个一致的通信速率也就是波特率。常用的波特率为9600115200等。串口通信的简单时序如下图所示。基础串口通信的优点在于硬件连接简单无需额外的时钟信号即可实现数据传输但这也带来了一些局限性。首先串口通信的传输速率相对较低其设计以简单可靠为主在较高波特率或复杂电磁环境下误码率可能会有所上升。其次串口通信不适合长距离传输信号在传输过程中容易受到电磁干扰以及线路延迟等因素的影响从而降低通信可靠性。此外串口通信通常采用点对点方式仅适用于两个设备之间的数据交换难以支持多设备组网通信。综上所述串口通信常用于对实时性和速率要求不高的场景例如调试信息输出、板级模块之间的通信以及短距离程序下载等。2. RS232为了解决基本串口通信在传输距离和抗干扰能力以及通信规模等方面的限制逐渐发展出了 RS232 和 RS485 等更完善的串行通信标准。需要注意的是这些标准并不是对 UART 协议的替代而是在物理层对其电气特性进行改善从而提升通信性能和适用范围。RS232 是较早提出的一种串行通信标准广泛应用于计算机与外设之间的连接笔者常用的设备与上位机通信很多基于 DP9 接口。RS232 同样是全双工通信它通过提高信号电压幅度通常为 ±3V±15V来增强抗干扰能力并定义了完整的接口规范如 DB9 接口。需要注意的是RS232 除了提高了信号电平幅度之外其逻辑极性是与 TTL 电平相反的可见下面时序图。RS232 仍然采用单端信号传输方式通常用于点对点通信传输距离一般在 15 米以内速率相对有限。因此它常见于早期计算机串口、工业设备调试接口以及一些简单的外设通信场景。下图是 RS232 典型的设备通信连线示意图。RS232 的时序如下图所示3. RS485随着工业控制等场景对通信距离和可靠性的要求不断提高RS485 应运而生。RS485 采用了差分信号传输能够有效抑制共模干扰从而显著提升抗干扰能力和传输距离可达上千米。同时RS485 支持多节点通信一条总线上可以挂接多个设备典型为 32 个或更多非常适合构建分布式系统。需要注意的是RS-485 本身只定义了物理层规范具体的数据通信规则通常由上层协议实现例如 Modbus 等工业通信协议。由于 RS485 采用了差分信号传输一位信号的表示需要两根线的电位差来判断因此其仅支持半双工通信。差分信号采用两根线来进行信号传输接收设备通过两根线的电压差判断逻辑值≥200mV 为 1≤−200mV 为 0因此天然抗共模干扰。RS485 的时序逻辑如下图所示其核心改良就是使用差分信号进行数据传输以提高长距离通信的抗干扰能力本质上还是电气特性的改良而时序规范还是依据串口标准。RS485 的另一特性是可以支持多设备通信如上图所示一般是有一个主机和若干个从机。由于 RS485 本身只是物理层标准它只定义了电气特性差分信号、电压范围、阻抗不包含任何地址或寻址机制因此要实现多设备通信需要依赖 RS485 之上的通信协议最常见的协议是Modbus。这里只做简单介绍知道逻辑即可。首先主机发送广播帧广播帧中含有目标通信从机的地址广播帧所有从机都可以收到不匹配的从机就静默处理匹配的从机就接收数据并发送应答帧。二、I2CI2C(Inter-Integrated Circuit) 是嵌入式系统中非常常用的一种同步串行通信协议该协议最初由飞利浦现恩智浦提出广泛应用于芯片之间的短距离通信比如传感器、EEPROM、ADC/DAC 等外设。I2C 仅通过一条串行数据线SDA和一条串行时钟线SCL即可在多个设备间进行同步、半双工的数据传输。I2C 适用于多设备通信每个设备都有自己的地址一般是7位主设备负责产生时钟并发起通信从设备则响应主设备的请求。I2C 的典型速率包括标准模式100 kbps、快速模式400 kbps以及更高速模式如1 Mbps快速模式和3.4 Mbps高速模式因引脚少、连接简单且能灵活扩展I2C被广泛应用于同一电路板内芯片之间的短距离低速通信。I2C 的 SDA 和 SCL 都采用一种开漏结构的输出方式其特点是只能主动输出低电平而不能主动输出高电平。 如果所有设备都只能拉低那“高电平”从哪来此时就需要上拉电阻来提供高电平。上拉电阻把总线“默认拉到高电平”任意设备需要发送“0”时把线拉低没人拉低时线路被电阻拉回高电平。典型的硬件结构如下图所示。