1.CAN通讯有套国际标准,套协议版本号,种故障状态,种数据帧类型,种总线错误类型。

2.CAN的国际标准有两种ISO11898和ISO11519。

3.CAN2.0协议分为A版和B版两种,A版协议仅支持11位标识符(称为标准帧),B版协议兼容11位,向上扩展到19位标识符(称为扩展帧)。

4.CAN总线中。不论什么一个节点发生了错误,那么这个节点可能处于3种故障状态:错误主动状态,错误被动状态,离线状态。

错误主动状态:能够正常參加总线通讯,检測出错误时。输出主动错误标志。错误被动状态:是易引起错误的状态,尽管能參加总线通讯。但为最好还是碍其他节点通讯,接收时不能积极的发送错误通知,处于被动错误状态的节点即时检測出错误,而其他处于主动错误状态的节点假设没有发现错误。整个总线也被觉得没有错误。

离线状态:不能參加总线通讯的状态。

4.CAN总线中有5类错误。这5类错误并不具有排他性,能够同一时候发生。CAN总线在随意时刻,仅仅有一个节点在发送数据,其它全部节点都是在接收,仅仅有相应的ID报文节点对接收的报文做出应答反应。

5.位错误(Bit Error):节点是边发送边检听相应的位,发送的位和检測的位假设不一致,则检測到一个位错误。

6.填充错误(Stuff Error)监听到6个连续同样的为电平时。则检測到一个位填充错误。

7.CRC错误(CRC Error)发送节点会对报文的帧起始,仲裁场。数据场进行CRC计算。求出CRC校验码,并将其也发送出去。接收节点在接收到数据后,会依据CRC校验码来推断接收到的数据在传送过程中是否出错。

8.形式错误()一个固定形式的位场中含有非法位时。则检測到一个形式错误。

9.应答错误()仅仅要在应答期间所监听的位不为显性。则发送器检測到一个应答错误。

应答场包含应答位和应答分隔符。发送节点发送的这两位均为隐性电平,这时仅仅有正确接收报文的接收节点发送显性电平来覆盖它。

11.串口通信是一对一的通信。SPI的通信是一对多的通信。

CAN的一大特点,多主机串行通信:也就是在总线空暇时,全部单元都能够发送消息。最先訪问的节点能够获得发送权,若多个节点觉得自己获得发送权同一时候開始发送数据时,依据ID的优先级来竞争总线的发送权。总线上的节点没有类似于MAC物理地址的信息,所以在总线上增减单元时,连接在总线上的其它单元的软硬件及应用层都不须要改变。

单元依据报文ID决定接收或者屏蔽该报文,报文ID在一定程度上也决定了此帧数据的优先级,发送的信息遭到破坏后。可自己主动重发。节点在错误严重的情况下具有自己主动退出总线的功能。

12.CAN总线上全部的节点都能够检測错误。检測出错误的单元会立马通知其它全部单元。

正常发送的节点一旦检測出错误,会强制结束当前的发送,强制结束发送的节点会不断重复的发送此信息直到成功发送为止,或进入总线关闭状态。

13.CAN总线上的信号使用差分电压进行传送,两条信号线被称为CAN_H 和CAN_L,静态时均是2.5v左右。这时的状态表示逻辑1,也称为隐性电平。通常CAN_H为3.5,CAN_L为1.5时。表示为逻辑0。称为显性电平。

14.DSP的CAN模块的引脚在发送数据的同一时候。其接受引脚也在监听所发送的数据。也就是,发送数据的时候。接受引脚上也会有对应的波形能够在示波器上显示。假设CAN总线上仅仅有发送节点。却没有接受节点。那么这个发送节点会一直发送数据直到发送成功为止,也就是收到有效的应答信号。

15.CAN协议里对ACK(应答场)有例如以下的描写叙述:

应答场长度为2 个位。包括应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。

在应答场里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK SLOT)期间(发送ACK 信号)向发送器发送一“显性”的位以示应答。

