外观
车载通信网络
约 3343 字大约 11 分钟
2025-08-30
LIN通信
LIN(Local Interconnect Network,区域互联网络),是应用在汽车内零组件之间通讯的串列网络传输协议[1]。
LIN 的拓扑结构为单线总线,应用了单一主机多从机的概念。总线电平为 12V,传输位速率(Bitrate)最高为20kbps。一个 LIN 网络最多可以接 16 个节点,主机节点有且只有一个,从机节点有 1 到 15 个。
LIN的协议层
帧结构
帧(Frame)包含帧头(Header)和应答(Response)两部分。主机任务负责发送帧头;从机任务接收帧头并对帧头所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。
CAN通信
CAN 是“Controller Area Network”的简称,是由德国 Bosch 公司开发的串行通信协议。很多人听到 CAN 时会想到汽车,该协议的开发完成是在 1985 年,而实际用于量产车是在 1990 年。之后在 1994 年由国际标准化组织(ISO)规定为标准规格(ISO11898/ISO11519)。目前已用于几乎所有的汽车上。此外还广泛用于工厂自动化(FA :工厂自动化)等领域。
CAN总线网络

- CAN网络由若干个经物理传输介质(CAN总线-CAN Bus)连接的CAN节点组成。
- CAN网络通常采用线性拓扑结构,每个ECU经CAN接口连接到总线。少数采用星形拓扑。
- 传输介质:
- 非屏蔽双绞线(UTP,UnshieldedTwistedPair)是传输对称信号时最常用的物理传输介质。
- 两条线分别命名为CAN_H,CAN_L,相应的ECU的管脚引线也分别用CAN_H,CAN_L来表示
- 在最高传输速率1Mbit/s的情况下,允许的最大长度是40米为了提高抗干扰能力,在CAN网络的末端,加总线终端电阻(terminationresistor)有助于抑制信号反射现象。
- ISO11898规定CAN节点的最大数量为32。实际上,节点的最大数量在很大程度上取决于CAN收发器的性能以及CAN网络是高速还是低速。实际最高可接110个CAN节点。
CAN的帧类型
数据帧(data frame)
- 作用:传输有效数据和控制信息,是CAN总线中最常用的帧类型。
- 结构:
- 标准帧(CAN2.0A):包含11位标识符(ID)和0~8字节数据域。
- 扩展帧(CAN2.0B):包含29位标识符和0~8字节数据域。
- 组成段:帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束。
远程帧(RemoteFrame)
- 作用:请求其他节点发送特定ID的数据帧(类似"数据查询"功能)。
- 与数据帧的区别:
- 数据段,仅包含标识符。
- 仲裁段末尾的RTR位为隐性电平(数据帧为显性)。
错误帧(Error Frame)
- 作用:当节点检测到总线错误(如CRC校验失败)时,主动发送错误帧通知其他节点。
- 结构:
- 包含错误标志(6位显性或隐性电平)和错误界定符。
- 被动错误节点发送隐性错误标志,避免干扰总线。
过载帧 (Overload Frame)
- 作用:用于流量控制,当接收节点处理不过来时,发送过载帧请求发送方延时发送。
- 触发条件:
- 接收方在帧间隔期间检测到显性电平。
- 通常由硬件自动触发,无需软件干预。
帧间隔(Interframe Space)
- 作用:分隔不同帧,确保总线空闲时间,避免帧间冲突。
- 组成:
- 包含3个隐性电平的"间隔段"。
- 仅在数据帧/远程帧后插入,错误帧和过载帧后无需间隔。
CAN的帧构成
数据帧

