CAN总线工作原理第一课

从零掌握CAN总线核心技术:差分信号原理、仲裁机制、错误处理、布线规范与故障诊断

立即开始学习 →

课程导论:为什么你需要学习CAN总线?

年,全球超过95%的新能源汽车80%的工业控制设备100%的高端工程机械均采用CAN(Controller Area Network)总线作为核心通信架构。从特斯拉的电池管理系统(BMS)到高铁的牵引控制系统,从医疗监护仪到智能制造产线,CAN总线已成为现代嵌入式系统不可或缺的“神经网络”。

然而,许多工程师在实际项目中频繁遭遇以下问题:

这些问题的根源,往往不在于硬件选型或PCB布局,而在于对CAN总线工作原理第一课的理解存在盲区。本课程将从物理层、数据链路层、应用层三个维度,结合真实工程案例,系统性拆解CAN总线的通信机制与故障诊断逻辑。

本课程特色:拒绝“API调用式教学”,从CAN协议规范(ISO 11898-1/2/3)出发,结合示波器实测波形、逻辑分析仪抓包数据、故障注入实验,带你真正理解“为什么”而非“怎么做”。

学习路径概览

  1. 物理层解密:差分信号原理、CANH/CANL电压摆幅、隐性/显性电平定义
  2. 帧结构剖析:数据帧、远程帧、错误帧、过载帧的详细构成
  3. 位时序与同步:位时间划分、采样点设置、传播延迟补偿
  4. 仲裁机制:非破坏性位仲裁、ID优先级判定、典型死锁场景复现
  5. 错误处理机制:位错误、位填充错误、形式错误、应答错误的检测与恢复
  6. 工程实践指南:布线规范、终端电阻配置、电平转换器选型、故障诊断流程

核心原理:CAN总线的三大支柱

CAN总线并非简单的“串口升级版”,其设计哲学源于对工业现场电磁干扰(EMI)与实时性要求的极致平衡。理解以下三大支柱,是掌握CAN总线工作原理第一课的关键。

非破坏性位仲裁机制

CAN采用“线与”逻辑(Wired-AND)实现多主通信。当多个节点同时发送数据时,高位ID优先的节点继续发送,低位ID节点主动退出竞争——这一过程不会丢失任何数据帧,因此称为“非破坏性仲裁”。

? 示例:ID优先级判定

假设节点A发送ID=0x123(二进制:0001 0010 0011),节点B发送ID=0x124(二进制:0001 0010 0100)。在第10位(从右往左数,最低位为第0位),节点A发送“0”,节点B发送“1”。由于CAN总线是“线与”,物理层读取到的是“0”,因此节点B检测到自身发送的“1”与总线上的“0”不一致,判定仲裁失败,立即停止发送,等待总线空闲后重试。

? 提示:ID越小,优先级越高!

⚠️ 常见误区

许多工程师误以为“ID小=数值小=优先级高”,但实际比较的是“从起始位开始第一个不同位的逻辑值”。例如:ID=0x7FF(111 1111 1111)的优先级远低于ID=0x000(000 0000 0000),因为0在显性位(Dominant)上具有更强的驱动能力。

? 工程建议:关键控制帧使用小ID,状态上报帧使用大ID。

显性/隐性电平定义

CAN总线使用差分信号传输数据,其电平定义如下:

关键特性:当总线同时存在显性与隐性位时,物理层始终读取为显性位(即“线与”逻辑)。这使得多个节点可安全地并联在总线上,且不会因冲突导致硬件损坏。

为什么显性位能覆盖隐性位?因为显性电平由CAN控制器主动驱动(推挽输出),而隐性电平仅由终端电阻维持(高阻态)。这就像两个水龙头汇入同一管道,开启水龙头(显性)必然压过自然水流(隐性)。

位时序与同步机制

CAN的位时间(Bit Time)被划分为4个段:

段名作用典型值
同步段(SJT)确保节点采样点对齐1Tq
传播段(PTS)补偿信号传播延迟1-8Tq
相位段1(PBS1)采样点前缓冲5-16Tq
相位段2(PBS2)采样点后缓冲2-8Tq

采样点位置 = SJT + PTS + PBS1,通常设置在位时间的70%~80%处,以避开信号上升/下降沿的抖动区域。

? 实测案例:采样点偏移导致通信失败

