汽车单片机与局域网技术-项目二 汽车CAN总线技术基本原理任务二CAN数据链路层基本原理_第1页
汽车单片机与局域网技术-项目二 汽车CAN总线技术基本原理任务二CAN数据链路层基本原理_第2页
汽车单片机与局域网技术-项目二 汽车CAN总线技术基本原理任务二CAN数据链路层基本原理_第3页
汽车单片机与局域网技术-项目二 汽车CAN总线技术基本原理任务二CAN数据链路层基本原理_第4页
汽车单片机与局域网技术-项目二 汽车CAN总线技术基本原理任务二CAN数据链路层基本原理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图2-6CAN标准消息帧结构

扩展格式的消息帧由CAN2.0B协议规定,具体帧结构如图所示。它有29位标识符,后18位专用于标记CAN2.0B的消息帧。图2-7CAN扩展消息帧结构

CAN的消息帧按照其用途可分为数据帧、远程帧、错误帧、过载帧和帧间隔等五种。数据帧:用于发送节点向接收节点传输数据;远程帧:用于接收节点向发送节点请求发送数据;错误帧:用于当某个节点检测到总线上有错误时,向其它节点通知出错,停止这些帧的接收和发送;过载帧:用于接收节点向发送节点通知,自己还没有做好接收数据的准备,延迟下一个帧的发送时间;帧间隔:用于将数据帧及遥控帧与前面的帧分离开来。1、数据帧

数据帧由7个不同长度的位场组成:图2-8构成数据帧的七个位场(1)帧起始(SOF,StartOfFrame)

用于标志数据帧或远程帧的开始。作用是向总线上其它节点表明自己要发送信息。

帧起始的值是“0”,在总线上输出显性电平。总线空闲时,状态为“1”,即隐性电平。只持续一个位数的时间周期。

当一个节点要发送数据时,它先检测总线上有没有数据发送,若持续一定时间总线上都是隐性电平,则它开始发送数据。

发送的第一位数据就是帧起始,一位显性电平,总线上的其它节点检测到总线上出现显性电平“0”时,就知道有节点要发送数据,大家就以总线电平从“1”变为“0”的那个时刻为基准,同步自己的接收系统,开始接收数据。

所以,帧起始只有一位,为显性电平“0”,用于向总线上的其它节点告知“我要发送数据”,并提供一个同步基准时刻,供大家参考。(2)仲裁场(ArbitrationField)

仲裁场主要作用是给出本帧数据的身份号码1)优先级和重要性2)标示出这一帧是数据帧还是远程帧。

在标准格式中,仲裁场由11位标识符和RTR位组成;

在扩展格式中,仲裁场由29位标识符、SRR位、标识位和RTR位组成。

标识符:CAN给每一条报文分配一个唯一的身份号码(ID)。CAN2.0A总线中标识符为11位,CAN2.0B总线中为29位。

RTR(远程传输请求)位:该位为显性电平“0”时,说明这一帧为数据帧;为“1”时,说明这一帧为远程帧。

SRR(替代传输请求)位:在扩展格式中,该位为隐性电平“1”。IDE(标识符扩展)位:在扩展格式中它处于仲裁场的一部分,为隐性电平“1”;在标准格式中该位属于控制场,为显性电平“0”。(3)控制场(ControlField)

控制场用于向总线上的其它节点说明这一帧的数据场有多少位,以便于接收。

控制场由6位组成,第一位为保留位1(r1),第二位为保留位0(r0),第三至六位为数据长度码(DLC)。

DLC共4位,用数字表示紧接着控制场后面的数据场共有多少个字节表2.41DLC的含义0000:数据场有0字节数据,即数据场有0位;0001:数据场有1字节数据,即数据场有8位;1000:数据场有8字节数据,即数据场有64位。0010:数据场有2字节数据,即数据场有16位;……

由于标准帧有可能和扩展帧同时出现在CAN2.0B的网络中,所以对于总线上的其它节点而言需要根据前三场信息判断这一帧是扩展帧还是标准帧,是数据帧还是远程帧。那么CAN总线上的接收节点是怎样判断的呢?

