(2)can总线技术规范

来源:互联网 发布:网络感叹号怎么解决 编辑:程序博客网 时间:2024/05/19 23:14

本文从以下四个方面介绍CAN2.0B的技术规范。

1.CAN的分层结构

2.CAN报文传送及总线上的位电平表示

3.CAN总线报文的帧结构

4.错误类型和界定

4.位定时与同步

总线上的位电平表示,报文的帧结构,错误类型这些前文均有讲过,下面进行深入介绍。


1.CAN的分层结构

    为了使设计透明和执行灵活,遵循ISO/OSI标准模型,CAN分为数据链路层(包括逻辑链路层LLC和媒体访问控制层MAC)和物理层

    在CAN技术规范2.0A的版本中,数据链路层的LLC和MAC子层的服务和功能被描述为“目标层”和“传输层”。    各层的具体功能不做深究。


2.CAN报文传送及总线上的位电平表示

(1)进行数据传送时,发出报文的单元成为该报文的发送器。该单元在总线空闲或丢失仲裁前恒为发送器

(2)如果一个单元不是报文发送器,并且总线不出现空闲状态,则该单元为接收器。   

报文中的位流是按照非归零(NZR)码方法编码的,这意味着一个完整的位电平要么是显性,要么是隐性。

 

     在“隐性”状态下,Vcanh和Vcanl被固定于平均电压电平,Vdiff近似为零。在总线空闲或“隐性”位期间,发送“隐性”状态。

  在“显性”状态下,以大于最小阀值的差分电压表示。


3.CAN总线报文的帧结构

  

   CAN总线的报文传送由4种不同类型的帧表示和控制:

数据帧携带数据由发送器至接收器;

远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧;

出错帧由检测出总线错误的任何单元发送;

超载帧用于提供当前的和后续的数据帧的附加延迟。

    数据帧和远程帧借助帧间空间和当前帧分开。

1、数据帧

    数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。数据长度可为0。CAN技术规范2.0B数据帧的组成如下图所示。



在CAN技术规范2.0B中存在两种不同的帧格式,其主要区别在于标识符的长度,具有11位标识符的帧称为标准帧,而包括29位标识符的称为扩展帧。标准格式和扩展格式的数据帧结构如图所示。




CAN技术规范2.0B对报文滤波特别加以描述,报文滤波器以整个标识符位基准。屏蔽寄存器可用于选择一组标识符,以便映像至接收缓存器中,屏蔽寄存器每一位都必须是可编程的,它的长度可以是整个标识符,也可以仅是其中一部分。   


(1)帧起始(SOF):标志数据帧和远程帧的起始,它仅由一个显性位构成,只有在总线处于空闲状态时,才允许单元开始发送。所有单元都必须同步于首先开始发送的那个单元的帧起始前沿。(这就是后文介绍的帧同步)

2)仲裁场:由标识符和远程发送请求位(RTR)组成,见上图。

何谓标识符?就是用于标识报文的一组数字。这些位一从高位到低位的顺序发送。

标准格式和扩展格式的仲裁场有很大区别。

2.0B的标准格式:


标识符的长度为11位,这些位一从高位到低位的顺序发送,最低位为ID.0,其中最高7位不能全为隐性。RTR位在数据帧中必须为显性,而在远程帧中必须为隐性。  


扩展格式:


  仲裁场:29位标识符ID.28--ID.0 ;


         替代远程请求SRR位(隐性位);(Substitute Remote Request BIT)


之所以叫替代远程请求位,是因为它在相当于标准帧中远程请求位(RTR)的位置被发送,代替标准帧的RTR位。


can总线如何仲裁?

若有A,B  2个节点同一时刻一起向总线上发送数据,CAN总线是怎么仲裁的,来让A,B其中一个节点退出,保证高优先级的节点优先传输。

  首先要明白一个规则:在CAN总线上,若同一个时刻,既有节点向总线上发送隐性电平(相当于数据1),也有节点发送显性电平(数据0),那么此时总线上表现出来的为显性(数据0)。

  当总线空闲时,有多个节点同时需要发送报文,那么每个节点的发送器将会对发送位的电平和被监控的总线电平做比较,如果电平相同,那么该节点可以继续发送,如果发送的为一“隐性”电平(1),但是监控到一“显性”电平(0),那么该节点失去仲裁,必须退出发送状态,只到下一次总线空闲的时候在参与总线的仲裁竞争。

  由以上也可以看出,当有多个节点同时争夺总线的控制权,ID(11位或者29位标识符)最小的那个节点将会胜出,所以在CAN总线上,节点的ID越小,优先级越高。