某客户项目使用STM32F407驱动TJA1050,配置波特率500kbps。示波器测量显示:采样点位于位时间的65%处,导致在高噪声环境下误码率上升至10⁻³。将PBS1从6Tq调整为8Tq后,采样点移至75%,误码率降至10⁻⁶以下。

差分信号:CAN总线抗干扰的基石

CAN总线采用双绞线(CANH与CANL)传输差分信号,其核心优势在于:

? 显性电平差分电压实测

使用示波器差分探头测量TJA1050输出端:

  • 标准显性位:CANH - CANL = 2.0V ± 0.2V
  • 最小可识别差分电压:0.5V(ISO 11898-2规定)
⚠️ 若差分电压低于0.5V,节点将无法正确识别位值!

? 故障诊断:差分电压异常排查

当差分电压为0V时,可能原因:

  • 总线短路(CANH与CANL短接)
  • 终端电阻开路(120Ω电阻失效)
  • 收发器供电异常(如5V/3.3V缺失)
  • 节点过多导致驱动能力不足(总线负载≤32个节点)

双绞线布线规范

为最大限度发挥差分信号优势,必须遵守以下布线原则:

  1. 等长走线:CANH与CANL长度差≤1mm,避免共模转差模转换
  2. 避免跨分割
  3. 远离干扰源:与高速信号线(如USB、HDMI)间距≥20H(H为走线到参考平面距离)
  4. 终端电阻位置:总线首尾各一个120Ω电阻,严禁在中间节点添加
// 典型CAN收发器连接电路(TJA1042) // VCC = 5V, GND = 地 // CANH/CANL → 连接到双绞线 // S(Silent)引脚:接地 = 普通模式;悬空 = 低功耗模式 // STB(Standby):接地 = 正常工作;接高电平 = 待机

通信时序:从帧结构到位时序的精确配合

CAN协议定义了5种帧类型,其中数据帧(Data Frame)使用最频繁。其标准格式包含以下关键字段:

? 数据帧结构

  • 起始位(SOF):显性位,同步所有节点
  • 仲裁场(Arbitration Field):11位ID + RTR位
  • 控制场(Control Field):IDE + 6位DLC
  • 数据场(Data Field):0~8字节用户数据
  • CRC场:15位CRC + 1位CRC定界符
  • ACK场:2位(ACK槽 + ACK定界符)
  • 结束位(EOF):7位隐性位

⏱️ 位时序关键参数

以500kbps为例:

  • 位时间Tq = 1 / (500kbps × 16) = 0.125μs
  • 总位时间 = 16Tq = 2μs
  • 采样点 = (1 + 4 + 8)Tq / 16Tq = 75%
? 公式:波特率 = 1 / (N × Tq),N为位时间Tq数量(通常8~25)

位填充(Bit Stuffing)机制

CAN协议要求:连续5个相同电平后,必须插入一个相反电平的位。接收端检测到第6个相同电平时,判定为填充错误。

为什么需要位填充? 为确保接收端能持续进行位同步(Re-synchronization)。若发送长串0或1,接收端时钟可能漂移导致采样点偏移。

填充错误的典型场景:当节点A发送连续6个显性位(如CRC域之后),但节点B因噪声干扰误判为6个隐性位,将触发填充错误帧,导致整个帧被丢弃。

时序故障诊断流程图

步骤1

测量总线空闲电压:CANH=2.5V, CANL=2.5V → 正常(隐性电平)

步骤2

抓取数据帧波形:检查SOF后是否满足位时间要求(如500kbps=2μs/位)

步骤3

验证采样点位置:示波器光标测量,应位于位时间70%~80%区间

步骤4

检查填充位:逻辑分析仪观察数据场是否存在连续6个相同位

总线访问:错误帧与重传机制

CAN的错误处理机制是其高可靠性的核心保障。当检测到错误时,节点会主动发送错误标志(6个连续显性位),强制其他节点进入错误状态,从而暂停发送并重传数据。

类错误类型

• 位错误(Bit Error)

发送节点在采样点读取到与自身发送不一致的位值(如发送0但读到1)

• 位填充错误(Stuff Error)

接收端检测到第6个连续相同电平位

• 形式错误(Form Error)

固定格式字段中出现非法位(如ACK槽应为显性但为隐性)

• 应答错误(Ack Error)

发送节点未在ACK槽期间检测到显性位(即无节点应答)

错误状态与总线关闭

每个CAN控制器维护两个计数器:

  • TEC(Transmit Error Counter):发送错误计数器
  • REC(Receive Error Counter):接收错误计数器
