CAN笔记(6) CAN协议(一)

  • 1. 帧的种类
  • 2. 数据帧
  • 3. 帧起始
  • 4. 仲裁段
  • 5. 控制段
  • 6. 数据段
  • 7. CRC 段
  • 8. ACK 段
  • 9. 帧结束
  • 10. 遥控帧

1. 帧的种类

通信是通过以下 5 种类型的帧进行的

  • 数据帧
  • 遥控帧
  • 错误帧
  • 过载帧
  • 帧间隔

另外, 数据帧和遥控帧有标准格式(CAN2.0A)和和扩展格式(CAN2.0B)两种格式:

  1. 标准格式有 11 个位的标识符(Identifier: 以下称 ID)
  2. 扩展格式有 29 个位的 ID

各种帧的用途:

帧用途
数据帧 用于发送单元向接收单元传送数据的帧
遥控帧 用于接收单元向具有相同 ID 的发送单元请求数据的帧
错误帧 用于当检测出错误时向其它单元通知错误的帧
过载帧 用于接收单元通知其尚未做好接收准备的帧
帧间隔 用于将数据帧及遥控帧与前面的帧分离开来的帧

2. 数据帧

数据帧由 7 个段构成:


接下来,详细的了解一下数据帧的构成


3. 帧起始

表示数据帧开始的段 SOF
1 个位的显性位,电平的逻辑值为“0”


4. 仲裁段

表示该帧优先级的段
标准格式和扩展格式在此的构成有所不同

  • 标准格式
    ID 有 11 个位,从 ID28 到 ID18 被依次发送
    禁止高 7 位都为隐性,禁止设定: ID=1111111XXXX
  • 扩展格式
    ID 有 29 个位,基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示
    基本 ID 和标准格式的 ID 相同,禁止高 7 位都为隐性,禁止设定:基本 ID=1111111XXXX

ID号前11位相同的情况下,有几个位值得说一下:

简称 全称 名称 特点 作用
RTR位 Remote Tranmission Request Bit 远程发送请求位 在数据帧中,恒为显性位0;在遥控帧中,恒为隐性1 相同格式下,保证 数据帧 优先级高于 遥控帧
SRR位 Substitutes for Remote Requests Bit 替代远程请求位 在扩展帧(数据帧或遥控帧)中,恒为隐性1; 在标准数据帧的中,对应的位RTR,恒为显性位0 保证 标准数据帧 优先级高于 扩展数据帧
IDE 位 Identifier Extension Bit 识别符扩展位 在扩展帧(数据帧或遥控帧)中,恒为隐性1;在标准帧(数据帧或遥控帧)中,IDE位于控制段,恒为显性0 保证 标准遥控帧 优先级高于 扩展遥控帧

在CAN总线中没有地址的概念,CAN总线是通过报文ID来实现收发数据的
CAN节点上都会有一个验收滤波ID表,其位于CAN节点的验收滤波器中
如果总线上的报文ID号在某个节点的验收滤波ID表中
那么这一帧报文就能通过该节点验收滤波器的验收,该节点就会接收这一帧报文

比如:
Node_A 发送了一帧ID号为 ID_1 的报文 Msg_1
Node_B的验收滤波ID表中恰好有 ID_1
于是乎 Msg_1 就会被 Node_B 接收


5. 控制段

