通信协议基础:车载网络协议概览

各位好,欢迎来到第二章。这一章我们聊聊车载网络里的那些“话”——CAN、LIN、以太网。说白了,就是座舱里各个设备之间怎么“聊天”。

你想想看,一个座舱域控制器要同时跟仪表、中控、HUD、后排娱乐屏、空调面板、方向盘按键打交道。如果每个设备都各说各的,那不乱套了?所以,我们需要一套统一的“语言规则”,这就是通信协议。

为什么需要多种协议?

有人可能会问:为什么不用一种协议搞定所有?原因很简单——成本和需求不同。

举个例子。车窗升降开关只需要传递“升”或“降”两个信号,数据量极小,用高速协议就是浪费。而仪表盘要显示导航地图、视频流,数据量大,低速协议又扛不住。

所以,车载网络里就形成了“分层搭配”的局面:

  • 低速、低成本:LIN 总线,用于门窗、座椅、灯光
  • 中速、高可靠:CAN 总线,用于动力、底盘、车身控制
  • 高速、大带宽:车载以太网,用于 ADAS、信息娱乐、OTA

核心观点:没有最好的协议,只有最合适的协议。座舱域控制器往往是“多协议交汇点”,你得懂它们各自的脾气。

CAN 总线:车载网络的“老大哥”

CAN(Controller Area Network)是博世在 80 年代发明的,到现在依然是车载网络的中流砥柱。我最早接触 CAN 是在做车身控制模块的时候,那时候觉得这东西真结实——两根线,差动传输,抗干扰能力极强。

CAN 的特点

  • 多主通信:任何节点都可以主动发消息,不需要主机轮询
  • 基于优先级仲裁:ID 越小,优先级越高,总线冲突时自动仲裁
  • 最高速率 1 Mbps(CAN 2.0),CAN FD 可达 8 Mbps
  • 数据帧最多 8 字节(CAN FD 最多 64 字节)

避坑指南:我曾经在一个项目中,CAN 总线莫名其妙丢帧。查了两天才发现,是终端电阻没焊好。记住:CAN 总线两端必须各有一个 120Ω 终端电阻,否则信号反射会导致通信失败。

CAN 数据帧结构

一个标准 CAN 数据帧长这样:

SOF | 11位ID | RTR | IDE | r0 | DLC | 数据段(0-8字节) | CRC | ACK | EOF

嗯,看着有点复杂。但你只需要记住:ID 决定了优先级,DLC 告诉你有几个数据字节。实际开发中,我们更关心的是“ID 怎么分配”和“数据怎么解析”。

LIN 总线:低成本的小弟

LIN(Local Interconnect Network)是 CAN 的简化版。它只有一根线,速率最高 20 kbps。说白了,就是给那些“不着急”的设备用的。

我做过一个项目,用 LIN 控制座椅通风。每个座椅有一个 LIN 从节点,主节点是座舱域控制器。主节点每隔 10ms 发一次查询帧,从节点收到后回复状态。简单、可靠、便宜。

LIN 的特点

  • 单主多从:只有一个主节点,其他都是从节点
  • 基于 UART/SCI:硬件实现简单,成本极低
  • 速率 1~20 kbps:适合开关、传感器、小电机
  • 数据段最多 8 字节

注意:LIN 没有冲突检测机制,所以必须由主节点统一调度。如果从节点擅自发数据,总线会乱。我曾经见过一个团队把 LIN 从节点配成了“主动发送”模式,结果整个网络瘫痪——嗯,那场面挺尴尬的。

车载以太网:新时代的“高速公路”

到了座舱域控制器时代,CAN 和 LIN 就有点不够用了。你想,一个 12.3 英寸的仪表盘要显示 3D 导航,一个 15.6 英寸的中控要播放 4K 视频,后排还有两个娱乐屏在打游戏。这些数据量,CAN 根本扛不住。

所以,车载以太网来了。它基于 BroadR-Reach 技术,一对双绞线就能跑 100 Mbps 甚至 1 Gbps。而且,它用的是 TCP/IP 协议栈,跟互联网世界无缝对接。

