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 错误
  • 位填充错误
  • 应答错误
  • 位发送错误
  • 格式错误

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

错误帧

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 自动注入失败的原因

问题 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type com.sveinn.chatbotdomain.zsxq.service.ZsxqApi available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {ja…

QtCreator配置代码字体和颜色

文件路径 默认配色方案 This XML file does not appear to have any style information associated with it. The document tree is shown below. <style-scheme version"1.0" name"Default"> <style name"Text" foreground"#000…

Matlab信号处理:FFT频谱分辨率

频谱分辨率&#xff1a; 其中为采样间隔&#xff0c;为采样点数。 FFT分辨率&#xff1a; 其中为采样频率&#xff0c;为FFT点数。 有两正弦函数&#xff0c;频率分别为 f1 1Hz&#xff0c;f2 10Hz&#xff0c;f3 40Hz&#xff1b; 示例1&#xff1a; 采样频率 fs 1000H…

MySQL进阶篇3-视图和存储过程以及触发器的学习使用

视图/存储过程&#xff08;函数&#xff09;/触发器 视图&#xff1a;由表动态生成&#xff0c;虚拟的表&#xff0c;保存的是sql的逻辑。 创建视图&#xff1a; ​ create [or replace] view viewName【列名列表】 as select 语句 [with [cascaded|local] check option] 修…

国外发达国家码农是真混得好么?

来看看花旗工作十多年的码农怎么说吧! 美国最大的论坛 Reddit&#xff0c;之前有一个热帖&#xff1a; 一个程序员说自己喝醉了&#xff0c;软件工程师已经当了10年&#xff0c;心里有 好多话想说&#xff0c;“我可能会后悔今天说了这些话。”他洋洋洒洒写了 一大堆&#xff…

【Node.js】数据库配置与操作、Session实现原理、JWT实现原理:

文章目录 一、数据库配置与操作【1】 数据库的基本操作【2】 使用 mysql 模块操作 MySQL 数据库 二、Session实现原理【1】HTTP 协议的无状态性【2】Cookie【3】Session 的工作原理【3】在 Express 中使用 Session 认证 三、JWT实现原理【1】JWT 的工作原理【2】JWT 的组成部分…

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现 文章目录 1\. 伙伴系统的核心数据结构2\. 到底什么是伙伴3\. 伙伴系统的内存分配原理4\. 伙伴系统的内存回收原理5\. 进入伙伴系统的前奏5.1 获取内存区域 zone 里指定的内存水位线5.2 检查 zone 中剩余内存容量…

powerDesigner 的基本使用

打开powerDesigner 新建 PDM(物理数据模型) 添加表字段 双击表&#xff0c;设置ID自增 选择导出数据库表SQL 导出成功 使用三方工具连接数据库&#xff0c;然后运行对应SQL文件即可 导入SQL文件数据到powerDesigner

如何用Postman做接口自动化测试

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完…

Kafka 集群与可靠性

文章目录 Kafka集群的目标Kafka集群规模如何预估Kafka集群搭建实战Kafka集群原理成员关系与控制器集群工作机制replication-factor参数auto.leader.rebalance.enable参数 集群消息生产可靠的生产者ISR&#xff08;In-sync Replicas&#xff09;使用ISR方案的原因ISR相关配置说明…

python pycharm 下载 安装 自(1)

pycharm 官网 JetBrains: 软件开发者和团队的必备工具 python 官网 Python Release Python 3.11.5 | Python.org 软件安装 因为python需要借助pycharm所以需要安装 下边截图是重要的部分 pycharm python 终端安装 然后进行全局配置 打开pycahrm 可以在扩展里边搜索中…

docker安装es docker安装Elasticsearch windows linux

下载Elasticsearch和Kibana镜像docker pull elastic/elasticsearch:8.8.2 docker pull elastic/kibana:8.8.2 2. 设置max_map_countwindows&#xff1a; wsl -d docker-desktop sysctl -w vm.max_map_count262144 exit linux&#xff1a;cat /proc/sys/vm/max_map_count sys…

51单片机项目(13)——基于51单片机的智能台灯protues仿真

本次设计&#xff0c;使用protues软件进行仿真&#xff0c;详情如下&#xff1a; 1.输入部分:由热释电红外传感器、光敏传感器、超声波测距传感器所构成的子电路组成。 2.输出模块:由1602液晶显示及其蜂鸣器报警系统组成。 3.中央处理器:主要有AT89C52单片机构成。 4.工作过…

【Linux】进程控制

目录 一、进程创建初识fork函数fork函数返回值写时拷贝fork常规用法fork调用失败的原因 二、进程终止进程退出场景进程常见退出方法_exit函数与exit函数 三、进程等待进程等待必要性进程等待的方法waitwaitpid 获取子进程status非阻塞等待测试 四、进程程序替换替换原理替换函数…

Python WEB框架FastAPI (二)

Python WEB框架FastAPI &#xff08;二&#xff09; 最近一直在使用fastapi&#xff0c;随着使用的深入发现我对于它的了解还是太少了&#xff0c;以至于踩了一些坑。所以在这里记录一下&#xff0c;愿看到的小伙伴不迷路。 路径传参并发问题 一、路径传参 这是对上一个传参…

数字化管理新革命,AI数字人CEO登场引领变革!

王一博老板乐华娱乐CEO杜华推出了她的双生数字人华华子&#xff0c;专门替自己直播卖货。在没有任何宣传的情况下&#xff0c;仅仅在短短的10分钟直播时间内&#xff0c;观众人数就飙升至30万人&#xff01;同时&#xff0c;“杜华AI华华子直播”更是迅速登上了微博热搜榜。这一…

【Mysql】数据库第四讲(表的增删改查操作 超全面 附实操案例)

表的查询 1.Create 表的创建1.1单行插入多行插入1.2替换 2.Retrieve 读取2.1全列查询2.2指定列查询2.3查询字段为表达式2.4为查询结果指定别名2.5结果去重2.6WHERE条件2.7结果排序2.8筛选分页结果 3.Update更新案例 4.Delete删除案例截断表插入查询结果 5.聚合函数 1.Create 表…

Intellij idea 2023 年下载、安装教程、亲测可用

文章目录 1 下载与安装IDEA2 常用设置设置 Java JDK 版本自动导入包、移除包IDEA 自动生成 author 注释签名java.io.File 类无法自动提示导入&#xff1f;高亮显示与选中字符串相同的内容IDEA 配置 MavenIDEA 连接 Mysql 数据库 3 参考文章 1 下载与安装IDEA 首先先到官网下载…

centos设置固定ip

ip addr查看是哪张网卡我这里是 编辑 设置

【flutter】架构之商城main入口

架构之商城main入口 前言一、项目模块的划分二、入口main的配置三、配置文件怎么做总结 前言 本栏目我们将完成一个商城项目的架构搭建&#xff0c;并完善中间的所有功能&#xff0c;总页面大概200个&#xff0c;如果你能看完整个栏目&#xff0c;你肯定能独立完成flutter 项目…