车载CAN总线【精简速学版】

本文详细介绍了CAN(ControllerAreaNetwork)控制器局域网的基本概念、物理层通信原理、数据帧结构以及数据链路层的细节,包括非破坏性仲裁机制和常见的总线错误类型。
摘要由CSDN通过智能技术生成

更多的资料在个人博客(www.zyx330.xyz)
CANFD基础

CAN 介绍

CAN: 一种控制器局域网,主要目的为减少汽车线束数量、实现多网络大量数据的高速传输需求。
一般细分为动力 CAN、车身 CAN、组合仪表 CAN、诊断 CAN 等。
CAN网络上可挂载多个节点
在这里插入图片描述

CAN物理层

CAN总线特点:
  1. 节点广播式通信
  2. 短帧结构,有效字节8byte
  3. 报文ID越小优先级越高
  4. 非破坏性总线仲裁机制
  5. CRC校验,满足数据传输可靠性需求
  6. 报文仲裁失败或传输错误会启动自动重发机制
  7. 节点出现错误时会自动脱离总线,不影响总线工作
  8. 通信速率1Mbps(距离最长40m)
  9. 通信距离最远10KM(速率5Kbps以下)
  10. 协议对节点数量无限制
  11. CAN节点成本较低,通信介质采用双绞线
CAN物理层通信原理:

CAN收发器的本质是将控制器传来的逻辑电平转为差分电平
Tx:将逻辑数字信号转换为物理信号
Rx:将物理信号转换为逻辑数字信号
关于差分电平,CAN有两种标准,ISO11898(高速)和ISO11519(低速容错)
在这里插入图片描述
CAN编码一般采用
NRZ编码
,相同带宽下NRZ编码方式比曼彻斯特编码信息量更大。
为了确保不受共模信号干扰,CAN采用双绞线以保证电压差值,使得信号解码正常。
在这里插入图片描述

CAN通信流程:

CAN收发器 -> 异步串行通信 -> CAN控制器 -> SPI(同步串行通信)-> MCU
通信正常的必要条件:波特率一致(每秒传输一位的速率一致)
为减少波特率带来的误差,通过信号跳变沿时刻进行同步,将误差累计限制在两个跳变沿。
当总线连续5个相同位时,CAN控制器采用一个填充位插入一个相反位,产生跳变沿,促使波特率同步。
在这里插入图片描述

采样点与位时间:

一个位时间=1/波特率。
同步段:用于同步总线上各节点的,硬同步作用域,产生跳变沿
传播段:用于补偿信号的物理延时
相对缓冲段:采样点设置,重同步作用域

硬同步与重同步:

同步规则:

  1. 一个位时间只允许一种同步方式
  2. 硬同步:发生在同步段(帧起始)
  3. 重同步发生在一个帧的其他位场内,跳变沿在同步段外启用重同步、
  4. SOF到仲裁场有多个节点同时发送情况下,不进行重同步,仲裁结束后再重同步。
终端电阻:

若电路与传输线的特性阻抗不一致会导致线束终端出现阻抗突变,形成反射现象,造成波形振荡。
为减少通信线路反射,避免电平变化导致数据传输错误,一般在采用120Ω的终端电阻。

CAN数据链路层

数据帧结构

CAN分为标准帧和扩展帧,扩展帧最大的优势是扩展报文ID。
在这里插入图片描述
在这里插入图片描述
SOF:帧起始,只有在总线空闲的时候,发送节点才会发送SOF且其他接收节点进行同步
在这里插入图片描述
仲裁段:标准帧和扩展帧的不同(扩展ID)在此体现
在这里插入图片描述
控制段:
在这里插入图片描述
数据段:一般占用8个byte,byte0-byte7。 传输方式分为大端模式和小端模式。
在这里插入图片描述
CRC:校验段
在这里插入图片描述
CRC校验逻辑
在这里插入图片描述
CRC校验算法:
在这里插入图片描述
ACK:应答段
在这里插入图片描述
帧结束:释放总线空闲状态
在这里插入图片描述

常见的总线错误类型

CRC错误:CRC计算值比对有误
位填充错误:传输时违反位填充规则
应答错误:ACK未接收到信号
位发送错误:发送节点发送时检测到总线电平与发送电平不一致
格式错误:传输数据帧格式不合法
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/cf18829276a04072aec6a61642bbdfac.png

非破坏性仲裁机制

本质:在仲裁段,通过线与机制(报文ID越小优先级越高)对报文进行优先级排序,仲裁失败的进入只听模式。
在这里插入图片描述

线与机制

线与:线路的电平状态为0或者1,且0为显性1为隐形,也就是0电平和1电平进行“线与”操作的话会出现0电平(0 & 1 = 0)
本质:报文ID越小优先级越高。将报文ID转为二进制,由高位到低位,依次线与,线与后的总线电平与发送电平不一致则优先级低,即仲裁失败。
在这里插入图片描述

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值