2. 航电串行总线协议基础

在航电计算平台中,串行总线驱动集成首先要回答一个问题:这条总线到底“长什么样”。物理层决定电气信号如何传输、能拉多长、能挂多少节点;数据链路层决定帧如何组织、如何寻址、如何仲裁与校验;帧格式则决定驱动在收发时如何拆包、填字段、判错。本节把 RS-422/485、ARINC 429、ARINC 629、MIL-STD-1553B、CAN 和 AFDX 放在同一张对比框架下,帮助后续驱动开发时快速定位“该操作哪些寄存器、该解析哪些字段、该处理哪些异常”。

物理层:电气特性与拓扑决定驱动边界

RS-422 是四线全双工差分总线,发送与接收各自独立,典型速率从 100 kbps 到 10 Mbps,点对点或一主多从,线长与速率成反比。RS-485 是两线半双工差分总线,同一对线分时收发,支持多点,共模范围约 -7 V 至 +12 V,常用于设备级低速控制。驱动集成时,RS-422/485 通常通过 UART 控制器加外部收发器实现,软件需要控制收发方向引脚(RS-485 的 DE/RE),并处理半双工下的回显与冲突。

ARINC 429 是单向、点对多点的双绞线总线,采用双极性归零码,速率固定为 12.5 kbps 或 100 kbps,一条总线只允许一个发送端、最多 20 个接收端。它的物理层简单、确定性强,驱动通常只需配置发送 FIFO 和接收 FIFO,并关注标签(Label)与奇偶校验。ARINC 629 则采用更复杂的载波侦听多路访问/冲突避免机制,物理层为屏蔽双绞线,速率 2 Mbps,支持多发送端,但协议复杂、成本高,实际驱动集成中较少见。

MIL-STD-1553B 是命令/响应式双冗余总线,物理层为屏蔽双绞线,速率 1 Mbps,采用曼彻斯特 II 编码。总线控制器(BC)发起命令,远程终端(RT)响应,总线监视器(BM)监听。驱动需要处理双冗余通道切换、状态字、命令字和消息间隔。CAN 是差分两线总线,速率从 10 kbps 到 1 Mbps,采用非破坏性位仲裁,节点数受电气负载限制。AFDX 基于以太网物理层,100 Mbps 全双工,使用虚拟链路(VL)和带宽分配间隔(BAG)实现确定性,驱动需要配置 VL 表、完整性检查与冗余管理。

数据链路层:寻址、仲裁与错误处理

RS-422/485 本身没有标准数据链路层,通常由上层协议定义帧头、地址和校验。驱动集成时,往往需要自行实现字节流分帧、超时重传和 CRC 校验。ARINC 429 的数据链路层以“字”为基本单位,每个字 32 位,包含 8 位标签、2 位源/目的标识、19 位数据、2 位符号/状态和 1 位奇偶校验。驱动按标签过滤,按速率节拍收发,错误处理主要依赖奇偶校验和字间隔。

ARINC 629 的数据链路层采用“隐式令牌”与“载波侦听”结合,每个终端有独立时隙,帧包含前导、起始定界、数据、CRC 和结束定界。MIL-STD-1553B 的数据链路层由命令字、数据字和状态字组成,命令字定义 RT 地址、发送/接收方向和子地址,状态字反馈 RT 状态。驱动需要维护命令队列、超时计时器和错误计数器。CAN 的数据链路层包含标准帧和扩展帧,采用 11 位或 29 位标识符,位仲裁决定优先级,CRC 和应答槽保证可靠性。AFDX 的数据链路层在以太网帧上封装 VL 标签,使用序列号、冗余通道和完整性检查,驱动需要处理 VL 调度和冗余合并。

帧格式对比:从字段到驱动操作

把六种总线的帧格式放在一起看,驱动集成的差异就非常直观。RS-422/485 没有固定帧,驱动按字节流处理;ARINC 429 是固定 32 位字,驱动按标签和速率收发;ARINC 629 是可变长帧,驱动需解析前导和 CRC;MIL-STD-1553B 是命令/数据/状态三字组合,驱动需按命令字驱动状态机;CAN 是短帧,驱动需处理标识符过滤和邮箱;AFDX 是以太网帧加 VL 标签,驱动需配置 VL 表和 BAG。

