CAN笔记(3) 错误状态

  • 1. 错误状态种类
    • 1.1. 主动错误状态
    • 1.2. 被动错误状态
    • 1.3. 总线关闭态
    • 1.4. 三种状态的转换
  • 2. 错误计数值

1. 错误状态种类

单元 始终 处于 3 种状态之一


1.1. 主动错误状态

主动错误状态是可以正常参加总线通信的状态

处于主动错误状态的单元 检测出错误时,输出主动错误标志


1.2. 被动错误状态

被动错误状态是易引起错误的状态

处于被动错误状态的单元虽能参加总线通信
但为不妨碍其它单元通信,接收时不能积极地发送错误通知

处于被动错误状态的单元即使检测出错误
而其它处于主动错误状态的单元如果没发现错误,整个总线也被认为是没有错误的

处于被动错误状态的单元检测出错误时,输出被动错误标志

另外,处于被动错误状态的单元在发送结束后不能马上再次开始发送
在开始下次发送前,在间隔帧期间内必须插入“延迟传送”(8 个位的隐性位)


1.3. 总线关闭态

总线关闭态是不能参加总线上通信的状态
信息的接收和发送均被禁止


1.4. 三种状态的转换

这些状态依靠发送错误计数接收错误计数来管理
根据计数值决定进入何种状态,错误状态和计数值的关系如下:

单元错误状态 发送错误计数值(TEC) 接收错误计数值(REC)
主动错误状态 且 0~127 且 0~127
被动错误状态 或 128~255 或 128~255
总线关闭态 256~∞ -

关系图如下:


2. 错误计数值

发送错误计数值和接收错误计数值根据一定的条件发生变化

一次数据的接收和发送可能同时满足多个条件
错误计数器在错误标志的第一个位出现的时间点上开始计数

错误计数值的变动条件如下表:

接受和发送错误计数值的变动条件 发送错误计数值(TEC) 接收错误计数值(REC)
接收单元检测出错误 - +1
接收单元在发送完错误标志后,检测到的第一个位为显性电平时 - +8
发送单元在输出错误标志时 +8 -
发送单元在发送主动错误标志或过载标志时,检测出位错误 +8 -
接收单元在发送主动错误标志或过载标志时,检测出位错误 - +8
各单元从主动错误标志、过载标志的最开始检测出连续14个位的显性位时之后,每检测出连续的 8 个位的显性位时 +8 +8
检测出在被动错误标志后追加的连续 8 个位的显性位时 +8 +8
发送单元正常发送数据结束时(返回 ACK 1 且到帧结束也未检测出错误时) −1 ;TEC=0 时 ±0 -
接收单元正常接收数据结束时(CRC 2 未检测出错误且正常返回 ACK 时) - 1≤REC≤127 时 -1;REC=0 时 ±0;REC>127 时 =127
处于总线关闭态的单元,检测到 128 次连续 11 个位的隐性位 =0 =0

参考:
《CAN入门书》


相关推荐:
CAN笔记(2) CAN特点
CAN笔记(1) CAN简介


谢谢!


  1. ACK:Acknowledge character(确认字符)表示发来的数据已确认接收无误 ↩︎

  2. CRC:Cyclic Redundancy Check(循环冗余校验)用来差错检测或校验数据传输或者保存后可能出现的错误 ↩︎

CAN笔记(3) 错误状态相关推荐

  1. 软件质量保证与测试笔记——江湖救急版

    软件质量保证与测试笔记--江湖救急版 Powered by DZY 以下部分图片来源于老师课件,仅供学习交流使用,侵权致删! Ch1 软件质量与测试概念 软件质量的定义 软件质量是"反映实体 ...

  2. 图解HTTP学习笔记

    前言: 一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子.最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记. TCP三次握手: ① 发送端首先发送一个带SYN标志的数据 ...

  3. WinSock学习笔记

    Socket(套接字) ◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Sock ...

  4. Spring Boot学习笔记-基础(2)

    Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...

  5. ESP8266学习笔记6:ESP8266规范wifi连接操作

    一.前言 我整理了从2015年至今关于ESP8266的学习笔记,梳理出来了开发环境.基础功能.进阶学习三大部分.方便自己和他人.可点此查看,欢迎交流. 之前在笔记4<ESP8266的SmartC ...

  6. Spring Boot 2 学习笔记(2 / 2)

    Spring Boot 2 学习笔记(1 / 2) - - - 45.web实验-抽取公共页面 46.web实验-遍历数据与页面bug修改 47.视图解析-[源码分析]-视图解析器与视图 48.拦截器 ...

  7. tornado学习笔记day03-响应输出

    write: 作用: 将chunk中的数据写到输出缓冲区 利用write方法写json数据 我们自己手动序列化json的那种方式Content-Type 的属性值为text-html 而我们采用wri ...

  8. 学习笔记--2014年7月7日

    2014年7月7日晚上学习笔记 ================ 目录: 一.学习Bash笔记 二.利用Ubuntu创建无线wifi 三.在Ubuntu里禁用不用的桌面 四.安装软件时依赖冲突的万能解 ...

  9. Mr.J-- HTTP学习笔记(三)-- HTTP报文

    HTTP 报文是在 HTTP 应用程序之间发送的数据块. 报文在客户端. 服务器和代理之间流动. 术语"流入"."流出"."上游" 及&qu ...

最新文章

  1. Linux中断处理驱动程序编写【转】
  2. boost::hana::back用法的测试程序
  3. 通过pyinotify实现文件的监控,包括监控文件是否传输完成
  4. python虚拟环境 pyenv_Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别
  5. 《为何爱会伤人》-读书笔记
  6. Open3d之颜色映射优化
  7. failed to execute ‘dot‘, make sure the Graphviz executables are on your systems‘ PATH
  8. SQLServer导数据到Oracle
  9. matlab用Java绘图_Java中使用MATLAB作图
  10. UGUI源代码之Image-Sliced模式
  11. Android左右声道切换流程
  12. 创建前缀索引时,如何确认“最佳长度”
  13. 【附源码】计算机毕业设计SSM实验室预约管理系统
  14. 金仓数据库 KingbaseES 客户端编程接口指南 - JDBC(11. JDBC 示例说明)
  15. java 粒度_java中粗粒度和细粒度的概念
  16. 一文弄懂Batch Norm / Layer Norm / Instance Norm / Group Norm 归一化方法
  17. 新消息,江苏南通8MW屋顶光伏发电啦
  18. matlab计算地转流程序,geostrophy 用于海洋科学中计算地球流的一系列matlab程序 联合开发网 - pudn.com...
  19. 本科计算机知识点,2018年电大本科计算机网考操作题题库重要知识点(6页)-原创力文档...
  20. python 匹配字符串开头和结尾

热门文章

  1. SVPullToRefresh问题解决
  2. oracle dataguard 03113 error code solution
  3. 【转】想象5年后的你
  4. 【设计模式系列】行为型之模板模式
  5. zabbix mysql密码_重置Zabbix数据库Admin的密码
  6. 使用rsync工具构建php项目管理平台
  7. 比较全的 Java8 9 lambda 应用
  8. 手把手教学系列——疯狂Spring Cloud教学视频
  9. Spring MVC——数据检验步骤
  10. ORA-09925: Unable to create audit trail file 在DBCA时