串口是什么?串口协议是什么?

发布于:2025-03-28 ⋅ 阅读:(29) ⋅ 点赞:(0)

一、串口的本质:硬件接口标准
串口(Serial Port)

定义:一种通过串行通信(逐位顺序传输)实现数据收发的物理接口标准。
层级定位:属于OSI模型的物理层,定义电气特性、连接器形状、信号传输方式等硬件规范。
常见类型

  • RS-232:传统计算机串口(如9针DB9接口),传输距离短(<15米)。
  • RS-485:工业级差分信号接口,支持长距离(>1200米)和多设备通信。
  • TTL-UART:单片机常用的5V/3.3V电平串口(如Arduino的TX/RX引脚)。

核心功能
仅负责将数据转换为电平信号并通过物理线路传输,不涉及数据含义或格式。
二、串口通信中的“协议”是什么?
协议的必要性

硬件层(串口)仅传输原始比特流,但设备间需约定:

  1. 如何识别数据起始/结束?
  2. 如何校验数据正确性?
  3. 如何解析数据含义?
  4. 这些规则即通信协议,属于OSI模型的数据链路层或应用层。

串口通信中常见的协议

基础协议(数据链路层)
UART协议:定义帧结构(起始位、数据位、停止位、奇偶校验位)和波特率同步。
例如:发送字节 0x55时,实际传输的比特流为:
起始位(0)+8位数据(01010101)+停止位(1)

应用层协议

  • Modbus RTU:规定数据帧格式(地址、功能码、数据域、CRC校验)。
  • ASCII协议:用可读字符(如A=123\n)表示数据,需约定分隔符和编码方式。
  • 自定义协议:用户根据需求设计的数据格式(如[HEAD][LEN][DATA][CRC])。
    应用层协议传输消息时,每个字符的物理传输确实依赖UART协议(或其他串行通信协议),但应用层协议的逻辑与UART协议是分层协作的。

具体来说
UART协议(数据链路层)负责将字符转换为串行比特流(包括添加起始位、停止位等)。
应用层协议(如Modbus、ASCII协议)负责定义消息的语义和结构(如指令格式、数据含义),不直接处理字符的物理传输细节。

三、串口与协议的关系
分层协作

物理层(串口):确保比特流在物理介质上可靠传输。
协议层:赋予比特流实际意义,确保设备正确解析数据。

四、常见误区澄清
误区1:认为“串口=协议”。
正解:串口是硬件标准,协议是软件规则,两者需配合使用。
误区2:忽略协议设计直接传输数据。
后果:设备因无法识别数据格式而通信失败。

五、实例分析
场景:通过RS-485串口发送Modbus RTU指令读取温度值。

应用层协议(Modbus RTU):
生成指令帧: 01 03 00 01 00 02 95 CB(设备地址01,读取寄存器0001的2个字节)。
UART协议:
将每个字符(如 0x01, 0x03)封装为串行帧,添加起始位、停止位。
按9600bps速率发送比特流。
物理层(RS-485):
将UART生成的TTL电平转换为差分信号,通过A/B线传输。
总结
串口是物理层接口标准,不是协议。

硬件层(如RS-232、RS-485)负责传输电平信号。
协议层(如UART帧结构、Modbus)负责定义数据格式和交互规则。
实际应用中,需同时配置串口参数(波特率、数据位等)和协议规则,才能实现有效通信。