CAN总线协议详解

2023-05-16

can总线,两条线,CANH和CANL,电位差判断总线电平,采用差分信号,有显性电平和隐形电平。

报文结构:

数据帧:大多数情况下使用的报文结构
从标识符长度上,又可以把数据帧分为标准帧 (11 位标识符 ) 和扩展帧 (29 位标识符 ) 。
数据帧由 7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、 CRC 场、应答场、帧结束。其中,数据场的长度为 0~8 个字节。标识符位于仲裁场中,报文接收节点通过标识符进行报文滤波。

远程帧:用来向某一个节点请求数据
由总线上的节点发出,用于请求其他节点发送具有同一标识符的数据帧。当某个节点需要数据时,
可以发送远程帧请求另一节点发送相应数据帧。与数据帧相比,远程帧没有数据场

错误帧:任何单元,一旦检测到总线错误就发出错误帧

帧起始:由单个显性位组成,总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

帧结束:由7个连续的隐形位组成。

(注:显性电平和隐性电平是相对于CAN_H和CAN_L而言的差分信号电平,并非TTL电平上的高低电平,需要注意)如图2-2所示。

仲裁段:

CAN-bus是如何解决多个节点同时发送数据,即总线竞争的问题?该问题由仲裁段给出答案。

CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级。根据CAN2.0标准版本不同,帧ID分为11位和29位两种。

如图24所示CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对应电平相同,如果不同,则停止发送并做其他处理。

假设节点A、B和C都发送相同格式相同类型的帧,如标准格式数据帧,它们竞争总线的过程是

从该分析过程得出结论是:帧ID值越小,优先级越高;

对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理

控制段

控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合

CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成

ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平

过载帧:

当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成

由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象

帧间隔:

用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。

帧间隔过后,如果无节点发送帧,则总线进入空闲。

帧间隔过后,如果被动错误节点要发送帧,则先发送8个隐性电平的传输延迟,再发送帧。

