当前位置: 首页 > news >正文

CAN - 基础

CAN 基础

  • 概念
    • 分类
    • 特点
    • 物理层
      • 收发器
      • 线与
      • 编码方式
      • 通信方式
        • 采样点/位
      • 常见故障
    • 数据链路层
      • CAN控制器
      • 数据帧
        • 分类
        • 数据帧格式
        • 数据帧DBC解析
        • CRC校验
        • 远程帧
      • 总线竞争与仲裁
        • 非破坏性仲裁机制
      • 节点状态与错误处理机制
        • 节点状态
        • 错误处理机制
        • 错误帧

概念

分类

  • CAN
  • CAN FD
  • 高速CAN
  • 低俗容错CAN

特点

  • 多主通讯 (节点之间 一对一、一对多、多对一、广播等)
  • 短帧结构:报文帧的有效字节有8个
  • 报文ID值越小,优先级越高
  • 非破坏性总线仲裁处理机制
  • 可靠的CRC校验方式,传输数据出错率极低
  • 在报文帧仲裁失败或传输期间被破坏有自动重发机制
  • 节点在错误严重的情况下,具有自动脱离总线的功能,切断它与总线的联系,不影响总线的正常工作

物理层

收发器

数字信号 <–> 物理信号(CAN_H/CAN_L)两者之间的转换采用差分电平信号
属于OSI模型中的物理层

线与

多个CAN节点并介到同一总线时,只要其中一个节点输出低电平,总线就为低电平
当所有节点输出高电平,总线才为高电平

编码方式

通信方式

异步串行通信:采样点按约定的频率采样数据,根据波特率采样

为减少波特率的误差带来的通信错误
解决:CAN总线规定信号的跳变沿时刻进行同步,将误差累积限制在两个跳变沿
问题:发送多个相同位时没有跳变沿用于同步,会导致误差不断累计
解决:使用位填充的方法进行同步:采用填充位在连续5个相同位后插入一个相反位,产生跳变沿,用于同步(这里时CAN控制器自己去填充)

采样点/位

一个位时间=1/波特率
位时间:同步段、传播段、相位缓冲段1、相位缓冲段2
1位时间=10时间份额

  • 同步段:1时间份额
  • 传播段:1时间份额
  • 相位缓冲段1:4时间份额
  • 相位缓冲段2:4时间份额
    一个时间份额:Tq
    采样点:规定在第x个时间份额后进行采样

常见故障

数据链路层

CAN控制器

属于OSI模型中的数据链路层

数据帧

分类

  • 数据帧

发送节点向接收节点传送数据,使用最多

  • 远程帧

接收节点向某个发送节点请求数据(发送节点让另外一个节点反馈数据的时候)

  • 错误帧

当总线、某节点检测出错误时向其他节点通知错误的帧

  • 过载帧

接收节点向发送节点通知自身接收能力的帧

  • 间隔帧

数据帧或远程帧与前面的帧分离的帧

数据帧格式

-

格式

  • 帧起始(1位):显性位SOF,标识一个数据帧的开始,用于同步;只有在总线空闲期间,节点才能发送SOF(在总线空闲的时候,发送节点发出帧起始;其他接收节点从这个帧起始位进行同步(用于减少累计误差))

在这里插入图片描述

  • ID(11位):标识符,唯一确定一条报文,表明报文的含义,可以包括报文的源地址、目标地址;用于确定报文的仲裁优先级(ID数值越小,优先级越高)
  • SRR(1位):无实际意义,SRR永远置1
  • IDE(1位):用于区分标准帧和扩展帧:标准帧IDE=0(11位ID);扩展帧IDE=1(29位ID)
  • extended ID(18位):如果IDE=1
  • RTR位(1位):区分数据帧和远程帧(没有数据场???很少用):数据帧RTR=0; 远程帧RTR=1

在这里插入图片描述

  • r1(1位):保留位,显性电平0填充

  • r0(1位):保留位,显性电平0填充

  • DLC(4位):数据场包含数据的字节数
    在这里插入图片描述

  • 数据场(0-8个字节):实际CAN数据发送的内容

在这里插入图片描述

  • CRC(15位):进行CRC校验,CRC位之前的所有数据位根据一定规则进行校验

  • DEL(1位):CRC界定符,在CRC界定符之前 从SOF开始,到DEL之前进行位填充,显性位电平0
    在这里插入图片描述

  • ACK(1位): 确定报文被至少一个节点正确接收(发送节点ACK置1(隐性电平),接受方正确接收报文,则将ACK位置0(显性电平)),发送节点查看ACK位从以隐性变显性,知道有节点接收数据,如果没有节点接收,则报相应的错误帧

  • DEL(1位):界定符,隐性位电平1

在这里插入图片描述

  • EOF(7位):连续7个隐性位
  • ITM(3位):连续3个隐性位
  • ITM之后,总线会进入空闲状态,此时其他节点可以发送报文,如果节点检测到11个连续的隐性位,就认为总线进入空闲阶段(1+7+3)

数据帧DBC解析

CRC校验

在这里插入图片描述

远程帧

  • 标准帧
  • 扩展帧

在这里插入图片描述
在这里插入图片描述

总线竞争与仲裁

竞争:多个节点同时要发送数据

非破坏性仲裁机制

仲裁发生在仲裁段
采用“线与”机制
ID值越小,优先级越高
仲裁失败进入“只听”模式

在这里插入图片描述

节点状态与错误处理机制

节点状态

  • 主动错误状态

设备正常参与总线通信,检测到错误时发送主动错误标识

  • 被动错误状态

设备正常参与总线通信,检测到错误时发送主动错误标识

  • 总线关闭

数据帧的收发被禁止,脱离总线

在这里插入图片描述
在这里插入图片描述

错误处理机制

  • CRC 错误
  • 位填充错误
  • 应答错误
  • 位发送错误
  • 格式错误

在这里插入图片描述
在这里插入图片描述

错误帧

在这里插入图片描述

相关文章:

  • 网络爬虫-----爬虫的分类及原理
  • 9.19(复习9.18,9.16,9.12)
  • 淘宝天猫商品评论接口
  • Redis——渐进式遍历和数据库管理命令
  • C语言的编译过程详解
  • 【算法新题】TJOI2017-异或和
  • MySQL定时删除XX天数据
  • kubevirt v1.1.0-alpha.0 offline deploy on kubernetes v1.23.17
  • python多进程multiprocessing
  • nodejs 如何在npm发布自己的包 <记录>
  • JavaScript 期约与异步函数的学习笔记
  • 自定义事件的使用
  • 【FAQ】安防监控系统/视频云存储/监控平台EasyCVR服务器解释器出现变更该如何修改?
  • 代理IP与Socks5代理:跨界电商时代的网络安全与数据引擎
  • 测试与FastAPI应用数据之间的差异
  • Spring Boot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较
  • arcgis拓扑检查实现多个矢量数据之间消除重叠区域
  • 小程序自定义tabbar
  • Activiti回退与跳转节点
  • python基础语法(四)
  • 福建一季度GDP为13232.38亿元,同比增长5.7%
  • 全国人大常委会调研组在宁波调研,张庆伟带队钟山易炼红参加
  • 世界读书日丨阅读与行走,都是理解世界的方式
  • GDP增长4.1%,一季度广东经济数据出炉
  • 包邮到高原,跨越4083公里送妈妈一张按摩椅
  • 艺术开卷|近现代中国古代书画东渡日本的历史图景