为什么最小的ID的优先级最高?根据前面的规则,显性电平会替代隐性电平可知。


先列举2种特殊情况,根据仲裁来判断优先级。

     1.  若在同一时刻,标准格式的报文与扩展格式的报文同时抢占总线,且它们的基础ID相同,则发标准格式的报文节点就会PK成功。这是因为扩展格式在基本ID后,紧接着是SRR位,与IDE位,且这两位都是隐性位。而在标准格式中,这两位分别对应的位为RTR与r1,其中RTR既可以为隐性位,也可以为显性位,,但是r1必须为显性位。由仲裁规则可以此时标准帧必定胜出。

    2.  同理,如果在同一时刻,具有相同格式,且具有相同ID的数据帧与远程帧争夺总线控制权,那么数据帧必定胜出。因为RTR显性表示数据帧,隐性表示远程帧。这表明了数据帧的优先级大于远程请求帧,这样的规则是合理的。因为你想,远程请求帧是标识发送者向某一节点请求数据,而如果此时有其他节点在发送数据,是不是要先让人家把数据发送完呢,然后自己再向其他人请求数据。除非自己的ID优先级高于其他节点。


需要注意的一点是:只有仲裁场的位参与仲裁,数据场是不参与仲裁的,所以,不要以为如果两节点发送的数据帧或远程请求帧中的仲裁场各位相同,就回逐位比较数据场的数据。

CAN-bus规范V2.0的P8页上有如下语句:

Arbitration
Whenever the bus is free, any unit may start to transmit a message. If 2 or more units
start transmitting messages at the same time, the bus access conflict is resolved by
bitwise arbitration using the IDENTIFIER
. The mechanism of arbitration guarantees that
neither information nor time is lost. If a DATA and a REMOTE with the
same IDENTIFIER are initiated at the same time, the DATA prevails over the
REMOTE . During arbitration every transmitter compares the level of the bit
transmitted with the level that is monitored on the bus. If these levels are equal the unit
may continue to send. When a ’recessive’ level is sent and a ’dominant’ level is
monitored (see Bus Values), the unit has lost arbitration and must withdraw without
sending one more bit.


本人人工翻译(相信我的英语):

在总线空闲的任何时候,任何单元都有可以开始发送消息。如果有2个或以上的单元同时开始发送消息,总线的冲突由标识符按位仲裁来解决。仲裁机制保证了信息不会丢失,时间不会浪费。

如果一个数据帧和远程请求帧的ID相同,数据帧在仲裁中胜过远程请求帧。

在仲裁期间,每个发送器都会比较自己发送的位的电平和监测到的总线上的电平的高低。如果相等则继续发送,如果发送的是隐性位,却从总线上检测到显性位,则该单元失去仲裁权,然后必须退出不能再发任何一位数据。




         标识位扩展位IDE(隐性位);用于标识该帧是扩展格式。全称“识别符扩展位”(Identifier Extension Bit)


         远程发送请求位RTR 。为隐性时表明该帧是远程请求帧。

3)控制场:由6位组成,由图可见,控制场包括数据长度码和两个保留位,这两个保留位必须发送显性位,但接收器认可显性和隐性的全部组合。数据长度码DLC指出数据场的字节数目。数据长度码为四位,在控制场中被发送,数据字节的允许使用数目为0-8,不能使用其它数值。




4)数据场:是又数据帧中被发送的数据组成,它可包括0-8个字节,每个字节8位,首先发送的是最高有效位。

跟以太网中46-1500字节的数据量相比,就可以理解前文讲到的CAN总线采用的是短报文传输。一次最多8个字节。


5CRC场:包括CRC序列,后随CRC界定符。CRC场结构如图8所示。CRC序列由循环冗余码求得的帧检查序列组成,最适用于位数小于127(BCH码)的帧。CRC序列之后是CRC界定符,包含一个单独的“隐性位”


6)应答场(ACK):为两位,包括应答间隙和应答界定符,如图所示。在应答场中,发送器送出两个隐性位。

一个正确地接收到有效报文的接收器,在应答间隙,将此信息通过发送一个显性位报告给发送器。所有接收到匹配CRC序列的站,通过在应答间隙内把显性位写入发送器的隐性位来报告。应答界定符是应答场的第二位,并且必须是隐性位,  


   7)帧结束:每个数据帧和远程帧均由7个隐性位组成的标志序列界定。


至此,终于介绍完了数据帧的7个场,篇幅太长,剩下的另起一文。


原创粉丝点击