总线流程图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN总线协议详解 的相关文章

  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • CAN扩展帧详解

    寻址方式
  • RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

    分析一 xff1a 232串口信号 要点 xff1a RS232 xff0c 全双工 xff0c 采用三线制传输分别为TXD RXD GND xff0c 其中TXD为发送信号 xff0c RXD为接收信号 在RS232中任何一条信号线的电压
  • CAN通信讲解(2)——数据帧和遥控帧

    本文注意参考了 CAN入门书 xff0c 源于此书图片不再特殊标注 目录 2 1 帧的种类2 2 数据帧和遥控帧2 3 仲裁过程2 4 各段详解2 5 小结 数据帧和遥控帧格式类似 xff0c 放在一起串讲 2 1 帧的种类 CAN协议帧分
  • c#通过串口及CAN模块实现上位及下位机通讯

    目录 前言 一 串口 CAN总线 二 使用步骤 1 RS232串口通讯 xff08 指令下发与接收 xff09 2 CAN总线通讯 总结 前言 学习及工作中我们经常会遇到上位机与下位机通讯等工作 xff0c 结合场景使用不同的通讯方式实时通
  • CAN总线通信协议详讲

    CAN简介 CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986 年率先提出 此后 xff0c CAN 通过IS
  • 基于NRF24L01的CAN数据透传

    闲谈 xff1a 闲来无聊 xff0c 恰好公司又经常用CAN数据的传输 xff0c 自己觉得要是用无线传送多好 xff0c 然后 xff0c 就是一个奇想 xff0c 就想做一个无线数据的透传 xff0c 恰好身边又有NRF24L01 那
  • CAN 与 CANFD数据报文格式解读

    ISO 11898 1 2015 协议详细定义了CAN网络报文的格式 xff0c 包含了传统CAN与CANFD帧格式 CAN网络的帧类型共有4种 xff0c 分别为数据帧 远程帧 错误帧 过载帧 本章将主要介绍CAN网络数据帧报文的格式 x
  • RT-thread 中CAN总线的应用

    准备 xff1a RT thread Studio 2 2 5 CubeMX 6 6 1 rt thread驱动包 4 0 3 1 新建项目 2 打开CubeMX Settings xff0c 设置CAN 找到CAN1 xff0c 并勾选激
  • kvaser pcie can 在ros中使用socketcan开发

    kvaser pcie can 在ros中使用socketcan开发 0 系统配置 Ubuntu 16 04 6 LTS Linux version 4 15 0 45 generic 1 官网下载地址 https www kvaser c
  • CAN学习笔记3:STM32 CAN控制器介绍

    STM32 CAN控制器 1 概述 STM32 CAN控制器 bxCAN 支持CAN 2 0A 和 CAN 2 0B Active版本协议 CAN 2 0A 只能处理标准数据帧且扩展帧的内容会识别错误 而CAN 2 0B Active 可以
  • STM32F042 CAN使用例子

    代码如下 include mycan h CAN初始化 tsjw 重新同步跳跃时间单元 范围 1 3 CAN SJW 1tq CAN SJW 2tq CAN SJW 3tq CAN SJW 4tq tbs2 时间段2的时间单元 范围 1 8
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • 电池充放电自动测试系统介绍

    电池是国民经济的基础产品 广泛运用在交通运输 通讯 电力 铁路 国防 计算机 应急设备等各个领域 传统电池检测生产方式已经很难满足电池产品的市场需求 那么如何高效快速的进行电池产品的性能检测呢 今天就给大家介绍一款全能型电池测试系统 电池充
  • STM32学习心得三十二:CAN通信基础知识、原理、配置及实验

    记录一下 方便以后翻阅 主要内容 1 CAN通信基础知识 2 STM32 CAN控制器简介 3 相关实验代码解读 参考资料 STM32中文参考手册 V10 第22章 控制器局域网 bxCAN 实验功能 CAN实验需要两个开发板 系统启动后
  • Canoe 安装流程

    硬件 VN5620 软件 CANoe V15 0 软件 Vector License Client 6 2 驱动 Vector Driver Setup license 购买硬件时 vector会分配 参考文档 First Steps to
  • Ubuntu 周立功CAN分析仪 USBCAN-II 驱动

    首先从官网https www zlg cn Index Search search key linux的下载资料界面下载 Linux驱动 USBCAN I I II II 2A I MINI安装驱动 USBCAN II新版驱动基于libus
  • STM32的CAN标识符过滤器超简单理解

    1 STM32中CAN1与CAN2的过滤器组 103系列14个过滤器组 104 107系列28个过滤器组 CAN FilterInitStructure CAN FilterNumber 0 0 13 2 每组过滤器组有两种工作模式 标识符
  • pico示波器使用

    文章目录 Pico示波器保存波形 Pico示波器录制数据 Pico示波器解析CAN报文 Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形 在示波器上选择要保存的波形 连接示波器到计算机上 可以使用USB或者Ethernet连接
  • 功放诊断测试

    1 切换trace显示时间模式 Toggle time mode 2 测seedkey 需要加载seednkey dll 3 功能寻址和物理寻址切换