六种航电串行总线:物理层 / 数据链路层 / 帧格式对比 总线类型 物理层特征 数据链路层机制 帧格式要点 驱动集成关注点 RS-422/485 差分,多点/点对点 四线全双工 / 两线半双工 100 kbps ~ 10 Mbps 共模 -7V ~ +12V 无标准链路层 上层自定义帧头/地址/CRC 字节流分帧 无固定帧格式 按字节流处理 超时重传 + CRC UART + 收发器 DE/RE 方向控制 半双工回显处理 ARINC 429 单向,点对多点 双绞线,双极性归零码 12.5 / 100 kbps 1 发 ≤ 20 收 固定 32 位字 标签过滤 + 速率节拍 奇偶校验 8 位标签 + 2 位 SDI 19 位数据 + 2 位 SSM 1 位奇偶校验 发送/接收 FIFO 标签过滤表 字间隔与奇偶错误 ARINC 629 多发送端,2 Mbps 屏蔽双绞线 2 Mbps 载波侦听 + 冲突避免 隐式令牌 + 时隙 前导 + 起始定界 CRC + 结束定界 可变长帧 前导/定界/数据/CRC 终端独立时隙 时隙调度 前导/CRC 解析 协议复杂,集成成本高 MIL-STD-1553B 命令/响应,双冗余 屏蔽双绞线 1 Mbps 曼彻斯特 II 编码 BC 发起,RT 响应 命令字/数据字/状态字 BM 监听 命令字:RT 地址/方向/子地址 数据字:16 位 状态字:RT 状态反馈 双冗余通道切换 命令队列 + 超时计时 错误计数器 CAN 差分两线,多主 差分两线 10 kbps ~ 1 Mbps 非破坏性位仲裁 标准帧 11 位 ID 扩展帧 29 位 ID CRC + 应答槽 短帧,最多 8 字节数据 标识符决定优先级 位填充与错误帧 邮箱/过滤器配置 标识符过滤 错误帧与总线关闭 AFDX 以太网,确定性 以太网物理层 100 Mbps 全双工 双冗余通道 虚拟链路 VL BAG 带宽分配间隔 完整性检查 + 冗余管理 以太网帧 + VL 标签 序列号 + 冗余通道 IP/UDP 封装 VL 表配置 BAG 调度 冗余合并与序列检查 驱动集成核心:先看物理层拓扑与速率,再看链路层寻址与仲裁,最后按帧格式拆字段、判错误、做冗余

驱动集成中的实际判断

以 ARINC 429 为例,假设某航电计算平台需要接收一条 100 kbps 的标签 0x203 数据。驱动初始化时,先配置接收 FIFO 的标签过滤表,只允许 0x203 通过;然后设置接收中断,当 FIFO 非空时读取 32 位字。读取后,驱动检查奇偶校验位,若错误则丢弃并计数;若正确,则提取 19 位数据、2 位 SSM 和 2 位 SDI,按上层定义转换为工程值。整个过程不需要复杂的仲裁,但必须保证字间隔和速率匹配,否则会丢字。

再看 MIL-STD-1553B 的驱动集成。BC 端需要构造命令字,指定 RT 地址、子地址和发送/接收方向,然后写入发送 FIFO。RT 端收到命令后,根据子地址从本地内存取数据,填入数据字,并返回状态字。驱动需要维护一个命令队列,按消息间隔(通常 4 μs 以上)发送下一条命令,同时监听状态字中的错误位。若状态字指示“消息错误”,驱动应记录并触发重试或切换冗余通道。双冗余通道的切换通常由硬件自动完成,但驱动需要读取通道状态寄存器,确认当前使用哪一路。

CAN 的驱动集成则更接近通用嵌入式开发。以标准帧为例,驱动配置邮箱为发送或接收模式,设置 11 位标识符和掩码。发送时,将数据写入邮箱并置位发送请求;接收时,中断服务程序读取邮箱,检查标识符是否匹配,然后拷贝数据。若总线出现错误,驱动应读取错误计数器,判断是主动错误还是被动错误,必要时进入总线关闭恢复流程。AFDX 的驱动集成更复杂,需要配置 VL 表,指定 VL ID、BAG、最大帧长和冗余通道;发送时按 BAG 调度,接收时检查序列号和完整性,并合并两路冗余数据。

集成提示:物理层决定“能不能连”,数据链路层决定“怎么连”,帧格式决定“连上后怎么读”。在驱动开发前,先确认总线速率、拓扑和帧结构,再选择对应的控制器和收发器,可以避免大部分底层兼容性问题。

对比总结与选型参考

从驱动集成难度看,RS-422/485 最简单,但需要自行处理分帧和方向控制;ARINC 429 次之,固定字长和标签过滤使驱动逻辑清晰;CAN 居中,邮箱和过滤器配置成熟,但错误处理需要细致;MIL-STD-1553B 较复杂,命令/响应状态机和双冗余切换是重点;AFDX 最复杂,VL 表、BAG 调度和冗余管理需要完整协议栈支持;ARINC 629 由于协议复杂且应用较少,驱动集成通常依赖专用 IP 或成熟模块。

在实际航电计算平台中,选择哪种总线往往由系统架构决定,但驱动集成人员必须理解每种总线的物理层约束、链路层机制和帧格式细节。只有把这三层对应起来,才能在寄存器操作、中断处理和错误恢复中做出正确判断,保证数据收发的确定性和可靠性。