15.应答间隙:全部接收到匹配CRC 序列(CRC SEQUENCE)的站会在应答间隙(ACK SLOT)期间用一“显性”的位写入发送器的“隐性”位来作出回答。ACK 界定符:ACK 界定符是ACK 场的第二个位,而且是一个必须为“隐性”的位。因此,应答间隙(ACK SLOT)被两个“隐性”的位所包围。也就是CRC 界定符(CRC DELIMITER)和ACK 界定符(ACK DELIMITER)。

16.在CAN协议的错误检測部分有这种描写叙述:

位错误:站单元在发送位的同一时候也对总线进行监视。假设所发送的位值与所监视的位值不相符合,则在此位时间里检測到一个位错误(BIT ERROR)。

可是在仲裁场(ARBITRATION FIELD)的填充位流期间或ACK间隙(ACK SLOT)发送一“隐性”位的情况是例外的—— 此时。当监视到一“显性”位时。不会发出位错误(BIT ERROR)。应答错误:仅仅要在ACK 间隙(ACK SLOT)期间所监视的位不为“显性”。则发送器会检測到一个应答错误(ACKNOWLEDGMENT ERROR)。

17.发送者在发送的同一时候,会监视总线上的数据,假设与发送的娄据不一致,则表示发送失败或自己失去仲裁,马上停止发送或转入接收模式。假设有一个节点在ACK SLOT的时间内发送“显性”位。则发送者觉得此次发送报文成功。假设发送者检測到ACK SLOT为隐性位。则表示没有节点填充ACK SLOT。则发送者会检測到这个隐性位而知道发送失败。此条报文须要重发。所以,当总线上仅仅有一个节点的时候,或是仅仅有一个节点能够收发数据的时候。这个节点是发不出去数据的,由于它所发出的数据帧中的ACK SLOT没有另外一个节点来填充,将永远是隐性位,这个节点会一直重发数据直到发送成功或发送被取消。

18.(注:一:总线上仅仅有一个节点并且它向外发送了数据。它确实不会收到不论什么ACK。它会变成“error passive”可是它不会变成BUS off。why?请參考CAN specificaton 2.0-partB-Fault_Confinement--rule3--exception1 二:其他检測到CRC错误的节点不会立即发送错误帧,而是在ACK delimiter之后才发送。请參考CAN specificaton 2.0-partB-Error_Signalling)

19.ACK SLOT仅仅有一个BIT,而接下去的ACK delimiter始终为隐性(我们可觉得是1),当数据到达ACK SLOT的时候。全部的节点都会发送显性位(我们能够觉得是0),而发送者在ACK这个时间里保持隐性位(即发送者在发送的时候ACK SLOT 为1),这时发送者会检測总线上的ACK时间内的信号,假设是0,则表示正确,假设是1,表示有错误。假设其中有某一个节点在ACK SLOT填入隐性位,则总线上相同还是显性位电平,故仅仅要总线上有一个节点正确接收到数据。则ACK SLOT就会被填入显性电平;那么,接收错误的节点怎样来告知发送者此次发送不成功呢?这时候就要用到CAN的错误帧,当一个接收者收到错误的数据的时候,它马上開始发送一个错误帧。则接下去总线上的信号就是这个错误帧。其他的节点和发送者也都会收到这个错误帧,那全部的节点都知道出错了,接收者会丢掉此次消息,而发送者会试图重发此次消息。这才是ACK SLOT真正的含义。

20.我们觉得,发送者在发数据的时候。CANTX在发送数据,而CANRX同一时候也在接收数据,当发送者发送ACK为隐性时。接收到的ACK SLOT一定要是显性才会正确。那么。当有节点正确接收到了数据。在ACK SLOT填上显性位后,接收错误的节点这时候会怎样呢?接收错误的节点就会立即发送错误帧,通常是发送连续的6个0或1。依据CAN的位填充原理,当有五个连续的0或1出现时,为了传送中的同步,必须插入一个反相位的BIT作为填充位,假设连续出现6个或以上的同样信号,则此次传送错误,数据将被丢弃。故当发送者收到这个错误帧后,便会知道发送出错。并试图重发数据。