错误状态TEC/REC阈值行为
错误活动(Error Active)<128发送错误标志(6显性+8隐性)
错误被动(Error Passive)≥128发送错误标志(6隐性)
总线关闭(Bus Off)≥256完全停止发送,需软件复位

总线关闭恢复策略:当TEC≥256时,节点进入Bus Off状态。此时需通过软件触发CAN控制器复位(写CAN_MCR寄存器的INRQ位),并等待128次11位隐性帧(约1.28ms)后自动恢复。

重传机制与实时性保障

CAN不依赖ACK确认重传,而是通过“发送-监听”机制实现自动重试:

  1. 节点发送一帧后,持续监听总线
  2. 若在ACK槽未检测到显性位(无应答),自动重发
  3. 重试次数由TEC计数器控制,最多128次
  4. 若仍失败,则进入错误被动状态

这种机制确保了关键控制帧(如刹车信号)在总线拥堵时仍能优先重传,满足汽车电子ASIL-C级功能安全要求。

工程应用:从设计到故障诊断

理论知识需结合实践才能发挥价值。以下从硬件设计、软件配置、故障诊断三个维度,提供可直接落地的工程指南。

硬件设计 checklist

  • 收发器选型:汽车级(-40℃~125℃)推荐TJA1050/TJA1042;工业级可用SN65HVD230
  • 终端电阻:总线两端各120Ω(并联后等效60Ω),严禁中间节点添加
  • 保护器件:TVS管(如SMAJ24A)并联在CANH/CANL与GND之间,防浪涌
  • 电源去耦:收发器VCC引脚就近放置0.1μF陶瓷电容 + 10μF钽电容
  • 地线隔离:若系统存在强干扰,可采用光耦隔离(如HCPL-4531)+ 局部电源隔离

? 布线案例:新能源汽车BMS通信

某BMS系统采用菊花链结构连接16节电芯监测芯片(如BQ76PL455),CAN总线长度≤2m,使用屏蔽双绞线(STP),屏蔽层单端接地。实测差分电压:显性位2.1V,隐性位0V,信号上升时间<150ns,满足500kbps传输要求。

? 故障诊断工具推荐

  • 示波器:必备差分探头(如RP6100),带宽≥100MHz
  • 逻辑分析仪:支持CAN协议解码(如Saleae Logic Pro 16)
  • CAN分析仪:PCAN-USB、CICEDRON CAN-SPY
  • 故障注入器:CANoe + CANoe.Diag(模拟总线短路/断线)

软件配置要点

以STM32 HAL库为例,关键配置参数:

// CAN初始化配置(500kbps, 16MHz晶振) hcan1.Init.Prescaler = 10; // 16MHz / 10 = 1.6MHz (1Tq = 0.625μs) hcan1.Init.TimeSeg1 = CAN_BS1_8Tq; // PBS1 = 8Tq hcan1.Init.TimeSeg2 = CAN_BS2_3Tq; // PBS2 = 3Tq hcan1.Init.SJW = CAN_SJW_1Tq; // SJT = 1Tq // 采样点 = (1+8)/(1+8+3) = 75%

典型问题:波特率协商失败

当两个节点波特率配置不一致时(如一方500kbps,另一方250kbps),将导致:

  • 接收节点无法正确解析帧结构
  • 应答错误(ACK Error)频发
  • 总线进入错误被动状态

解决方案:使用CANoe测量各节点波特率,或通过逻辑分析仪抓取SOF后前10位,对比位时间差异。

