资料介绍
CAN总线起始于1986年左右,至今仍广泛应用。现在人们对安全的要求已大为提高,所以要不断仔细审视CAN的安全性能。现在已经发现的重要的CAN问题有:在消极报错状态下可能出现等效离线,使节点不能收发的时间相当长[1];错帧漏检率的估计不准,特别在误码率高时比Bosch CAN2.0数据高多个数量级[2],在单目的地址时影响数据正确性,在多个目的地址时会影响数据一致性;标准的振荡源精度要求偏低[3],使误用廉价器件成为可能,影响系统的稳定性;本文发现的优先级倒置的可能性,使调度分析结果的可信度下降;在数据帧倒数第二位的局部错可能引起不一致的接收重复或丢失[4]。所以在FlexRay尚未达到预定目标、无论在可靠性还是价格上能取代CAN以前,对CAN作进一步的改进仍然是非常有意义的。
CAN是一种代表性的事件触发通信协议,同时发生的多个通信请求将按照消息的优先级进行无损仲裁,高优先级的胜出。按照消息的优先级进行无损仲裁是CAN原始专利的唯一权利要求[5]。对于低优先级的消息而言,送达时间将受到高优先级消息的阻扰,在高优先级消息为周期性时,最坏送达时间是可以预先计算出的[6]。如果能安排好发送消息的初始相位并作宽松的时钟同步,这个最坏送达时间可以大为减少。事件触发协议的优点是总线带宽可以得到充分利用。另一个优点是高优先级消息可得到迅速发送。但是由于工业环境中普遍存在的电磁干扰,总线上会有毛刺,CAN总线的标准中已考虑到应对方法。现在发现毛刺应对方法可能使节点的同步受到影响,从而损及高优先级消息的发送机会,出现优先级的倒置,动摇了CAN总线的基本性能。
1 毛刺的存在
车内电磁环境恶劣, ISO 76372/3总结出代表性的传导和辐射干扰。有人专门作了辐射干扰的实验,参考文献[7]的实验中用24 V蓄电池给车内常用的继电器供电(CAN系统供电是独立的),电源线与CAN电缆靠得很近,在电缆线有屏蔽、线长为2 m时,手动开关继电器时可以看到CAN波形上叠加的毛刺,辐射干扰实验结果如图1所示。
图1 辐射干扰实验结果
实际汽车上也见到CAN总线失效的报告[8]:丰田汽车在经销商产品报告中确认,由任何原因召回的车中发现丢失CAN数据的记录有292宗。毛刺是引起CAN总线出错的可能原因,其具体诱发过程需要仔细分析,不能掉以轻心。
2 CAN位时间与消息仲裁原理
CAN总线把位时间划分为NBT等分的时间片,称为Tq。CAN总线控制器按Tq对总线上的差分电平进行采样,以决定内部状态。当总线上没有通信时,称为总线空闲,电平差在0~0.5 V,逻辑值为“1”。电平差为0.9 V以上时逻辑值为“0”。 由图1可知,存在“0“毛刺,也存在“1“毛刺。CAN总线驱动器的特性是线与,当“1”和“0”同时发生时,总线的电平为“0”,这便是仲裁功能。一帧开始发送的第一位是“0“,称为SOF,然后是消息的标识符ID。ID代表了消息的优先级,每个节点通过位采样知道总线上仲裁的结果,正常工作时如果发送“1”而读回“0”,表示本发送节点本次ID发送失败,需等下一次帧发送机会。
总线空闲时,一个有发送要求的节点须先观察是否有别的节点已经开始发送,如已开始就不能发送。正是这里,由一个“0”毛刺开始的时段可以误解为别的节点已开始传送SOF,毛刺阻断了该节点的发送(不管该节点要传送的消息优先级有多高)。
由于传送电缆延迟以及中间器件(如光隔离)的延迟τ,节点将见不到提前量τ以内发送的别的节点的SOF。同理,别的节点要经过τ以后才见到该节点发送的SOF,τ以后别的节点就因总线上已有发送而不允许发送了。这样,在本节点请求时刻±τ内的发送被认为是“同时”请求发送,它们将按ID仲裁。对迟于其τ的其他低优先级帧的发送,它也是必然胜出的。
3 CAN位时间同步的有关规定
CAN的位时间分为同步段(Sync)、传输段(Tprop)、缓冲1段(Ph1)与缓冲2段(Ph2),位值采样在Ph1 与Ph2之间。位值变化时将有跳变沿,只有1/0为同步用的跳变沿。跳变沿决定了相位差e,跳变沿在Ph2内e为负,在Sync内为0,在Tprop和Ph1内为正。每个节点根据e实行同步,同步的修正量受同步的种类限制。同步分两种:硬同步与重同步。硬同步对应帧开始时的情况,重同步对应帧内有同步沿时的情况。对重同步而言,每次的修正量不能大于称为重同步宽度的可预先设定的量SJW,SJW=min(Ph1,Ph2)。
有关本文讨论内容的CAN总线标准为ISO 118981(2003)[9]及ISO 16845(2004)[10],正是这些条款的规定保证了CAN总线协议在高度干扰的环境下能可靠工作。
ISO 118981第10.4.2.2款规定,节点只有在总线空闲时可以发SOF,在服务间隔第3位(I.M.3)的“0”视为SOF。
ISO 118981第12.4.2.1款规定硬同步在帧间的间隔中实行。而帧间间隔包括服务间隔和总线空闲,对上次发送的消极报错节点还包括禁发时间。因此,在I.M.3的跳变沿也是作硬同步用的。
ISO 118981第12.4.2.4款规定,重同步的目的是校正采样点的位置,e为“+”时延长Ph1,e为“-”时缩短Ph2。校正量在e小于或等于SJW时为e,反之为SJW。
ISO 16845第7.7.2款规定了接收节点对SOF的硬同步验证方法意味着同步段SYNC直接同步于1/0跳变沿。
ISO 16845第8.7.2.1款规定了发送节点在I.M.3位值采样点前有1/0沿时的硬同步验证方法:测试设备在被测单元I.M.3采样点前Tq加被测单元内部处理时间前发0,要求被测单元在跳变沿1位后发ID最高位。这意味着发送节点要与I.M.3内1/0跳变沿硬同步,0值被采样,下一位不再发SOF而是发ID最高位。
ISO 16845第8.7.3.1款规定了发送节点在I.M.3位值采样点后有1/0沿时的硬同步验证方法:测试设备在被测单元I.M.3采样点后1个被测单元内部处理时间后发0,要求被测单元在跳变沿后1 Tq立即发SOF。这意味着发送节点是硬同步,但开始发SOF。
ISO 118981第4.18和4.16款规定了发送节点和接收节点的定义。发送节点指的是发数据帧或远程帧的节点,其状态维持到仲裁失败退出或总线再度空闲,否则就是接收节点。因此总线空闲时遇到毛刺,则大家都是接收节点。
ISO 16845第7.7.9款规定了接收节点在总线空闲时对毛刺滤除的验证方法:要确定对总线空闲时短于Tprop+Ph1-1的0不作SOF处理。也就是说硬同步后未被采样到就不算作SOF。
4 毛刺造成优先级倒置
4.1 总线空闲时毛刺引起的倒置
总线空闲时,局部错的0毛刺被Tq采样到,发送节点就会按ISO 16845 7.7.2规定实行硬同步,然后就要按ISO 16845 7.7.9款确定是别的节点发送的SOF还是毛刺。如果节点H在毛刺后Tq有发送请求ReqH(如图2所示),它也必须等待Tprop+Ph1以确定总线是否空闲。另一个节点L如有发送ReqL,其到H的传送延迟为τ,只要它能在H的硬同步后的采样点采到,H就不再有发送机会。此时H、L请求的时间差为Tprop+Ph1-τ。如果2个节点靠得很近,τ≈0,那么H甚至无法与比它迟Tprop+Ph1的L竞争。同时它也无法与比它早τ-1的其他节点的发送相竞争。针对第1节中所讲的“同时”情况,它已完全无法参与竞争。
CAN是一种代表性的事件触发通信协议,同时发生的多个通信请求将按照消息的优先级进行无损仲裁,高优先级的胜出。按照消息的优先级进行无损仲裁是CAN原始专利的唯一权利要求[5]。对于低优先级的消息而言,送达时间将受到高优先级消息的阻扰,在高优先级消息为周期性时,最坏送达时间是可以预先计算出的[6]。如果能安排好发送消息的初始相位并作宽松的时钟同步,这个最坏送达时间可以大为减少。事件触发协议的优点是总线带宽可以得到充分利用。另一个优点是高优先级消息可得到迅速发送。但是由于工业环境中普遍存在的电磁干扰,总线上会有毛刺,CAN总线的标准中已考虑到应对方法。现在发现毛刺应对方法可能使节点的同步受到影响,从而损及高优先级消息的发送机会,出现优先级的倒置,动摇了CAN总线的基本性能。
1 毛刺的存在
车内电磁环境恶劣, ISO 76372/3总结出代表性的传导和辐射干扰。有人专门作了辐射干扰的实验,参考文献[7]的实验中用24 V蓄电池给车内常用的继电器供电(CAN系统供电是独立的),电源线与CAN电缆靠得很近,在电缆线有屏蔽、线长为2 m时,手动开关继电器时可以看到CAN波形上叠加的毛刺,辐射干扰实验结果如图1所示。
图1 辐射干扰实验结果
实际汽车上也见到CAN总线失效的报告[8]:丰田汽车在经销商产品报告中确认,由任何原因召回的车中发现丢失CAN数据的记录有292宗。毛刺是引起CAN总线出错的可能原因,其具体诱发过程需要仔细分析,不能掉以轻心。
2 CAN位时间与消息仲裁原理
CAN总线把位时间划分为NBT等分的时间片,称为Tq。CAN总线控制器按Tq对总线上的差分电平进行采样,以决定内部状态。当总线上没有通信时,称为总线空闲,电平差在0~0.5 V,逻辑值为“1”。电平差为0.9 V以上时逻辑值为“0”。 由图1可知,存在“0“毛刺,也存在“1“毛刺。CAN总线驱动器的特性是线与,当“1”和“0”同时发生时,总线的电平为“0”,这便是仲裁功能。一帧开始发送的第一位是“0“,称为SOF,然后是消息的标识符ID。ID代表了消息的优先级,每个节点通过位采样知道总线上仲裁的结果,正常工作时如果发送“1”而读回“0”,表示本发送节点本次ID发送失败,需等下一次帧发送机会。
总线空闲时,一个有发送要求的节点须先观察是否有别的节点已经开始发送,如已开始就不能发送。正是这里,由一个“0”毛刺开始的时段可以误解为别的节点已开始传送SOF,毛刺阻断了该节点的发送(不管该节点要传送的消息优先级有多高)。
由于传送电缆延迟以及中间器件(如光隔离)的延迟τ,节点将见不到提前量τ以内发送的别的节点的SOF。同理,别的节点要经过τ以后才见到该节点发送的SOF,τ以后别的节点就因总线上已有发送而不允许发送了。这样,在本节点请求时刻±τ内的发送被认为是“同时”请求发送,它们将按ID仲裁。对迟于其τ的其他低优先级帧的发送,它也是必然胜出的。
3 CAN位时间同步的有关规定
CAN的位时间分为同步段(Sync)、传输段(Tprop)、缓冲1段(Ph1)与缓冲2段(Ph2),位值采样在Ph1 与Ph2之间。位值变化时将有跳变沿,只有1/0为同步用的跳变沿。跳变沿决定了相位差e,跳变沿在Ph2内e为负,在Sync内为0,在Tprop和Ph1内为正。每个节点根据e实行同步,同步的修正量受同步的种类限制。同步分两种:硬同步与重同步。硬同步对应帧开始时的情况,重同步对应帧内有同步沿时的情况。对重同步而言,每次的修正量不能大于称为重同步宽度的可预先设定的量SJW,SJW=min(Ph1,Ph2)。
有关本文讨论内容的CAN总线标准为ISO 118981(2003)[9]及ISO 16845(2004)[10],正是这些条款的规定保证了CAN总线协议在高度干扰的环境下能可靠工作。
ISO 118981第10.4.2.2款规定,节点只有在总线空闲时可以发SOF,在服务间隔第3位(I.M.3)的“0”视为SOF。
ISO 118981第12.4.2.1款规定硬同步在帧间的间隔中实行。而帧间间隔包括服务间隔和总线空闲,对上次发送的消极报错节点还包括禁发时间。因此,在I.M.3的跳变沿也是作硬同步用的。
ISO 118981第12.4.2.4款规定,重同步的目的是校正采样点的位置,e为“+”时延长Ph1,e为“-”时缩短Ph2。校正量在e小于或等于SJW时为e,反之为SJW。
ISO 16845第7.7.2款规定了接收节点对SOF的硬同步验证方法意味着同步段SYNC直接同步于1/0跳变沿。
ISO 16845第8.7.2.1款规定了发送节点在I.M.3位值采样点前有1/0沿时的硬同步验证方法:测试设备在被测单元I.M.3采样点前Tq加被测单元内部处理时间前发0,要求被测单元在跳变沿1位后发ID最高位。这意味着发送节点要与I.M.3内1/0跳变沿硬同步,0值被采样,下一位不再发SOF而是发ID最高位。
ISO 16845第8.7.3.1款规定了发送节点在I.M.3位值采样点后有1/0沿时的硬同步验证方法:测试设备在被测单元I.M.3采样点后1个被测单元内部处理时间后发0,要求被测单元在跳变沿后1 Tq立即发SOF。这意味着发送节点是硬同步,但开始发SOF。
ISO 118981第4.18和4.16款规定了发送节点和接收节点的定义。发送节点指的是发数据帧或远程帧的节点,其状态维持到仲裁失败退出或总线再度空闲,否则就是接收节点。因此总线空闲时遇到毛刺,则大家都是接收节点。
ISO 16845第7.7.9款规定了接收节点在总线空闲时对毛刺滤除的验证方法:要确定对总线空闲时短于Tprop+Ph1-1的0不作SOF处理。也就是说硬同步后未被采样到就不算作SOF。
4 毛刺造成优先级倒置
4.1 总线空闲时毛刺引起的倒置
总线空闲时,局部错的0毛刺被Tq采样到,发送节点就会按ISO 16845 7.7.2规定实行硬同步,然后就要按ISO 16845 7.7.9款确定是别的节点发送的SOF还是毛刺。如果节点H在毛刺后Tq有发送请求ReqH(如图2所示),它也必须等待Tprop+Ph1以确定总线是否空闲。另一个节点L如有发送ReqL,其到H的传送延迟为τ,只要它能在H的硬同步后的采样点采到,H就不再有发送机会。此时H、L请求的时间差为Tprop+Ph1-τ。如果2个节点靠得很近,τ≈0,那么H甚至无法与比它迟Tprop+Ph1的L竞争。同时它也无法与比它早τ-1的其他节点的发送相竞争。针对第1节中所讲的“同时”情况,它已完全无法参与竞争。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- uC/OS-II学习笔记——优先级反转与优先级继承机制
- STM32F103芯片中断优先级以及FreeRTOS优先级设置
- 2.FreeRTOS中断优先级和任务优先级
- cortex M内核优先级设置
- STM32的中断:抢占优先级和响应优先级资料下载
- 51单片机的中断优先级和中断嵌套的详细资料概述
- 51单片机的中断优先级是怎么样的及中断嵌套的资料说明
- 51单片机的中断源优先级问题的详细资料说明
- 为什么51单片机的默认中断优先级都是低级及中断嵌套
- 51单片机的中断优先级及中断嵌套的详细资料说明
- DSP中断如何设置优先级 20次下载
- NVIC中断优先级分组 1次下载
- STM32F10X的中断优先级 41次下载
- 基于优先级的柔性时空工作流异常处理
- 优先级参数配对组合测试集生成策略
- 华为和思科默认路由优先级 860次阅读
- GD32如何配置中断优先级分组以及中断优先级 2508次阅读
- 为什么有些STM32中断没有子优先级? 684次阅读
- Free RTOS的优先级翻转 1108次阅读
- OB优先级和运行时特性 1758次阅读
- 鸿蒙内核源码:32级优先级的进程和线程调度 1844次阅读
- 嵌入式技术中如何定义进程优先级 1470次阅读
- 嵌入式系统中优先级反转的产生原因及2种解决方案 3798次阅读
- 关于嵌入式系统优先级反转的原因及解决方法探讨 5197次阅读
- STM32单片机中抢占优先级和响应优先级的表达方式解析 1.1w次阅读
- 解析单片机里的中断优先级 8895次阅读
- 如何设置51单片机的中断优先级 3.3w次阅读
- STM32单片机优先级的定义 9197次阅读
- c语言运算符优先级规律 7400次阅读
- stm32定时器优先级 5235次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1491次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 95次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 11次下载 | 免费
- 6100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 4次下载 | 免费
- 8基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537793次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多