CAN通讯的总结的更多相关文章

  1. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  2. (转)利用libcurl和国内著名的两个物联网云端通讯的例程, ubuntu和openwrt下调试成功(四)

    1. libcurl 的参考文档如下 CURLOPT_HEADERFUNCTION Pass a pointer to a function that matches the following pr ...

  3. (转)linux下和云端通讯的例程, ubuntu和openwrt下实验成功(二)

    前言: 上节用纯linux的函数实现了和云端通讯, 本节开始利用传说中的神器libcurl 话说一个网络程序员对书法十分感兴趣,退休后决定在这方面有所建树. 于是花重金购买了上等的文房四宝.    一 ...

  4. (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)

    一.  HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...

  5. 用SignalR 2.0开发客服系统[系列1:实现群发通讯]

    前言 交流群:195866844 先说一下我为什么会写这个博客吧,(首先说一下,我是一个小菜鸟,讲的不好请指导 - -,)  前段时间公司的项目涉及到在B/S上使用即时通讯,(其实就是做一个B/S的客 ...

  6. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

  7. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  8. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

    今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 De ...

  9. 利用WCF的双工通讯实现一个简单的心跳监控系统

    何为心跳监控系统? 故名思义,就是监控某个或某些个程序的运行状态,就好比医院里面的心跳监视仪一样,能够随时显示病人的心跳情况. 心跳监控的目的是什么? 与医院里面的心跳监视仪目的类似,监控程序运行状态 ...

  10. 利用WCF双工模式实现即时通讯

    概述 WCF陆陆续续也用过多次,但每次都是浅尝辄止,以将够解决问题为王道,这几天稍闲,特寻了些资料看,昨晚尝试使用WCF的双工模式实现了一个简单的即时通讯程序,通过服务端转发实现客户端之间的通讯.这只 ...

随机推荐

  1. 【转载】以Java的视角来聊聊SQL注入

    以Java的视角来聊聊SQL注入 原创 2017-08-08 javatiku Java面试那些事儿 在大二就接触过sql注入,之前一直在学习windows逆向技术,认为web安全以后不是自己的从业方 ...

  2. JAVA 后台SSM框架接收安卓端的json数据

    最近项目上与安卓端做JSON数据交互,使用的SSM框架,刚开始的时候感觉很简单,想着不就是把安卓端的JSON数据封装为Bean类对象吗? 于是就这样写了 可是这样一直报400,百度原因是因为请求url ...

  3. JavaScript系列----正则表达式

    1.正则表达式 1.1.正则表达式的类型 正则表达式在JavaScript中,提供了一种内置的构造函数--RegExp. 正则表达式有三种匹配模式: g: 表示全局模式,即模式应用于所有的字符串,而非 ...

  4. phpcms 的getcache()函数

    一直没有去研究phpcms 的getcache()函数是干嘛的,今天有空去看了一下,原来就那样. 1 function getcache($name, $filepath='', $type='fil ...

  5. bash, sh, dash 傻傻分不清楚

    原文链接,转载请注明出处: http://www.happycxz.com/m/?p=137 常见shell类型 Bourne shell (sh) UNIX 最初使用,且在每种 UNIX 上都可以使 ...

  6. C#中??和?分别是什么意思?

    在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null ...

  7. 设计模式的征途—23.解释器(Interpreter)模式

    虽然目前计算机编程语言有好几百种,但有时人们还是希望用一些简单的语言来实现特定的操作,只需要向计算机输入一个句子或文件,就能按照预定的文法规则来对句子或文件进行解释.例如,我们想要只输入一个加法/减法 ...

  8. pt-tcp-model

    http://blog.9minutesnooze.com/analyzing-http-traffic-tcpdump-perconas-pttcpmodel/ #获取200k个packets tc ...

  9. install plugin group_replication ERROR 1126 (HY000)

    在给MySQL安装插件的时候,你可能会遇到如题所示的报错. 更详细的错误输出如下: mysql> INSTALL PLUGIN group_replication SONAME 'group_r ...

  10. [拓扑排序]Ordering Tasks UVA - 10305

    拓扑排序模版题型: John has n tasks to do.Unfortunately, the tasks are not independent and the execution of o ...