好的,我们来详细介绍一下 CAN总线。
CAN总线 的全称是 控制器局域网总线。它是一种广泛应用于汽车电子、工业自动化以及其他嵌入式和分布式控制系统中的串行通信协议。它最初由德国的博世公司在1980年代为汽车电子系统设计,目的是取代复杂的点对点布线,为汽车内各电子控制单元提供一个高效、可靠且经济的通信网络。
核心目标与设计理念
- 简化布线: 减少汽车内部复杂的点对点连线,降低重量和成本。
- 实时性: 提供可预测的传输延迟(确定性),满足关键控制信号(如引擎管理、刹车、气囊)对时间的严格要求。
- 高可靠性: 在恶劣的电磁环境下确保数据的可靠传输(抗干扰、容错)。
- 多主机操作: 允许多个节点(ECU - 电子控制单元)连接到同一总线上,任何节点都可以主动发起通信(广播或指定接收)。
- 事件驱动: 节点在有信息需要发送时才占用总线,适合数据突发传输。
工作原理
-
物理层:
- 传输介质: 通常使用双绞线(CAN_H 和 CAN_L),有时也使用光缆或无线传输(较少见)。双绞线提供差分信号传输,抗共模干扰能力强。
- 信号表示: 采用差分信号。逻辑“1”(隐性电平):两条线的电压差趋近于0V(通常CAN_H和CAN_L都接近2.5V或电源电压的一半)。逻辑“0”(显性电平):存在明显的电压差(例如CAN_H ≈ 3.5V, CAN_L ≈ 1.5V,差值为2V)。显性电平(0)具有优先权,它能覆盖隐性电平(1)。 这是实现非破坏性仲裁的基础。
- 终端电阻: 总线两端(最远端点)各需接一个120欧姆的终端电阻,用以匹配线路阻抗,消除信号反射。
-
数据链路层:
-
报文帧: CAN总线上的信息以帧为单位进行传输。常见的帧类型有数据帧、远程帧、错误帧、过载帧。其中数据帧用于传输实际数据。
-
数据帧结构 (关键部分详解):
- 起始位: 1个显性位(0),标志帧的开始。
- 仲裁域:
- 标准帧(11位标识符)或扩展帧(29位标识符):标识符代表了信息的优先级和内容含义。数值越小,优先级越高。
- RTR 位: 远程传输请求位,区分数据帧(0)和远程帧(1)。
- 控制域: 包含一个保留位(未来扩展)和4位的数据长度码(DLC),指示数据域的字节数(0-8字节)。
- 数据域: 实际需要传输的用户数据,长度为0-8字节。这是CAN帧的核心载荷。
- CRC域: 循环冗余校验码(15位)和CRC界定符,用于检测传输过程中的位错误。
- ACK域: 确认槽位和界定符。接收节点在收到正确的帧后,在ACK槽位发送一个显性位(0)表示确认。发送节点在隐性位(1)中检测到显性位即表示有节点成功接收。
- 帧结束: 7个连续的隐性位(1),表示帧结束。
-
非破坏性逐位仲裁: 这是CAN协议最核心的特性,确保高优先级信息无延迟传输。
- 当多个节点同时发送时,会从起始位开始,逐个比特比较各自发送的标识符。
- 只要发送的是隐性位(1)的节点监测到总线上出现显性位(0),就立即停止发送并转为接收模式。因为显性位(0)优先。
- 最终,只有发送最高优先级标识符(数值最小)的节点会赢得仲裁,不受干扰地完成整个帧的发送。其他节点在丢失仲裁后会自动等待总线空闲后重试。
- 这个过程是硬件实时完成的,不会因为仲裁失败而损坏任何信息。
-
错误检测与处理: CAN协议提供了强大的错误检测机制:
- 位监控: 发送节点会监控总线电平,确保发送的比特与实际总线上的比特一致。
- 位填充: 在帧起始到CRC序列之前,连续出现5个相同电平的比特后,会插入一个相反电平的填充位。接收方会去除填充位。这可以确保足够的跳变边沿用于时钟同步,同时也有助于检测错误(如出现连续6个相同电平)。
- 帧格式检查: 检测帧中各部分固定格式是否符合标准(如起始位、结束位、界定符)。
- CRC校验: 接收方会用与发送方相同的算法计算CRC值并与接收到的CRC对比。
- ACK缺失: 如果发送节点没有检测到任何接收节点的显性确认位。
- 错误计数器和错误状态: 每个节点有发送错误计数器和接收错误计数器。根据错误发生的频率和类型,节点会从错误主动->错误被动->总线关闭状态转移。总线关闭的节点将无法再收发报文。
-
主要特性总结
- 多主工作方式: 无中心主机,节点地位平等。
- 无破坏性逐位仲裁: 基于标识符优先级仲裁,高优先级报文传输无延迟。
- 实时性强: 具有可预测的响应时间(特别是高优先级信息)。
- 强鲁棒性: 差分信号抗干扰;强大的错误检测和处理机制;节点错误后可自我隔离。
- 报文结构简洁高效: 标识符决定内容而非地址,数据短(≤8字节),开销相对小。
- 广播/组播能力: 数据帧发送到总线,所有节点都可接收(广播),或仅部分节点接收(组播,由标识符隐含定义)。
- 低层协议实现: 由专用硬件CAN控制器处理,减轻MCU负担。
- 灵活性: 可动态增减节点(即插即用),节点数量理论上不受限(受电气负载限制)。
应用领域
- 汽车电子: 最核心的应用领域。 引擎管理、变速箱控制、车身控制(门窗、灯光、座椅)、仪表盘、空调、ABS/ESP、安全气囊、信息娱乐系统等ECU之间的通信。
- 工业自动化: PLC、传感器、执行器、电机驱动器、人机界面的联网控制。
- 医疗器械: 各种医疗仪器设备内部及设备间的通信。
- 航空航天: 飞机内部系统(非关键航电)、卫星子系统通信。
- 楼宇自动化: 照明、空调、安防系统的控制网络。
- 其他: 电梯、轨道交通车辆设备、船舶等。
CAN总线的演进
- CAN 2.0A/2.0B: 定义了标准格式(11位标识符)和扩展格式(29位标识符)。
- CAN FD: 在传统CAN(Classic CAN)基础上发展而来。
- 更快速率: 仲裁阶段(标识符部分)使用传统速率(如500kbps),数据阶段(数据部分)可以切换到更高的速率(如2Mbps或更高)。
- 更大的数据域: 最大数据长度增加到64字节(DLC可表示0-64字节)。
- 改进的CRC校验: 采用更长的多项式(17位或21位)增强长数据的错误检测能力。
- CAN XL: 旨在成为高速、大数据量通信的标准(数据域可达2048字节),目标是融合CAN与以太网的一些优势。
为何如此广泛采用?
- 可靠性经过严苛验证: 在汽车这种电磁环境复杂、安全要求极高的场景中经受住了长期考验。
- 成本效益高: 专用硬件芯片广泛应用,价格低廉;双绞线布线成本显著低于点对点。
- 真正的分布式通信: 多主机、事件驱动机制非常适合设备间交互的场景。
- 确定性与低延迟: 基于优先级的仲裁机制保证了关键信息能及时送达。
- 良好的错误处理: 确保单个节点的故障不会轻易导致整个网络瘫痪。
安全考虑
- 由于CAN最初设计时未充分考虑安全,存在安全隐患:
- 广播特性:报文易被监听。
- 缺乏强加密和认证:报文内容易被篡改、伪造、重放攻击。
- 随着车辆网联化和智能化(如OTA升级、自动驾驶),CAN总线安全日益重要。解决方案包括:
- 使用安全网关隔离关键域与非关键域。
- 部署入侵检测系统。
- 在应用层实现加密和认证(如SecOC)。
- 采用物理隔离。
- 开发下一代具备安全功能的协议(如CAN-XL可能集成安全层)。
总而言之,CAN总线是一种为实时控制设计的、高可靠、多主、基于优先级的串行通信协议,其核心价值在于非破坏性逐位仲裁带来的实时性和强鲁棒性。这使得它在汽车电子和工业控制等关键领域成为不可替代的骨干网络技术,尽管面临新的高速、大数据量、安全需求的挑战,其演进版(CAN FD/CAN XL)仍在持续发展以满足未来需求。
CAN总线错误的类型介绍
在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN节点错误状态,并通过实际的应用测试生成并记录CAN错误。
2022-06-13 16:08:34
虹科干货 | 带你全面认识“CAN总线错误”(一)——CAN总线错误与错误帧
AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN
2022-05-27 10:39:21
关于CAN总线错误的相关知识
在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN节点错误状态,并通过实际的应用测试生成并记录CAN错误。
2022-05-27 17:56:12
CAN总线介绍
CAN 通讯实验CAN 介绍CAN 总线介绍CAN 是Controller Area Network 的缩写(以下称为CAN),中文意思是控制器局域网络,是ISO 国际标准化的串行通信协议。在
迷你洼哇
2021-08-05 06:54:40
介绍CAN总线的相关概念
本文主要简单介绍CAN总线的相关概念,以及通信协议等知识,和使用STM32自带的bxCAN外设进行CAN总线编程实验,以及编程心得。
DH9527
2021-08-19 08:01:12
CAN总线通信原理介绍 CAN总线模块选择指南
于工业自动化、医疗设备、船舶系统等领域。 CAN总线通信原理介绍 1. CAN总线概述 CAN总线是一种多主控制的串行通信协议,它允许多个设备共享同一通信线路,实现数据的实时传输。CAN协议定义了物理层、数据链路层和应用层,其中数据链路层是CAN协议的核心。 2. CAN总线的基本组成 物理
2024-11-21 10:21:51
简单介绍CAN总线的相关概念
基于STM32的CAN总线通信学习笔记本文主要简单介绍CAN总线的相关概念,以及通信协议等知识,和使用STM32自带的bxCAN外设进行CAN总线编程实验,以及编程心得。1. CAN总线简要介绍概念:CAN是控制器局域网络(Controller Area Netwo...
zhongnian
2021-08-19 07:23:37
虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型
AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN
2022-06-09 09:46:53
虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型
AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN
2022-06-02 09:41:24
高速CAN总线和低速CAN总线的特性
高速CAN总线和低速CAN总线的特性 高速CAN总线和低速CAN总线是两种常见的CAN总线类型。它们在数据传输速率、最大电缆长度、适用场景等方面存在一些差异。下面将详尽、详实、细致地介绍这两种CAN
2024-01-31 14:09:01
can总线负载率怎么计算?
工程师们评估网络的性能和可靠性。本文将详细介绍CAN总线负载率的计算方法。 一、CAN总线负载率的定义 CAN总线负载率,指的是在一个特定时间内,总线上发送和接收数据的比率。如果总线的负载率过高,就会导致数据冲突、错误和延迟等问题,最终
2023-09-07 15:05:45
CAN总线共模电感选型
CAN总线共模电感是应用于CAN总线通信中的一种电子元件,用于解决CAN总线通信中的共模干扰问题。本文将详细介绍CAN总线共模电感的定义、作用、选型要点以及常见注意事项,并且结合实际案例进行分析
2024-01-05 13:42:34
CAN总线和电平逻辑介绍
CAN总线 CAN是控制器局域网络的简称,是一种能够实现分布式实时控制的串行通信网络。CAN总线的功能复杂且智能。 CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差
2023-11-09 18:11:50
什么是CAN总线协议?它有哪些特性和应用?
、实时性强、抗干扰能力强等优点,逐渐发展成为现代工业通信的重要标准之一。本文将对CAN总线协议的基本概念、特性、工作原理、应用领域等方面进行详细介绍。
2024-05-27 16:32:17
can总线中断状态什么意思呢?
过程中的中断处理机制。以下是关于CAN总线中断状态的详细介绍。 CAN总线概述 1.1 CAN总线定义 CAN总线是一种基于时间分割的多主通信协议,它允许多个节点在同一个总线上进行通信。CAN总线具有高可靠性、实时性和灵活性等特点,因此在汽车、工业控制等领域得到了广泛应用。
2024-06-16 10:21:37
can总线的故障波形有哪些
详细介绍CAN总线的故障波形及其原因和解决方法。 故障波形概述 故障波形是指在CAN总线通信过程中,由于各种原因导致的数据传输异常。故障波形的类型有很多,主要包括以下几种: 1.1 信号干扰波形 信号干扰波形是指在CAN总线通信过程中,由于外部电磁干扰或其他原因导致的
2024-06-16 10:04:58
虹科干货 | 带你全面了解“CAN总线错误”(三)——CAN节点状态与错误计数器
AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN
2022-06-09 09:46:03
虹科干货 | 带你全面了解“CAN总线错误”(四)——在实践中生成和记录CAN错误
AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN
2022-06-09 10:21:00
CAN总线控制器是什么意思
CAN总线控制器(Controller Area Network Bus Controller)是CAN总线通信系统中的核心部件,它扮演着接收、处理并转发CAN总线数据的关键角色。下面将从CAN总线控制器的定义、功能、结构、工作原理以及应用等方面进行详细阐述。
2024-09-03 14:16:17
CAN总线的特点、原理及应用
CAN总线(Controller Area Network)是一种用于汽车和工业自动化领域的局域网技术,具有实时性、可靠性、灵活性和成本效益等优点。本文将详细介绍CAN总线的特点、原理以及应用。 一
2024-06-16 10:19:53
什么是CAN总线通信?CAN总线工作原理
这意味着变送器通过CAN收发器改变总线电平,并将其信息传输到CAN总线。接收器通过监测总线电平将总线上的信息读取到自己的CAN收发器中。
2024-02-19 14:53:54
CAN总线位时序的介绍
CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。 显性电平对应逻辑 0,CAN_H 和 CAN
2023-10-27 14:55:28
CAN总线特点及FPGA的实现
【科普】CAN总线介绍及FPGA实现方案简介 这里我们先逆推一下CAN总线的一些特点。 第一,CAN总线分层结构 我们根据can总线具有的一些特性可知:CAN总线肯定具有分层结构,而且参考OSI模型
2021-11-18 16:35:55