◆ 最新
heat exchanger 工作原理-热交换器工作原理贴吧二维码防删图原理-二维码防删图原理airpods定位的原理-Airpods 定位核心原理液晶屏工作原理及维修-液晶屏原理维修太阳能水位探头工作原理-太阳能水位探头工作原理直升机推进原理-直升机推进原理马自达cx8四驱工作原理-马自达 CX8 四驱工作原理v锥流量计原理动画-v 锥流量计原理动画可控硅控制电加热原理-可控硅电加热原理汽车手刹原理和保养-汽车手刹原理与保养明矾净水的原理方程式-明矾净水原理方程式微波双平衡混频器原理-微波双平衡混频器原理光伏发电原理讲解视频-光伏发电原理讲解视频蜂窝活性炭的吸附原理-活性炭吸附原理九阳电磁炉原理图 下载-九阳电磁炉原理图真空感应熔炼炉原理-真空感应熔炼原理安卓操作系统原理-安卓系统工作原理污水提升器原理-污水提升器工作原理车胎自补液原理-轮胎自补原理低失真音频电路原理-低失真音频电路原理vr原理详解-VR 原理详解初级抗阻动作及原理-初级抗阻动作与原理天然气锅炉原理介绍-天然气锅炉工作原理飞梭旋钮原理动画演示-飞梭原理动画演示非开挖钻机工作原理-非开挖钻机工作原理5mt变速箱工作原理-5MT 变速箱工作原理自动温度控制器原理图-自动温控器原理图光伏发电原理自制方法-自制光伏发电原理橡胶磨损原理-橡胶磨损基本机制zookeeper原理解析-zk 原理深度解析药代动力学实验原理-药代动力学实验原理喉咙异物感是什么原理-异物感源于咽喉黏膜牵拉充电芯片原理-充电芯片工作原理水表的结构和工作原理-水表结构与工作原理垃圾清理船的工作原理-垃圾清理船工作原理换热芯体原理-换热芯体工作原理热熔胶喷胶机原理-热熔胶喷胶机工作原理超声波塑胶熔接机原理-超声波塑胶熔接机原理荧光探针的原理-荧光探针原理简介qpcr原理详解-qpcr 原理详解法老之蛇实验原理-法老蛇实验原理短路保护工作原理-短路保护工作原理解真空回流焊的工作原理-真空回流焊工作原理真石漆喷涂机原理-真石漆喷涂机工作原理M2210的原理图设计图像处理器的工作原理-图像处理器工作原理精油的作用原理是什么-精油作用原理解析快排阀原理图解-快排阀原理图解话费慢充原理-话费慢充原理详解离心式过滤器原理图-离心过滤器原理图灭蚊器是什么原理-灭蚊器工作原理洗涤沉淀操作原理-洗涤原理与沉淀方法法士特取力器原理-法士特取力器工作原理气垫船原理与设计-气垫船原理与设计电子秤原理电路图-电子秤原理电路图电动机的原理与维修-电动机原理与维修作用式调压器工作原理-作用式调压器原理尼瑞克戒烟贴原理-尼瑞克戒烟贴原理无边泳池原理-泳池原理无边3d风扇原理图-3D 风扇原理图电动三通阀工作原理图-电动三通阀工作原理图串激电动机工作原理-串激电机工作原理电容原理差压传感器-差压电容传感器原理农用潜水泵原理-农用潜水泵工作原理阴极保护防腐技术原理-阴极保护防腐原理试漏机工作原理图-试漏机原理图str鉴定的原理-STR 鉴定原理介绍灭蚊灯的原理及图解-灭蚊灯原理图解削片机原理图解-削片机原理图解磷灰石定年原理-磷灰石定年原理360隔离沙箱原理-360沙箱隔离原理pcp自动回膛原理图-自动回膛原理图159减肥原理-160 减肥原理汽车刹车系统工作原理-汽车刹车系统工作原理纤磁纤惠减肥原理-纤磁纤惠减重原理(10 字)校园饮水机原理-校园饮水工作原理连杆传动的原理-连杆传动原理简述管壳式换热器原理-管壳式换热原理铜线剥皮机原理-铜线剥皮原理解析空气炸锅原理和微波炉一样吗-空气炸锅原理与微波炉是否相同车牌识别系统原理图-车牌识别系统原理图二向色镜的原理-二向色镜工作原理matlab随机数原理-matlab 随机数原理简化儿童玩具陀螺仪原理-儿童玩具陀螺仪原理铜的辟邪原理-铜制辟邪原理自动控制原理胡寿松ppt-自动控制原理胡寿松 PPT石膏 铸造 原理-石膏铸造原理电动伸缩看台结构原理-电动伸缩看台原理卧螺式离心机工作原理-卧螺离心机工作原理开式冷却塔工作原理-开式冷却塔工作原理总磷在线监测原理-总磷在线监测原理铁丝调直原理-铁丝调直原理风杯式风速表原理-风杯测速仪原理stm32功能板的原理图-stm32 功能板原理图电磁锁原理讲解-电磁锁原理说明晕车药的成分作用原理-晕车药成分及原理镍钯金打线原理-镍钯金打线原理简述蜗卷弹簧机械原理图-蜗卷弹簧原理图冷水机组制冷原理动画-冷水机组原理动画