CAN2.0B 数据帧详解

2023-05-16

CAN的帧类型分为数据帧、遥控帧、错误帧、过载帧以及帧间空隙,本文将对数据帧的帧结构展开说明:

引言:

  • CAN2.0协议分为A版本和B版本,A版本协议为11位标识符(标准帧),B版本在兼容11位ID标识符的同时,向上扩展到29位ID标识符。
  • 显性电平和隐性电平:

    总线上的电平有显性电平和隐性电平两种,显性电平的逻辑值为“0”,隐性电平为“1”。“显性”具有“优先”的特性,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的特性,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)



如上图所示,CAN数据帧分为以下7个部分。

  • Start of Frame
  • Arbitration Field
  • Control Field
  • Data Field
  • CRC Field
  • ACK Field
  • End of Frame


1. Start of Frame:

它指示一帧的开始,由1bit的显性位组成,必须在Bus Idle状态发出,网络上所有节点在“下降沿”执行一次同步;


2. Arbitration Field


标准帧和扩展帧的仲裁域是不同的:

  • 标准帧包含11bit的Identifier以及RTR-Bit,Identifier分布于ID28到ID18,禁止高7bit全都为隐性
  • 扩展帧包含29bit的Identifier,SRR-Bit,IDE-Bit以及RTR-Bit。Identifier分布于ID28到ID0,同样禁止高7bit全都为隐性。

  • RTR-Bit:RemoteTransmission Request BIT,远程请求位,显性表示数据帧,隐性表示远程帧。
  • SRR BIT:Substitute Remote Request BIT,替代远程请求位,它在扩展帧中,位于标准帧RTR的位置上,始终处于隐性。因此一旦标准帧与扩展帧发生冲突,将以标准帧的优先级高于扩展帧而结束。
  • IDE BIT:Identifier Extension Bit,标识符扩展位,它在标准帧中位于控制场,始终处于显性。在扩展帧中位于仲裁场,始终处于显性。


仲裁域表示数据的优先级别,标识符组成的数值越小优先级越高。


3. Control Field


由6个bit组成,指示要传输信息的数据字节数。包含预留位IDE/r1、r0(2bit),DLC(4bit)。

  • r0、r1:保留位必须以显性电平传送,然而,在接收侧可以接收显性、隐性集任意组合的电平。
  • DLC:数据的字节数必须是0-8个字节,但接收方对DLC=9-15的情况并不视为错误。
标准帧和扩展帧的控制场是不同的,在标准帧中r1的位置为IDE-Bit,是一个常态显性位。

4. Data Field

由0到8个字节组成,用于负载传输的数据,数据输出开始于MSB。


5. CRC Field


由15bit CRC Sequence和1bit CRC Delimiter组成,用来检查帧是否有传输错误。

CRC Sequence:CRC序列,计算范围是SOF,仲裁域,控制域和数据域。

CRC Delimiter:CRC界定符,是一个常态隐性位。


6. ACK Field


ACK(应答场)长度为2 个bit。包括ACK Slot和ACK Delimiter。

  • ACK Slot:应答间隙,发送节点送数据时,会将ACK Slot及ACK Delimiter全部置为隐性,接收节点计算CRC Sequence正确无误后,会在ACK Slot期间向发送方发送一个显性位以示应答。
  • ACK Delimiter:ACK界定符,是一个常态隐性位。

如果总线上有2个以上的接收节点,只要它们当中任意一个正常接收到消息,就会有ACK被返回,如果总线上没有节点能够正常接收信息,则NO ACK被返回。另外发送节点不发送ACK。


7. End of Frame

指示帧的结束,由7个隐性位组成。


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