首先我们仔细研究图4.12。

从图4.12中可看出,从起始位开始数,第14位为r1或IDE,若此位为显性电平“0”时,说明这一帧为标准帧,紧接着后四位是DLC;若此位为隐性电平“1”时,说明这一帧为扩展帧,紧接着的后18位是18位标识符。

若第13位是显性电平“0”时,说明这一帧为标准格式的数据帧,若此位为隐性电平“1”时,到底是标准格式的远程帧还是扩展格式,要看第14位,若14位为显性电平“0”,则说明标准格式的远程帧,若第14位隐性电平“1”,则要看第33位,是显性电平“0”时,说明这一帧为扩展准格式的数据帧,若此位为隐性电平“1”时,若为为扩展格式的远程帧。

具体判断规则见表4.5。表4.5标准帧/扩展帧、数据帧/远程帧的判断规则第13位RTR/SRR第14位R1/IDE第34位X/RTR帧的类型备注0XX标准格式的数据帧表中0表示显性电平,1表示隐性电平;X表示任意值。10X标准格式的远程帧110扩展格式的数据帧111扩展格式的远程帧(4)数据场(DateField)

数据场用于装载数据帧需要传输的数据,0-8字节组成。

数据帧按照从高编号字节到低编号字节,从每个字节高位到低位的顺序紧接着DLC0位后开始排列要传输的数据。比如:若DLC的内容是1000,数据帧则以第7帧第7位开始,后面是第7帧第6位,第7帧第5位,…,第7帧第0位;第6帧第7位开始,后面是第6帧第6位,第6帧第5位,…,第6帧第0位,……,直到第0帧第0位结束。(5)CRC场(CRCField)

CRC场用于校验数据在传输过程中是否出现错误。

CRC:CyclicalRedundancyCheck,循环冗余码校验。