车载以太网的特点

  • 高带宽:100 Mbps / 1 Gbps / 2.5 Gbps / 10 Gbps
  • 点对点连接:每个链路都是独立的,不共享总线
  • 支持 TCP/IP:可以跑 HTTP、RTSP、SOME/IP、DDS 等上层协议
  • 轻量化 PHY:BroadR-Reach 技术,线束重量和成本都低于传统以太网

个人经验:我参与过一个项目,座舱域控制器通过车载以太网连接三个显示屏。每个屏独立跑一条 100BASE-T1 链路,视频流用 RTSP 传输,触控反馈用 SOME/IP。调试的时候发现,如果视频流和触控数据共用同一个 VLAN,触控会有延迟。后来把视频流单独划了一个 VLAN,问题就解决了。所以,网络规划很重要。

协议分层模型:把复杂问题拆开

聊完三种协议,我们来说说“分层模型”。为什么需要分层?因为通信这件事太复杂了——从物理信号到应用数据,中间有太多环节。分层之后,每一层只关心自己的事,上层不用管下层怎么传,下层不用管上层传什么。

最经典的是 OSI 七层模型,但在车载领域,我们更常用的是简化的四层模型:

层级 名称 职责 车载示例
第4层 应用层 定义数据含义和交互逻辑 SOME/IP、DDS、UDS
第3层 传输层 端到端可靠传输、流量控制 TCP、UDP
第2层 网络/数据链路层 寻址、帧封装、错误检测 CAN ID、MAC 地址、VLAN
第1层 物理层 电信号、位定时、连接器 CAN 差分对、LIN 单线、100BASE-T1

你看,CAN 和 LIN 其实只覆盖了物理层和数据链路层,应用层需要你自己定义。而以太网覆盖了全部四层,所以它更灵活,但也更复杂。

三种协议的对比

为了方便你快速决策,我整理了一个对比表:

特性 CAN LIN 车载以太网
速率 最高 1 Mbps (CAN FD 8 Mbps) 最高 20 kbps 100 Mbps ~ 10 Gbps
拓扑 总线型 总线型 星型/点对点
通信方式 多主、广播 单主多从、轮询 点对点、全双工
成本 中等 低 高
典型应用 动力、底盘、车身 门窗、座椅、灯光 ADAS、信息娱乐、OTA
座舱中的角色 仪表信号、方向盘按键 座椅控制、氛围灯 多屏视频、音视频流、诊断

本章知识体系

下面这张图,帮你把本章的核心逻辑串起来:

车载网络协议知识体系 座舱域控制器(多协议交汇点) CAN 总线 LIN 总线 车载以太网 多主 / 仲裁 / 高可靠 速率:1 Mbps (CAN FD 8 Mbps) 数据:8 字节/帧 单主多从 / 低成本 速率:最高 20 kbps 数据:8 字节/帧 高带宽 / TCP/IP 速率:100 Mbps ~ 10 Gbps 支持 SOME/IP、DDS 协议分层模型:物理层 → 数据链路层 → 传输层 → 应用层 CAN/LIN 覆盖物理层+数据链路层 | 以太网覆盖全部四层

小结

这一章我们聊了三件事:

  • CAN:可靠、实时、多主,适合控制类信号
  • LIN:简单、便宜、单主,适合低速开关类设备
  • 车载以太网:高速、灵活、分层,适合大数据量传输

在座舱域控制器里,这三种协议往往共存。你可能会遇到:CAN 接仪表和方向盘,LIN 接座椅和氛围灯,以太网接中控和后排娱乐屏。作为系统工程师,你得知道它们各自能干什么、不能干什么,以及怎么让它们协同工作。

一个小建议:刚开始做座舱项目时,别急着写代码。先把通信矩阵画清楚——哪个信号走哪条总线、速率多少、周期多少、ID 怎么分配。这个工作做好了,后面能省 80% 的调试时间。我吃过这个亏,所以特别强调。