表示数据的字节数及保留位的段,由 6 个位构成
标准格式和扩展格式的构成有所不同

  • 保留位(r0、r1)
    保留位必须全部以显性电平发送
    但接收方可以接收显性、隐性及其任意组合的电平
  • 数据长度码(DLC
    数据长度码与数据的字节数的对应关系:
数据字节数 DLC3 DLC2 DLC1 DLC0
0 D D D D
1 D D D R
2 D D R D
3 D D R R
4 D R D D
5 D R D R
6 D R R D
7 D R R R
8 R D D D

数据的字节数必须为 0~8 字节
但接收方对 DLC = 9~15 的情况并不视为错误


6. 数据段

数据的内容,可发送 0~8 个字节的数据
从 最高有效位MSB(Most Significant Bit)开始输出


7. CRC 段

检查帧的传输错误的段
由 15 个位的 循环冗余校验CRC 顺序 和 1 个位的 CRC 界定符(用于分隔的位)构成
CRC 顺序是根据多项式生成的 CRC 值
CRC 的计算范围包括帧起始、仲裁段、控制段、数据段

接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误


8. ACK 段

表示确认正常接收的段
由 确认字符ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成

  • 发送单元的 ACK 段
    发送单元在 ACK 段发送 2 个位的隐性位
  • 接收单元的 ACK 段
    接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位, 通知发送单元正常接收结束

这称作“发送 ACK”或者“返回 ACK”

发送 ACK 的是:在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元
发送单元不发送 ACK
所谓正常消息是指不含填充错误、格式错误、 CRC 错误的消息


9. 帧结束

表示数据帧结束的段 EOF
由 7 个位的隐性位构成


10. 遥控帧

接收单元 向 发送单元 请求发送数据 所用的帧
遥控帧由 6 个段组成(帧起始、仲裁段、控制段、CRC 段、ACK 段、 帧结束)
遥控帧 没有 数据帧 的数据段

  • 数据帧和遥控帧的不同:
  1. 遥控帧的 远程发送请求位RTR 位为隐性位 1,没有数据段
  2. 没有数据段的数据帧和遥控帧可通过 RTR 位区别开来
  • 遥控帧中,标准帧 的RTR 对位扩展帧的SRR皆为隐性,怎么保证标准帧优先级高于扩展帧?
    在遥控帧中可通过 识别符扩展位IDE 保证
    在扩展格式中,IDE恒为隐性1;在标准格式中,IDE恒为显性0
  • 遥控帧没有数据段,控制段中的数据长度码DLC该如何表示?
    遥控帧的数据长度码以所请求数据帧的数据长度码表示
  • 没有数据段的数据帧有何用途?
    例如,可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况

参考:
《CAN入门书》


相关推荐:
CAN笔记(5) 协议标准规格
CAN笔记(4) 协议基本概念
CAN笔记(3) 错误状态
CAN笔记(2) CAN特点
CAN笔记(1) CAN简介


谢谢!

CAN笔记(6) CAN协议(一)相关推荐

  1. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  2. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

  3. 网络安全笔记1——Internet协议的安全性

    网络安全笔记1--Internet协议的安全性 参考课程:中国大学MOOC<网络安全>--北京航空航天大学 文章目录 网络安全笔记1--Internet协议的安全性 <font co ...

  4. 网络协议学习笔记-IGMP协议

     网络协议学习笔记-IGMP协议 http://hi.baidu.com/clxye/item/3db870336d86c0c11a969614 IGMP协议(Internet Group Man ...

  5. 【嵌入式硬件芯片开发笔记】HART协议调制解调芯片AD5700配置流程

    [嵌入式硬件芯片开发笔记]HART协议调制解调芯片AD5700配置流程 XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO控制 初始时HART_CLK_CFG输出低电平 由RTS引脚控制调制 ...

  6. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  7. TCP/IP详解--学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  8. FPGA学习笔记_UART串口协议_串口接收端设计

    FPGA学习笔记 1. UART串口协议以及串口接收端设计 1 原理图 2 Verilog 代码 3 Modelsim仿真 4. FPGA板级验证 1.1 串口协议接收端设计 目标:FPGA接收其他设 ...

  9. TCPIP详解Protocol 读书笔记(三) IP协议讲解

    TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...

  10. 【安全牛学习笔记】DNS协议隧道、DNS协议隧道-dns2tcp

    DNS协议隧道 防火墙禁止TCP出站访问流量 - SSH隧道.端口准发全部失效 - 使用基于UPD协议的隧道 - DNS的工作原理适合用于实现隧道 DNS工作原理 - DNS隧道原理: 注册受自己控制 ...

最新文章

  1. 如果乔布斯还在,今天他65岁了
  2. Servicehot和你说说运维自动化的那些事儿
  3. Linux 常见的六大 IPC 通信方式
  4. 关于Git的几个使用技巧
  5. 跨域资源请求(除jsonp以外)的方法
  6. Windows Server 2012 R2服务器集群测试
  7. 江苏2021168查询高考成绩,重磅!高考成绩查询!!
  8. turbo码java实现_Turbo码的迭代译码算法的设计与软件实现
  9. java 调用宏_通过java代码实现调用excel当中的宏的操作。
  10. Tbase安装遇错解决办法
  11. hosts文件在哪里,怎样配置修改hosts文件
  12. 关于 Sketch 你可以知道的几个小秘密 (快捷键用法)
  13. 生动的ajax图片显示效果,LightBox
  14. img标签 src路径正确 但图片不显示
  15. 展望计算机未来发展趋势,计算机的未来展望
  16. es根据字段长度过滤_es根据字段长度过滤_如何进行elasticsearch查询以过滤字段的最大值?...
  17. python32位和64位有什么区别_python32位和64位有什么区别
  18. 无源晶振电路设计和改进
  19. python实现GUI自动化(控制鼠标)|屏幕快照图像识别基础
  20. winds搭建bugfree环境

热门文章

  1. 将TreeView中导出为XML数据
  2. php ab压力测试,安装Xcache缓存加速php及ab压力测试结果
  3. idea--Project Structure
  4. opencv图片分类+特征图片截取
  5. 两个月新手的几点 storyboard 心得
  6. Navicat PatchNavicat
  7. 汇编里的IMPORT和EXPORT
  8. Tempter of the Bone
  9. iOS-Delegate模式
  10. myeclipse8.5打包jar并引入第三方jar包