串口数据帧格式根据通信层次和应用场景的不同,可分为物理层的数据帧结构(单个字节的传输格式)和协议层的数据帧结构(多字节组成的完整数据包)。以下是两者的详细解析:
一、物理层数据帧结构(单个字节传输格式)
每个字节在传输时通过起始位、数据位、校验位和停止位构成基本帧结构,确保物理信号的同步与准确性。
1. 核心组成部分及功能:
起始位(Start Bit)
作用:标识数据帧开始,触发接收端同步时钟。
电平:固定为低电平(逻辑0)。
数据位(Data Bits)
作用:承载实际传输的数据内容,长度通常为5-9位,最常见为8位(对应一个字节)。
传输顺序:低位(LSB)在前,高位(MSB)在后。
校验位(Parity Bit)
作用:检测传输过程中的错误,常见方式包括奇校验(1的个数为奇)、偶校验或无校验。
可选性:根据协议要求可省略。
停止位(Stop Bit)
作用:标识数据帧结束,并为下一个字节传输提供缓冲时间。
电平:固定为高电平(逻辑1),长度可为1、1.5或2位。
2. 典型配置示例:
8N1格式:1位起始位 + 8位数据位 + 无校验位 + 1位停止位。
7E1格式:1位起始位 + 7位数据位 + 偶校验位 + 1位停止位。
二、协议层数据帧结构(多字节数据包)
在物理层基础上,实际应用常通过多个字节组合成完整的数据包,以增强传输的可靠性和功能性。此类数据帧包含更复杂的字段,常见结构如下:
1. 核心组成部分及功能:
帧头(Header)
作用:标识数据包开始,通常为固定字节序列(如0xA5、0x55AA)。
地址字段(Address)
作用:区分发送方和接收方的设备地址。
控制字段(Control Code)
作用:定义操作指令或状态(如读取、写入)。
数据长度(Data Length)
作用:指明后续数据字段的字节数,避免接收缓冲区溢出。
数据内容(Payload)
作用:实际传输的信息,如传感器数值、控制命令等。
校验字段(Checksum/CRC)
作用:高级错误检测(如CRC16、CRC32),比奇偶校验更可靠。
帧尾(Footer)
作用:标识数据包结束,常见固定字节(如0xFF)。
2. 典型协议示例:
自定义协议帧:帧头(2字节) + 版本(1字节) + 序列号(2字节) + 命令字(1字节) + 数据长度(2字节) + 数据(N字节) + 校验和(1字节)。
工业协议(如MODBUS) :地址(1字节) + 功能码(1字节) + 数据(N字节) + CRC16校验(2字节)。
三、关键设计考量
1. 同步机制:
物理层通过起始位和停止位实现字节同步。
协议层通过帧头和帧尾实现数据包同步。
2. 错误处理:
物理层依赖校验位检测单比特错误。
协议层通过CRC等校验字段检测多比特错误或数据丢失。
3. 灵活性:
数据位长度、校验方式、停止位数量等参数需通信双方预先约定。
四、 总结
串口数据帧的完整格式需结合物理层和协议层设计:
物理层:起始位、数据位、校验位、停止位,确保单个字节的可靠传输。
协议层:帧头、地址、控制字段、数据内容、校验字段、帧尾,实现复杂数据包的解析与控制。
实际应用中,开发者需根据需求选择或自定义帧结构,平衡传输效率与可靠性。