利用除法及余数的原理来作错误侦测(ErrorDetecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC值并与收到的CRC值相比较,若两个CRC值不同,则说明数据通信出现错误。

这里CAN2.0所采用的循环冗余检验多项式为:CRC(15位)=X15+X14+X10+X8+X7+X4+X3+1CRC场由15位的CRC序列和一位的CRC界定符(隐性电平“1”)组成。15位的CRC序列是发送节点将帧起始、仲裁场、控制场、数据场组成的数字,根据多项式进行CRC运算所生成的CRC值。

特别提示:在发送节点参加CRC运算的数据是没有进行位填充的数据,接收端参加CRC运算的数据是进行过解除位填充的数据。(6)应答场(ACKField)

应答场用于接收节点向发送节点发送“已经有效接收”的应答信号。

应答场有两位组成:应答间隙和应答界定符。发送节点在这两位都只发送隐性电平“1”,从而让出总线供接收节点应答。

所有收到正确的帧起始、仲裁场、控制场、数据场和CRC场的接收节点,在应答间隙向总线发送显性电平“0”,以此向发送节点应答。(7)帧结束(EOF,EndOfFrame)

帧结束用于向总线上的各节点宣布此帧发送到此结束。

帧结束信号由7位隐性电平构成,即连续7个“1”。2、远程帧

某一节点需要某个数据时,就向总线发出远程帧。远程帧的身份号码(ID)就是需要的数据代码。

远程帧由6个不同长度的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结束。

远程帧的结构和数据帧基本相同,不同之处就是没有数据场,RTR为隐性电平“1”,DLC值为所请求数据的字节数。3、错误帧

节点在接收和发送消息时检测错误、并向总线上其它节点通知错误。

错误帧由两个不同的场组成第一个场为错误标志场,第二个场是错误界定符。

(1)错误标志

主动错误标志(ErrorActiveFlag)

被动错误标志(ErrorPassiveFlag)主动错误标志由6个位的连续显性电平“000000”构成。被动错误标志由6个位的连续隐性电平“111111”构成。(2)错误界定符

错误界定符由8个位的隐性位“11111111”构成。图2.13错误帧结构

当一个主动节点检测到主动错误时,就向总线发送主动错误标志,连续6个显性电平“000000”。所有其他的节点检测到这个错误后,同时开始向总线发送主动错误“000000”标志。总线上检测到的结果就是把各个单独节点发送的不同的错误标志叠加在一起构成的一个显性电平序列,总长度最小为6个位,最大为12个位。

当一个被动节点检测到错误时,它就会试图向总线发送被动错误标志。其实这个被动节点要做的工作只是等待,等到6个连“1”或6个连“0”。

如果是6个连“1”,可以理解为这6个连“1”就是本节点发出的。如果是6个连“0”,可以理解为本节点发送的6个连“1”被主动节点发送的6个连“0”所覆盖。

无论是被动还是主动节点,当错误标志传送完以后,检测总线,直到检测出一位的隐性电平“1”时,表明所有主动错误标志发送完毕。

然后所有节点就开始发送7位以上的隐性电平“1”。同检测到的那个“1”合起来,就构成了错误界定符,即8个连续的隐性电平“11111111”。

4、过载帧接收节点通知发送节点,自己尚未完成接收准备过程。(1)过载标志:显性电平“000000”。

(2)过载界定符:隐性电平“11111111”。

5、帧间隔

帧间隔是用于分隔数据帧和遥控帧的帧。(1)间隔:连续3个位的隐性电平“111”。(2)总线空闲:隐性电平,无长度限制(3)延迟传送:连续8个位的隐性电平“11111111”。

几个节点同时发送数据时出现冲突,CAN是怎样解?CAN总线上可以接很多节点,只要总线空闲,哪个节点都随时可以发送信息。

正常情况下,CAN总线是按照其发送的时间顺序来决定谁先发送的。

有几个节点在检测到总线上正在发送的某一数据帧发送的帧结束,同时开始数据帧的发送时,到底让哪一个节点先发送呢?CAN总线采用的是非破坏性按位仲裁规则。二、CAN发送数据冲突的解决CAN总线采用的是非破坏性按位仲裁规则:1、CAN总线上的数据采用非归零(NRZ)编码,数据位只有两个互补的逻辑值:显性或隐性。显性电平“0”可以覆盖掉隐性电平“1”。2、在CAN总线上发送的每个消息帧,都有各自唯一的身份号码ID。

3、ID号码越小越具有优先权。图2-9非破坏性逐位仲裁过程示意图节点1的ID号为11001011111,节点2的ID号为11001111111,节点3的ID号为11001011001。当发送到第5位ID号时,都保持发送状态。当节点2检测到总线上的状态和自己发送状态不一致,失去了仲裁,变为只收不发;当节点1发送到第2位ID号时,发现总线状态与自己发送状态不符,失去仲裁,变为只收不发。节点3最后获得总线的使用权,继续自己的消息帧的发送过程。

整个仲裁过程中,是从SOF位开始一位一位地进行仲裁的,所以称作按位仲裁。获得总线使用权的节点3,自始至终没有感觉到自己的消息帧发送受到仲裁过程的任何影响,所以称之为非破坏性仲裁。两者合起来称作非破坏性按位仲裁规则。(1)数据帧和遥控帧的优先级

具有相同ID的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。数据帧和遥控帧的仲裁过程如图2-10所示。图2-10数据帧和遥控帧的仲裁过程示意图图2-11标准格式帧和扩展格式帧的仲裁过程示意图(2)标准格式和扩展格式的仲裁过程标准格式的RTR位为显性位的具有优先权,可继续发送。CAN是怎样实现位填充的?CAN总线中传输的消息帧的每一位都由不归零码表示,缺点是并不是每一位都携带同步信息,只有在显性电平和隐性电平互相跳变的时刻携带有同步信息。CAN总线的同步信息携带在“0”和“1”互相跳变的时刻,总线上的每个节点只有在这些时刻才可以根据总线上的同步信息修正自己的时钟,这就是所谓的同步。

如果在一个消息帧中有太多相同电平的位,就无法进行时钟的同步调整。失去同步后接收节点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论