CAN总线协议:数据帧-程序员宅基地

技术标签: 网络  arm开发  Linux驱动学习  linux  

一.  简介

前面几篇文章简单了解了 CAN总线特点及其电器属性。文章如下:

CAN简介-程序员宅基地

Linux CAN总线的电器属性-程序员宅基地

本文开始来学习CAN总线的协议。

二.  CAN总线协议

1.  CAN总线的数据帧格式

通过 CAN 总线传输数据是需要按照一定协议进行的
CAN 协议提供了 5 种帧格式来传输数据:数据帧、遥控帧、错误帧、过载帧和帧间隔。
我们常用的一种数据帧格式是 数据帧。
其中数据帧和遥控帧有标准格式和扩展格 式两种,标准格式有 11 位标识符(ID),扩展格式有 29 个标识符(ID)
5 中帧的用途见下表所示:

接下来分别来介绍这五种数据帧格式。

1.   数据帧

数据帧由 7 段组成:
①  帧起始,表示数据帧开始的段。
②  仲裁段,表示该帧优先级的段。
③  控制段,表示数据的字节数及保留位的段。
④  数据段,数据的内容,一帧可发送 0~8 个字节的数据。
⑤  CRC 段,检查帧的传输错误的段。
⑥  ACK 段,表示确认正常接收的段。
⑦  帧结束,表示数据帧结束的段。
数据帧结构如下图 所示:

上图中给出了数据帧标准格式和扩展格式两种帧结构,图中 D 表示显性电平 0R 表示隐性电平 1 D/R 表示显性或隐性,也就是 0 1 ,我们来简单分析一下数据帧的这 7 个段。

① 帧起始

帧起始很简单,标准格式和扩展格式都是由一个位的显性电平 0 来表示帧起始。

② 仲裁段

仲裁段表示帧优先级,仲裁段结构如 下图 所示:

标准格式和扩展格式的仲裁段不同,从上图 可以看出,标准格式的 ID 11 位,发 送顺序是从 ID10 ID0 ,最高 7 ID10~ID4 不能全为隐性 (1) ,也就是禁止 0X1111111XXXXX 这样的 ID 。扩展格式的 ID 29 位,基本 ID ID28 ID18 ,扩展 ID ID17 ID0 ,基本 ID 与标准格式一样,禁止最高 7 位都为隐性。

③ 控制段

控制段由 6 个位构成,表示数据段的字节数,标准格式和扩展格式的控制段略有不同,如下图 所示:

上图 r1 r0 为保留位,保留位必须以显性电平发送。 DLC 为数据长度,高位在 前, DLC 段有效值范围为 0~8

④  数据段

数据段也就是帧的有效数据,标准格式和扩展格式相同,可以包含 0~8 个字节的数据,从最高位 (MSB) 开始发送,结构如下图 所示:

注意,上图 中数据段的 0~64 bit ,对应到字节就是 0~8 字节。

CRC

CRC 段保存 CRC 校准值,用于检查帧传输错误,标准格式和扩展格式相同, CRC 段结构如下图 所示:
可以看出, CRC 段由 15 位的 CRC 值与 1 位的 CRC 界定符组成。 CRC 值的计算范围包括:帧起始、仲裁段、控制段、数据段,接收方以同样的算法进行计算,然后用计 算得到的 CRC 值与此 CRC 段进行比较,如果不一致的话就会报错。

⑥  ACK

ACK 段用来确认接收是否正常,标准格式和扩展格式相同, ACK 段结构如图 66.1.3.6
示:
  可以看出, ACK 段由 ACK (ACK Slot) ACK 界定符两部分组成。
发送单 元的 ACK ,发送 2 个隐性位,而接收到正确消息的单元在 ACK 槽( ACK Slot )发送显性位, 通知发送单元正常接收结束,这个过程叫发送 ACK/返回 ACK
发送 ACK 的是所有接收单元 中接收到正常消息的单元,所谓正常消息是指不含填充错误、格式错误、 CRC 错误的消息,这 些接收单元既不处于总线关闭态,也不处于休眠态的所有接收单元中。

⑦  帧结束

最后就是帧结束段,标准格式和扩展格式相同,帧结束段结构如下图 所示:
可以看出,帧结束段很简单,由 7 位隐性位构成。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wojiaxiaohuang2014/article/details/136877953

智能推荐

倾斜摄影的单体化建模研究 和osg 关系_倾斜摄影上叠加单体化数据-程序员宅基地

文章浏览阅读1.3k次。针对倾斜摄影模型“一张皮”,无法对目标进行单独操作和管理的问题,归纳总结了3种倾斜摄影单体化方法,并将分析结果进行对比,运用于实际生产中。_倾斜摄影上叠加单体化数据

Zabbix服务器监控基本应用详解(一)-程序员宅基地

文章浏览阅读78次。原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://gzsamlee.blog.51cto.com/9976612/1865381 Zabbix基本概述:Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方..._zabbix 各个服务的具体作用,数据怎么接收发送