CAN2.0B 数据帧详解 的相关文章

  • 室外定位:高精度北斗RTK定位技术

    北斗RTK定位技术 xff0c 也称北斗差分定位技术 xff0c 利用我国自主研发的北斗卫星定位系统实现精确定位功能 定位精度可根据需要 xff0c 通过选择不同精度的人员定位终端来实现 在科技强国的战略驱动下 xff0c 北斗RTK定位技
  • 【高精度定位】RTK定位与RTD定位知识科普

    高精度定位一般指亚米级别或厘米级别的定位 xff0c 常见的室内有蓝牙AoA和UWB两种技术 xff0c 室外有北斗地基增强技术 xff0c 这些技术都是采用算法进行定位 工业4 0时代 xff0c 在资源和环境约束不断强化的背景下 xff
  • curl http或https上传下载

    curl的使用 注意如果是https请求需要带上ssl的库和curl库如下图 上传文件 回调函数 span class token keyword static span size t span class token function h
  • 层次遍历构建二叉树

    span class hljs keyword struct span TreeNode span class hljs keyword int span val span class hljs keyword struct span Tr
  • Jetson tx2 使用 jetpack 4.3刷机全过程

    1 首先准备一台安装有ubuntu 18 04 ubuntu16 04 系统的主机 xff08 host也就是笔记本 xff09 2 在nvidia官网注册一个nvidia的账号用于下载jetpack 4 3时使用 xff08 刷机过程中需
  • 2020/2/21 Linux Socket编程 高级篇——广播

    广播 xff1a 实现一对多的通信 SO BROADCAST选项 它控制了UDP套接字是否能发广播数据报 xff0c 选项类型是int xff0c 非零表示 是 只有UDP能用 xff0c TCP不能 如果是一个广播地址 xff0c 但SO
  • 大小端字节序(Big Endian和Little Endian)

    那么何为字节序 xff08 Endia xff09 呢 xff1f Big Endian是指低地址存放最高有效字节 xff08 MSB xff09 xff0c 而Little Endian则是低地址存放最低有效字节 xff08 LSB xf
  • GPS定位及通信协议解析

    1 简介 上图为某公司的GPS定位模块 xff0c 自己在使用其进行GPS定位过程中学习到的知识分享给大家 主要参数如下 半双工 UART 3 3V TTL 电平 RS232 IIC CAN 接口输出 xff0c 更快速的应用 xff1b
  • JVM系列(八):堆(Heap)的相关知识介绍

    目录 1 JVM堆的概念 2 JVM堆的特点 3 JVM堆的内部结构 3 1 组成 3 2 堆内存内部空间所占比例 3 3 永久代和元空间区别 4 堆空间的大小设置 5 堆空间垃圾回收 1 JVM堆的概念 JVM中的堆是用来存放对象的内存空
  • C++读写TIF格式

    参考文章 xff1a xff08 1 xff09 https www cnblogs com gywei p 3393816 html xff08 2 xff09 https blog csdn net han jiang xue arti
  • matlab Fourier变换--方波信号的分解与重建

    N 61 200 采用的数据点数 dt 61 4 N 采样的间隔 for n 61 1 N 生成一个方波 if n dt gt 61 2 x n 61 0 8 else x n 61 0 8 end end figure subplot 2
  • matlab 小波分析--高通滤波器和低通滤波器

    xff08 一 xff09 加载一个尺度滤波器 load db8 w 61 db8 figure subplot 4 2 1 stem w title 39 原尺度滤波器 39 计算4个滤波器 Lo D Hi D Lo R Hi R 61
  • C/C++中rand() 函数产生随机数与srand()设置随机数种子

    xff08 1 xff09 rand 产生随机数 xff0c 输出的随机数序列是确定的 xff0c 即每次运行结果一致 include lt iostream gt int main int i j for i 61 0 i lt 10 i
  • matlab与数字图像处理--膨胀和腐蚀

    对于初学者 xff0c 参考一篇很好的说明 xff1a https blog csdn net alw 123 article details 83868878 左边是一个二值化的测试图像 xff0c 白色为图像元素 xff0c 黑色为背景
  • Emmet语法

    Emmet语法 1 1 快速生成HTML结构语法1 2 快速生成CSS样式语法1 3 快速格式化代码 Emmet语法的前身是Zen coding 它使用缩写 来提高html css的编写速度 Vscode内部已经集成该语法 快速生成HTML
  • CString,int,string,char*之间的转换

    C 43 43 标准函数库 中说的 有三个函数可以将字符串的内容转换为字符数组和C string 1 data 返回没有 0 的字符串数组 2 c str xff0c 返回有 0 的字符串数组 3 xff0c copy int 转 CStr
  • C++ TCP网络编程--服务器端多线程处理会话连接

    客户端程序 xff1a include lt winsock h gt include lt iostream gt pragma comment lib 34 ws2 32 lib 34 include lt Windows h gt i
  • matlab复杂函数多元函数拟合

    简介 本文介绍了基于matlab实现的复杂函数以及多元函数的拟合 在工程和研究中偶尔会遇到要用一个非常复杂的数学公式来拟合实验测量数据 xff0c 对这些复杂的数学公式拟合时 xff0c 采用常见的拟合方法往往会失败 xff0c 或者得不到

随机推荐