当前位置:   article > 正文

CAN总线笔记(有关报文基础知识的理解)_通过can收发报文具有什么意义

通过can收发报文具有什么意义

答辩结束了,认真看了CAN总线的基础,写了第一个博客。

(一)基本概念
1.CAN总线是双绞线,分为CAN_HIGH和CAN_LOW两根线双绞线。
2.具体功能就是支持CAN总线共能的一个或者多个设备通过两个条CAN总线进行数据通讯。
3.设备在can总线上通讯没有主从关系,以广播的形式进行。所有节点都可以接收到某一设备发出的报文(一串二进制数据),接受到数据的设备通过报文来识别是不是需要自己 处理的。
(二)显性和隐性
can总线中一个非常重要的概念就是显性(0)和隐性(1),只要有一个设备有显性的请求,总线就是显性,只有总线上设备全部隐性时才呈隐性。形成显性和隐性的原因是电压差,来自CAN_HIGH和CAN_LOW这两根线的电压差,隐性状态下,两根线都是2.5V,当有信号改变的时候,形成显性状态,在显性状态下一个3.5V另一个1.5V。形成方式如图:
形成显性和隐性的原因
(二)报文
报文是can总线上设备之间互相交流的语言,他们有固定的沟通规则,也就是can总线上发送的数据串。报文的格式有两种,一种是标准can,一种扩展can,两种形式的can总线,主要不同在标识符(下边说,重点就说标准can)。报文包含四种帧,数据帧、远程帧、错误帧和过载帧(实际上就是根据一定规则建立的二进制串)。

  1. 数据帧
    数据帧的内容由七个部分组成,(1)一个起始位(一定显性)。(2)11位仲裁领域(也就是标识符,扩展can有29位仲裁域)和1位RTR,大概理解就是谁的仲裁域越小谁就先用总线(标准can优先级永远大于扩展can,主要因为RTR位)。1位RTR位,这一位标准can为显性,扩展can为隐性,所以标准can的优先级永远大于扩展can。(3)6位控制域,一位IDE(标准can为显性,扩展can为隐性),一位预留位,后4位代表代码长度。(4)0-8个字节的数据域,就是设备想要发送的内容。(5)CRC校验域,15位CRC值和1位CRC界定符,会自动根据发送内容生成一个CRC值,用于校验数据是否在传输过程中发生错误(下一篇博客我会做一篇手算CRC的过程,一个小算法)(6)ACK(应答域),包含1位ACK槽和1位应答界定符,发送端ACK是两个隐性位,接收端在接受到数据后,在ACK槽发送显性位。(7)帧结束,表示该帧结束,由七个隐性位构成。标准can数据帧
    每一个帧里边这域多少位特别重要,一定要记准。

  2. 错误帧
    错误帧,包含6位错误标志和8位隐性错误界定符。(提错误帧,要提一个位填充规则,就是连续五个相同极性之后会出现一个位填充与前边五个极性相反。)
    错误形式也分两种,主动错误和被动错误,主动错误标志由6个显性位组成,被动错误标志由6个隐形位组成。根据位填充规则,明显是错误标志破坏了位填充规则。
    而错误界定符,在错误标志发送之后发送8个隐形位。(错误监测一定相对也很重要)
    错误帧

  3. 远程帧
    这个帧就是向总线上的设备提一个需求,能做得就给他返回一个数据帧。远程帧RTR是隐性的其他的都和数据帧相同。

  4. 过载帧
    过载帧是用于接收单元通知其尚未完成接收准备的帧。
    这一帧基本用不上,can总线设备会处理好需求。

最后还有一个帧之间的间隔,叫帧间隔。有三个隐形位构成。用于将上述几个帧分隔开。
下一篇博客是CRC手推的内容。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号