视频教程-Docker入门与进阶实战(基于Java,通俗易懂,附源码)-Java-程序员宅基地

文章浏览阅读214次。Docker入门与进阶实战(基于Java,通俗易懂,附源码) 拥有8年JAV..._java基础进阶 docker入门 实战

数据库与MPP数仓(十二):数据仓库的价值_基础数据仓库的 价值-程序员宅基地

文章浏览阅读7.2k次,点赞7次,收藏9次。构思一个主题讨论数据仓库的构建方法论,包括数据仓库的价值、选型、构建思路,随着数据规模膨胀和业务复杂度的提升,大型企业需要构建企业级的数据仓库(数据湖)来快速支撑业务的数据化需求,与传统的数据库构建不通,数据仓库即是OLAP场景,偏于历史数据的存储/分析,用冗余存储换取数据价值;一、数据仓库和数据库的区别所有的应用系统都会涉及到数据库,针对数据库归纳和存放,也就是数据库的常见操作:增、删、改、查,那么为什么想要对企业数据进行分析,不能直接查询数据库,非要大费力气的去创建所谓的数据仓库和数据湖呢?._基础数据仓库的 价值

web全栈后台权限管理系统(VUE+ElementUi+nodeJs+koa2)_vue+elementui+nodejs+koa2+mongodb全栈开发后台管理系统-程序员宅基地

文章浏览阅读894次。VUE+ElementUi+nodeJs+koa2_vue+elementui+nodejs+koa2+mongodb全栈开发后台管理系统

2018上半年GitHub上最热门的开源项目-程序员宅基地

文章浏览阅读43次。关注GitHub的人都知道,这个平台上面有太多优秀的值得学习的开源项目了,这里总结了2018上半年GitHub上最热门的开源项目。1: tensorflowhttps://github.com/tensorflow/tensorflowTensorFlow是一个使用数据流图进行数值计算的开源软件库。图节点表示数学运算,而图边表示在它们之间流动的多维数据数组(张量)..._build-your-own-vue

随便推点

选择开发操作系统的编程工具_选择开发系统的工具-程序员宅基地

文章浏览阅读1k次。选择开发操作系统的编程工具编程语言编程平台16位编程工具16位C语言编译器 - Borland C/C++ 3.116位汇编语言编译器 - MASM32 v1132位编程工具代码编辑器 - Visual Studio Community 201932位C语言编译器 - Visual Studio Community 201932位汇编语言编译器 - Visual Studio Community ..._选择开发系统的工具

安全套接层Secure Sockets Layer,SSL_netscape’ s secure sockets layers-程序员宅基地

文章浏览阅读2.5k次。http://zh.wikipedia.org/wiki/%E5%AE%89%E5%85%A8%E5%A5%97%E6%8E%A5%E5%B1%82安全套接层(Secure SocketsLayer,SSL)是一种安全协议,在網景公司(Netscape)推出首版Web浏览器的同时提出,目的是为网络通信提供安全及数据完整性保障,SSL在传输层中对网络通信进行加密。SSL采用公开密钥技术,_netscape’ s secure sockets layers

Oracle Easy Connect Naming method-程序员宅基地

文章浏览阅读356次。在Oracle 10g中,Oracle还提供了一种称为“Oracle Easy Connect Naming method"的连接方式。这种方法是对hostnaming method的一种改进,因为hostnaming meth..._oracle naming methods

桁架工业机器人编程_一小时能搞定的可编程工业机器人 丹麦协作机器人优傲发力中国...-程序员宅基地

文章浏览阅读208次。IT时报见习记者 陶泳“来来,机器往下一点,再加入一个编程命令就可以完成整套设计了。”6月4日下午,优傲机器人位于上海南京西路的办公室里,一群毫无AI基础的记者们在短短一个小时的培训后都“变身”编程高手,在一个类似平板电脑的操作台上进行简单操作之后,一个个像人类手臂一样的协作机器人便可以根据指令完成类似搬运物品等各种操作。如此简单的操作,正是北汽李尔选择优傲机器人(Universal Robots..._协作机器人编程方法

glibc 小白指南_pkuseg glibc-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏9次。欢迎来到glibc教程!本教程将介绍glibc (GNU C Library) 的基础知识和使用方法。glibc是一个标准的C语言库,用于GNU操作系统和其他类Unix系统,它提供了大量的基础函数和例程,对于大多数C程序的正确运行是必不可少的。让我们开始吧!_pkuseg glibc

如何查看发请求(向后端发请求)?(浏览器)_edge查看网站请求-程序员宅基地

文章浏览阅读5.2k次。1.谷歌浏览器步骤: f12(或者右击检查) --> 点击Network --> 选中Fetch/XHR(就可以看发往后端的请求了。)2.Microsoft Edge步骤: f12(或者右击检查) --> 点击(网络)Network --> 选中Fetch/XHR(就可以看发往后端的请求了。)..._edge查看网站请求

推荐文章

热门文章

相关标签