探讨CAN总线的抗干扰能力
1 物理层[13]
1.1 信号状态
CAN总线的信号状态为2种:隐位与显位。当总线上出现隐位与显位发送的竞争时,总线上的最终结果是显位。这种二值特性对CAN总线的可靠性与其他特性有很大贡献。CAN总线信号的二值且“单稳态”的特性为它的数据链路层创造了条件,即CAN总线上可以容许多主发送、竞争占线的方式。这极大简化了消息的调度。为使总线上的节点均有机会发送,有些总线采用“主从方式”,这种方法使总线的利用率较低,且从节点消息发送的等待时间较长。有些总线采用“令牌方式”,但令牌的丢失和重复需要特别的处理机制。
许多总线是不容许总线上有冲突的,因为冲突发生后,不同的接收节点得到的电平结果是不同的。这使它们对总线上发生的事件在时间上与内容上产生不同的解释,退出冲突就会有时间的先后,从而导致节点间状态的不同步。但是由于干扰的存在,节点可能会有误动作,发生不希望的冲突。为此,要增加需多辅助的设备来防止冲突,例如在时间触发协议中经常采用的总线监守。在CAN总线里,冲突的处理由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点(包括发生冲突的节点)容易地取得数据的一致性和节点状态的同步。
FlexRay总线的状态有低功耗闲置、闲置、“0”、“1”四种。在正常工作模式时,总线接收部分只认可后3种状态。与RS485总线不同的是,FlexRay收发器有一个判断闲置状态的机制。当总线电平差处于某范围内——uBusActiveLow(最低-450 mV)~uBusActiveHigh(最高450 mV)一段时间(dIdleDetection,最小50 ns,最大250 ns)后,它就将RxEN引脚置”1”,并将RxD置”1”。当总线电平超出该范围一段时间(dActivityDetection,最小100 ns,最大300 ns)后,就退出闲置状态。因此它不会在闲置状态受干扰而轻易地误判为新帧的开始。而总线上因干扰而引起冲突的情形可由另设的总线监守加以防止。当然,这些功能的添加意味着成本的增加。
1.2 信号电平与共模电压
信号电平的高低有两层影响: 一是闲置时有干扰被误认为是传送的启动信号;二是传送逻辑信号时因干扰而产生误码。
RS485接收器的阈值很小,总线电压差小于-200 mV时为“0”,大于200 mV时为“1”。因此,200 mV幅度的干扰就可能引起误启动,而造成误码的干扰幅度为400 mV。RS485总线的共模电压为-7~+12 V。
CAN只有2种状态: 当总线电压差小于0.5 V时,接收为隐位(即逻辑“1”);大于0.9 V时,为显位(即逻辑“0”)。0.5~0.9 V为变化的过渡区。总线隐位电压差的正常值为0 V,因此可能引起误启动的最小干扰为0.5 V;显位电压差的正常值为2.0 V,合格的网络显位电压差的最小值为1.2 V,引起误码的最小干扰为0.3 V。CAN总线的共模电压为-2~+7 V。
前面已介绍了FlexRay总线在总线闲置与正常通信的过渡情况,不再重复。它的接收器逻辑“1”电平为uData1(最低150 mV,最高300 mV),逻辑“0”电平为uData0(最低-300 mV,最高-150 mV)。因此引起误码的最小干扰为0.3 V。FlexRay总线的共模电压为-10~+15 V。
1.3 采样
采用RS485收发器的总线往往与UART相连,它们一般在启动电平负跳变后的1/2位处对总线的逻辑值作采样判断。因此,当总线闲置时,若干扰的幅度足够大,且持续时间大于1/2位,就可能产生误启动。
CAN总线的位值一般在80%~90%位处采样[4],因此它能容忍的误启动干扰不但幅度大,而且时间长。正常传送时,高速CAN的位采样为1次,低速时可以有3次(例如TJA1000中由SAM位控制)。这意味着可以抵御1次干扰引起的错误,因为没有看到这3次采样的间隔有多大,只能估计
CAN总线抗干扰能 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)