随机推荐

  • 后台权限管理系统

    项目简介 CommonAdmin是一个按钮级权限管理系统 xff0c 包含企业后台最常用的系统模块 xff0c 代码简洁 xff0c 开箱即用 访问地址 xff1a https gitee com caochenlei common adm
  • 个人博客管理系统

    项目简介 Blog是一款个人博客管理系统 xff0c 是我和同学上学期的期末大作业 xff0c 完成的比较仓促 xff0c 大部分功能已经完成 访问地址 xff1a https gitee com caochenlei blog 主要页面
  • Docker的学习与使用

    目录 第一章 Docker介绍第二章 Docker架构第三章 Docker安装第四章 Docker进程相关命令第五章 Docker镜像相关命令第六章 Docker容器相关命令第七章 Docker容器的数据卷第八章 Docker常见应用部署8
  • Java工程师的进阶之路

    目录 知识点01 xff1a 九大排序算法知识点02 xff1a 二分查找算法知识点03 xff1a 二叉树的遍历知识点04 xff1a Spring IOC知识点05 xff1a Spring AOP知识点06 xff1a Spring
  • 在线代码执行系统

    目录 第一章 安装ubuntu第二章 安装SSH第三章 安装docker第四章 安装docker compose第五章 安装judge0 第一章 安装ubuntu 虚拟机 xff1a VirtualBox 6 1 30 148432 Win
  • TF-IDF

    1 TF IDF是什么 xff1f TF IDF xff1a term frequency inverse document frequency 1 tf idf 作为一种权重经常被用作信息检索和文本挖掘领域 2 这样一种权重时通过统计计算
  • 时间区间拆分算法

    目录 需求描述 xff1a 项目依赖 xff1a 代码实现 xff1a 运行效果 xff1a 需求描述 xff1a 时间范围 xff1a 2022 04 10 09 00 00 2022 04 12 18 00 00 具体描述 xff1a
  • 时间区间合并算法

    目录 需求描述 xff1a 项目依赖 xff1a 代码实现 xff1a 运行效果 xff1a 需求描述 xff1a 时间范围 xff1a 2022 04 10 09 00 00 2022 04 10 10 00 00 2022 04 10
  • 如何排查线上OOM

    目录 操作步骤 xff1a 其他知识 xff1a 操作步骤 xff1a 换目录进行以下操作 xff08 不要在 操作 xff09 span class token builtin class name cd span 安装WGET下载工具
  • 计算饼状图百分比

    目录 需求描述 xff1a 项目依赖 xff1a 代码实现 xff1a 运行效果 xff1a 需求描述 xff1a 给定一个整数数组 xff0c 例如 xff1a 2 3 4 xff0c 计算各个元素的百分比 xff0c 要求百分比累加为1
  • 我是如何解决码云图床失效问题?

    目录 第一章 购买资源包第二章 配置存储桶第三章 上传图片集第四章 替访问域名第五章 配置Typora 第一章 购买资源包 第一步 xff1a 登录阿里云账号第二步 xff1a 访问资源包管理 第三步 xff1a 购买资源包套餐 第四步 x
  • Discord机器人开发

    目录 第一章 Discord账号注册第二章 Discord创建服务器第三章 Discord创建机器人3 1 创建应用3 2 创建机器人3 3 配置机器人3 4 添加机器人 第四章 Discord机器人开发准备4 1 推荐资料4 2 创建工程
  • 如何设计事件管理器

    目录 需求描述 xff1a 项目依赖 xff1a 代码实现 xff1a 定义通用的事件对象定义事件监听器接口定义事件监听器适配器对象定义事件管理器接口定义默认的事件管理器对象创建三个不同的监听器对象 运行效果 xff1a 需求描述 xff1
  • 如何设计缓存中间层

    目录 需求描述 xff1a 工程结构 xff1a 截图代码 工程配置 xff1a pom xmlapplication yml 缓存配置 xff1a CacheConfigCacheBaseCachePolicy 如何使用 xff1a Us
  • Ubuntu中解决无法识别外接显示屏

    解决Ubuntu中无法识别外接显示屏 1 检查Ubuntu是否识别出外接显示器2 解决没有识别出外接显示器问题3 显示器扩展屏幕设置 新买了一个显示器 xff0c 通过HDMI连接电脑后 xff0c 在Windows上连接上就直接可以使用了
  • 基于Redis实现的布隆过滤器

    一 RedisTemplate 1 首先将guava实现的本地的布隆过滤器的算法代码拿过来 span class token comment 算法过程 xff1a 1 首先需要k个hash函数 xff0c 每个函数可以把key散列成为1个整
  • 论文笔记之 Collaborative Deep Learning for Recommender Systems

    这篇论文是KDD2015的一篇用DL去做RS的论文 想法挺有意思的 看过论文的同学都知道整体的模型可以用下图表示 xff1a 这里只讲讲整体的思路与理解 xff1a 1 xff09 这是一个CF和CBF结合用bayes去做 2 xff09
  • 汉明码(Hamming Code)原理及实现

    汉明码 xff08 Hamming Code xff09 原理及实现 汉明码实现原理 汉明码 xff08 Hamming Code xff09 是广泛用于内存和磁盘纠错的编码 汉明码不仅可以用来检测转移数据时发生的错误 xff0c 还可以用
  • 最新的100个微信小程序-极乐Store

    1 团队日历 通过日历管理团队协同任务 在团队内指派 抄送和公开任务事项 xff0c 通过邮件或短信推送消息 到极乐小程序商店中搜索 团队日历 使用 2 同程旅游 同程小程序是一款无需下载安装 xff0c 只需扫描二维码即可 实现产品订购和
  • CAN总线协议详解

    can总线 xff0c 两条线 xff0c CANH和CANL xff0c 电位差判断总线电平 xff0c 采用差分信号 xff0c 有显性电平和隐形电平 报文结构 xff1a 数据帧 xff1a 大多数情况下使用的报文结构 从标识符长度上