仲裁域
仲裁段用于写明需要发送到目的CAN节点的地址、确定发送的帧类型(当前发送的是数据帧还是遥控帧),并确定发送的帧格式是标准帧还是扩展帧。
- ID
- 决定数据内容或发送节点的识别、通信调停[2]优先顺序等。标准格式时为 11 位,扩展格式时为 11 位 +18 位共计 29 位。
- RTR(远程发送请求位)
- 用于识别数据帧与远程帧的“RTR(Remote Transmission Request)”在数据帧时为显性,在远程帧时为隐性。另外,与 ID 一样,也用于通信调停。
控制域
控制字段由 1 位长的“IDE(Identifier Extension)[3]”与保留位“r”、4 位长的“数据长度码(DLC)[4]”构成。
- IDE=0:表示当前帧为标准帧,使用11位标识符(ID)(CAN 2.0A规范)。
- IDE=1:表示当前帧为扩展帧,使用29位标识符(ID)(CAN 2.0B规范)。
数据域
发送数据部分称为“数据字段”。依据 DLC 设定,长度为 0 到 8 字节(0 到 64 位长度),分配的数据由设计者决定。
CRC 校验域
CRC字段是检查帧传输错误的帧,包括:15 个位的 CRC序列(CRC SEQUENCE)和1 个位的CRC界定符(CRC DELIMITER)构成。
- CRC 序列由发送节点运算“SOF”、“ID”、“控制字段”、“数据字段”的发送值,并将结果作为 CRC(Cyclic Redundancy Check)序列进行发送。通过接收节点也进行相同运算,判断是否可正常接收。
- 表示 CRC 序列终止。CRC 序列与 CRC 分隔符统称为“CRC 字段”。
ACK字段
- ACK 间隙判断是否可正常接收包括发送的 CRC 字段在内的数据。
- ACK 分隔符表示 ACK 间隙终止。
帧结束
数据帧终止时发送“EOF(End Of Frame)”,帧结束是由每一个数据帧和远程帧的标志序列界定的,这个标志序列由7个“隐性”位组成。
- ITM不包括在数据帧范围内,标记为“ITM(Intermission)”,在 ITM 后进入总线怠速。在 ITM 仅能发送“过载帧”。
CAN总线访问
❗❗❗总线访问原则
- 总线访问--非破坏性仲裁的载波侦听多路访问/冲突避免CSMA/CA(CarrierSenseMultiple Access with Collision Avoidance)
- 多路访问(MA): 如果总线空闲,则在同一时刻多个节点可同时访问总线(向总线发送数据)
- 冲突避免(CA): 节点在发送数据过程中要不停地检测发送的数据,确定是否与其它节点数据发生冲突,并通过非破坏性仲裁机制避免冲突
- 载波侦听(CS): 总线上各个节点在发送数据前都要侦听总线的通信状态
- 每次一个发送方 总线忙-->不发送数据,等待网络空闲 总线空闲一->立即发送已经准备好的数据
CAN FD
CAN FD (Controller Area Network with Flexible Data-rate)是对传统 CAN (Controller Area Network)协议的升级版本,旨在满足现代汽车和工业应用中对更高带宽和更大数据容量的需求。它在保持与传统CAN 兼容的同时,引入了两项关键改进:更高的传输速率 和 更大的数据段长度。
CAN FD数据帧
| 特性 | CAN | CAN FD |
|---|---|---|
| 数据传输速率 | 固定,最高1Mbps | 灵活,仲裁段≤1Mbps,数据段可达8Mbps |
| 数据段长度 | 最大8字节 | 最大64字节 |
| 帧结构 | 传统帧结构,固定CRC | 改进帧结构,增强CRC |
| 通信模式 | 单一速率 | 双速率(仲裁段+数据段) |
| 兼容性 | 完全兼容传统CAN | 向后兼容传统CAN |
| 应用场景 | 实时性要求高、数据量较小的场景 | 高带宽、大数据量的现代化应用 |
车载以太网
物理层
- 传输介质
- 100BASE-T1 (IEEE 802.3bw):100 Mbps,单对双绞线(节省线束重量)。
- 1000BASE-T1 (IEEE 802.3bp) : 1 Gbps, 支持自动驾驶传感器数据。
- Multi-Gigabit: 如2.5G/5G/10G BASE-T1 (IEEE.802.3ch),满足未来需求。
- EMC/抗干扰:通过回波消除、特殊编码(如PAM3)降低电磁辐射,适应汽车严苛环境。
协议栈
传统以太网协议栈(TCP/IP)在汽车中被裁剪,例如:
- DoIP(Diagnostics overIP):用于诊断(替代CAN诊断)。
- SOME/IP:(Scalable service-Oriented MiddlewarE over IP):面向服务的通信协议,支持自动驾驶功能。
- SOME/IP-SD:基于SOME/IP的服务发现,使得SOME/IP的节点具备发现服务,寻找或停止服务等功能。
- AVB/TSN:(Audio Video Bridging/Time-Sensitive Networking):保障音视频同步和实时性(如车载娱乐系统)。
- UDPNM:是AUTOSAR组织制定的基于汽车以太网的网络管理协议,能够有效的实现车载以太网节点的协同睡眠和唤醒,其主要工作原理类似于AUTOSAR的CAN NM。
SOME/IP
它基于IP 协议,能够充分利用车载以太网的高带宽特性。提供了动态服务发现机制,允许ECU 在运行时动态注册和使用服务。支持多种消息类型(请求/响应、事件通知等),适合复杂的分布式系统。
通常运行在车载以太网上;服务化(ECU可动态发布/订阅服务);可扩展(适应不同带宽需求,从100Mbps到10Gbps);标准化(由AUTOSAR定义,广泛应用于汽车行业)。
核心概念
- 服务(service)
- 在 SOME/IP 中,所有的通信都围绕"服务"展开。每个服务代表一个功能模块,例如导航系统、摄像头数据流、ADAS 控制器等。
- 每个服务都有一个唯一的标识符(ServiceID),用于区分不同的服务。
- 方法(method)
- 方法是服务提供的具体功能,类似于编程语言中的函数调用。
- 方法可以分为两种类型:
- 请求/响应(Request/Response):客户端发送请求,服务器返回响应。
- 无响应(Fire & Forget):客户端发送请求后不需要等待响应。
- 事件(event)
- 事件是一种单向通知机制,用于服务器向客户端发送状态更新或数据流。
- 例如,传感器可以定期发送其采集的数据作为事件。
- 字段(field)
- 字段是对某个变量的封装,支持读取(Getter),写入(Setter)和通知(Notifier)操作。
- 字段结合了方法和事件的功能,提供了一种灵活的数据访问方式。
- 服务发现(ServiceDiscovery,SD)
- SOME/IP 提供了动态服务发现机制,允许客户端在运行时查找和绑定到可用的服务。
- 服务发现通过广播或多播的方式实现,确保网络中的所有节点都能及时获取服务信息。
通信模型
架构
- 服务端(Server):提供服务的ECU(如自动驾驶控制器)。
- 客户端(Client):消费服务的ECU(如仪表盘、HUD)。
通信模式
请求/响应(Request/Response)
客户端向服务器发送请求,服务器处理请求后返回响应。
这是最常见的通信模式,适用于需要明确反馈的场景。
示例:导航系统请求地图数据。
事件通知 (Event Notification)
- 服务器主动向客户端发送事件通知,无需客户端显式请求。
- 适用于实时性要求较高的场景,例如传感器数据流或状态更新。
- 示例:雷达传感器向ADAS 系统发送检测结果。
字段访问(Field Access)
- 客户端可以通过 Getter 和 Setter 访问和修改服务器上的字段值。
- 如果字段值发生变化,服务器会通过Notifier主动通知客户端。
- 示例:空调系统允许用户读取当前温度并设置目标温度。
远程进程控制(Field)
- 访问进程通信机制主要是为了实现针对对应用程序的数据获取与更改,主要任务就是实现客户端通过Getter获取Server的值,通过Setter设置Server的值。
- Field就可理解为一个Service的基本属性,可包含Getter,Setter,Notifier三种方式。其中Getter就是读取Field中某个值的方法,Setter就是一种改变Field值的方法,而Notifier则是一种当Field中的值发生变化的触发事件,发生变化时就通知Client。

报文结构
SOME/IP运行在TCP/IP或UDP/IP之上,其协议栈分层如下:
Application(SOME/IP Payload,如ADAS数据、车身控制指令)
SOME/IP(协议头,包含Service ID、Method ID等)
TCP/UDP(传输层,可靠传输用TCP,低延迟用UDP)
8IP (IPv4/IPv6)(网络层,车载以太网通常用IPv4)
10Ethernet/PHY(物理层,如100BASE-T1/1000BASE-T1)串列网络传输协议(Serial Communication Protocols)是用于设备间串行数据传输的通信标准,广泛应用于嵌入式系统、工业控制、汽车电子等领域。 ↩︎
在CAN总线中,通信调停(Arbitration) 是确保多个节点同时发送数据时,高优先级消息能够无冲突地占用总线的核心机制。其本质是通过非破坏性逐位仲裁实现优先级竞争。 ↩︎
IDE(Identifier Extension)位是用于区分**标准帧(Standard Frame)和扩展帧(Extended Frame)**的关键标志位。 ↩︎
DLC(Data Length Code,数据长度码) 是用于定义CAN帧中**数据域(Data Field)**长度的字段,其值决定了数据域的字节数(0~8字节)。 ↩︎
