《CAN数据链路层.ppt》由会员分享,可在线阅读,更多相关《CAN数据链路层.ppt(28页珍藏版)》请在三一办公上搜索。
1、CAN-Bus数据链路层,目 录,概 述,1.5小节介绍了CAN-bus物理层相关知识,本小节重点介绍CAN-bus的数据链路层。,数据链路层Data Link Layer,CAN-bus上传输的基本单位是CAN帧。CAN-bus通过各种不同的帧实现以上这些功能,所以下面从介绍CAN-bus的帧开始。,CAN-bus帧分类,CAN-bus通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔 种类型。,5,数据帧,远程帧,错误帧,过载帧,帧间隔,目 录,数据帧,数据帧是使用最多的帧,结构上由7个段组成,其中根据仲裁段ID码长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B)。,仲裁段
2、,数据段,ACK段,与标准帧相同,帧结构,标准帧,扩展帧,帧起始,控制段,CRC段,帧结束,由于帧起始和帧结束比较简单,先说明;其他段随后逐一说明,帧起始和帧结束,帧起始和帧结束用于界定一个数据帧,无论是标准数据帧或扩展数据帧都包含这两个段。,标准帧或扩展帧,由单个显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。,由7个连续的隐性位组成。,仲裁段,CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级。根据CAN2.0标准版本不同,帧ID分为11位和29位两种。,远程帧发送标识位,占1bit,为显性,替代远程帧请求位,占1bit,为显性,识别符扩
3、展位,占1bit,标准帧中该位位于控制段,为显性;扩展帧中该位位于仲裁段,为隐性。,CAN-bus是如何解决多个节点同时发送数据,即总线竞争的问题?该问题由仲裁段给出答案。,组成29位ID,前11位与标准帧的11位ID编码位置相同,总线仲裁,CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对应电平相同,如果不同,则停止发送并做其他处理。,发送位的电平,监测总线的电平,进行比较,通信数据线,根据比较结果判断是否停止发送和其他处理,如果该位属于仲裁段,则退出总线竞争;如果处于其他段,则产生错误事件(帧ACK时间段或被动错误标 志传输期间除外)。,总线仲裁,假设节点A、B和C都发送相同格式
4、相同类型的帧,如标准格式数据帧,它们竞争总线的过程是:,只听模式,只听模式,节点A,节点B,节点C,节点B的ID第5位是隐性,节点A、C的为显性,总线电平为显性,节点B退出总线竞争。,节点C的ID第3位是隐性,节点A的为显性,总线电平为显性,节点C退出总线竞争。,从该分析过程得出结论是:帧ID值越小,优先级越高;对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理。,总线仲裁,由于数据帧的RTR位为显性电平,远程帧的RTR位为隐性电平,所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高:,节点A发送数据帧,节点B发送远程帧,节点A仲裁失败退出发送,进入只听模式;节点B获
5、得总线,继续发送剩余数据。,ID段相同,只听模式,总线仲裁,由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐性电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。,节点A发送标准帧,节点B发送扩展帧,当发送IDE位时,由于线与的原理,总线上出现显性电平,节点B仲裁失败,进入只听模式。节点A获得总线,继续发送剩余数据。,只听模式,前11位ID相同,控制段,控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。,识别符扩展位,占1bit,标准帧中该位位于控制段,为显性;扩展帧中该位位于仲裁段,为隐性
6、。,保留位0和1,各占1bit,总是用隐性电平填充,数据段的长度码,占4bit;BCD编码,范围08,数据段,一个数据帧传输的数据量为08个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合。,与其他总线协议相比,CAN-bus的短帧结构具有以下优势:,Data:Byte0 Byte7,传输时MSB先传输,CRC段,CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。CRC校验段由15位CRC值和1位CRC界定符构成。,占1bit,隐性电平填充,模2除以多项式 G(x),X15+X14+X10+X8+X7+X4+X3+1,ACK段,当一个接收节点接收的
7、帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平。,1个隐性电平,ACK槽期间:发送节点:发送隐性电平接收正确的节点:发送显性电平,总线线与结果:显性电平,发送节点根据此结果判断发送成功,目 录,远程帧,与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐性电平)。,数据帧与远程帧区别,数据帧与远程帧的区别如下:,目 录,CAN-bus错误类型,尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CAN-bus的错误类型共有5种。,格式错误,CRC错误,应答错误,位填充错误,位发送错误,发送节点计算得到的CRC值与接收到的
8、CRC值不同时发生该错误,发送节点在ACK阶段没有接收到应答信号时发生该错误,发送节点在发送时发现总线电平与发送电平不相同时发生该错误,通信线缆上传输信号违反“位填充”规则时发生该错误,传输的数据帧格式与任何一种合法的帧格式不符时发生该错误,错误帧,当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识。,错误标志,错误帧结构,主动错误标识,被动错误标识,由处于主动错误状态的节点发送,由处于被动错误状态的节点发送,错误状态及转化,为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3
9、种状态及其行为。,主动错误,被动错误,总线关闭,设备正常参与总线通信,检测到错误时发送主动错误标识,数据帧的收发都被禁止,设备正常参与总线通信,检测到错误时发送被动错误标识,REC:接收错误计数器 TEC:发送错误计数器;复位时两者都被清0。,目 录,过载帧,当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成。,过载标志,过载帧界定符,+,过载帧结构:,由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象。,帧间隔,帧间隔用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。,
10、1:帧间隔过后,如果无节点 发送帧,则总线进入空闲。,2:帧间隔过后,如果被动 错误节点要发送帧,则先 发送8个隐性电平的传输 延迟,再发送帧。,保证主动错误节点优先发送,避免被动错误节点因硬件故障干扰整个网络,目 录,小 结,CAN-bus整个链路层处理数据的流程是:,初始化,等待空闲,等待总线SOF或应用层的发送请求,发送报文,接收ACK,等待EOF,发送错误帧,接收报文,发送ACK,等待EOF,发送错误帧,1,2,2,2,4,3,6,8,5,7,5,不取消发送请求,发送请求,检测到SOF,仲裁失败,失败,失败,EOF无效,检测到错误,失败,失败,成功,EOF有效,TEC和REC清0,REC加1,REC加8,REC减1,TEC减1,TEC加8,若TEC 8则TEC加8,若TEC 255则断开连接,成功,成功,无错,成功,