CAN Omega 1.1版本开发笔记(二)——CAN总线120Ω端电阻的正确理解
在前一篇文章里我提到了CAN总线端点需要接入120欧姆电阻的问题,事实上,相信很多厂商对于120欧姆的理解其实是有偏差的,只是为了加120欧姆电阻而加120欧姆电阻,或者,看到别人加了电阻,我不加就觉得自己是错的,甚至还有说只加了一个60欧姆单电阻也能正常工作的,总之各种说法都有,这篇文章就我个人的理解来解释一下为什么是120欧姆电阻,以及什么时候该加什么时候不该加。如有疏漏还请各位看官指正。
- 为什么是120欧姆
这个要从传输线理论说起,我们知道,通常我们概念中的电路,都为集中参数电路,什么叫集中参数电路呢?一般就是,电路的参数都由电路中的电气元件决定,而导线被视作理想传输线,即电容为、电阻、电感都视作0的这样一种模型下讨论的。但事实并非如此,在实际情况中,导线中存在寄生电容(两条线之间)和分布电感,以及导线还会有自身的阻抗。只不过通常这些参数的量级都非常小,而且通常使用的环境都是低压、低频环境,导线的分布电感和寄生电容对于电路的影响可以忽略不计,而由于低频信号的波长比导线长度要大得多,因此也可忽略电磁波的反射、镜像、和驻波。也就是说,集中参数模型适用于绝大多数的场景,我们可以按直观对电路的理解来设计电路。
然而,当某些极端情况下,比如,导线非常长或者频率很高的时候,此时传输线的电容、电感以及阻抗已经不能忽略不计,此时的电路模型就不能按照集中参数模型来分析,这时候就叫做分布参数电路。分布参数电路在生活中并不罕见,例如我们的高压电网,虽然频率很低(50Hz),但由于其长度通常可以达到几千米甚至几百千米,因此其传输线长度已经和波长可比拟,此时不能视为集中参数来处理,因此相信读电力的朋友对于三相短路电流计算、短路位置、传输线的线径材料的选择以及有功无功电流的计算的蛋疼之处应该记忆犹新吧。
再说说传输线阻抗的概念:
特性阻抗:又称“特征阻抗”,它不是直流电阻,属于长线传输中的概念。在高频范围内,信号传输过程中,信号沿到达的地方,信号线和参考平面(电源或地平面)间由于电场的建立,会产生一个瞬间电流,如果传输线是各向同性的,那么只要信号在传输,就始终存在一个电流I,而如果信号的输出电平为V,在信号传输过程中,传输线就会等效成一个电阻,大小为V/I,把这个等效的电阻称为传输线的特性阻抗Z。信号在传输的过程中,如果传输路径上的特性阻抗发生变化,信号就会在阻抗不连续的结点产生反射。反射波与原信号叠加,可能造成驻波或者波形畸变,电平不正常以至于总线无法正常通信。事实上对于传输线的阻抗匹配,做的最多的就是高速PCB的设计中,例如CPU时钟线,DRAM的地址线和数据线,通常考虑9次谐波,即100MHz的传输信号,通常需要做900MHz的阻抗匹配,而对于RF射频信号天线端的阻抗匹配,已经是习以为常的做法了,对天线的信号质量起到决定性的作用。
而对于CAN总线来说,CAN总线的数据速率并不高,CAN2.0B的速度最高通常只用到1Mbps,这对于普通PCB设计来说已经是一个很慢的信号了,然而关键并不在此,而是CAN总线最初设计为现场总线,其长度通常也可达几千米,物理层是从RS485演变而来,所以此时和电网遇到的挑战也是一样的,只不过,和高速PCB以及RF领域相比,是属于两种极端情况,高速PCB以及RF前端属于传输线并不长(通常只有几个厘米),但信号频率很高,达G级别,而对于CAN这类现场总线,其信号频率并不高,撑死只有几Mbps,但其传输线长可达几千米甚至几百千米。由此可见,这样两种情况下,都符合了“传输线长度和载波波长可比拟”的条件,只能按照分布参数电路来分析。
最后说说为什么是120欧姆,实际上并不是为了120欧姆而加120欧姆电阻,可以说是120欧姆也可以说120欧姆并不完全正确。根据前面的解释我们很容易理解,120欧姆是什么呢?其实它就是普通双绞线的特征阻抗,作用就很明显了,在终端进行阻抗匹配而防止总线终端发生反射而造成反射波与正常信号叠加而造成总线电平不正常进而通信发生错误(实际上阻抗匹配的结果就是将总线等效于两根无限长的导线,即不会发生反射),但实际使用环境中,我们很多时候用的并不是双绞线,可能是你自己剪了2段杜邦线,根本没有绞合在一起,这时候特性阻抗显然不是120欧姆,或者说,导线用的材料、长度不同,此时特性阻抗也不是120欧姆。
下表列出了不同长不同材料的双绞线以及不同信号载波速率下其特性阻抗以及终端匹配阻抗的推荐值:
我们看到,0~40m区间,其推荐终端匹配阻抗为124欧姆,而随着长度增加,其阻抗值是在变化的。
通常,标准的1.5平方毫米线径的屏蔽双绞线为例:2KM以内的终端电阻值是120Ω;而2~3KM是160Ω;3~4KM是220Ω;4~10KM是390Ω,不尽相同。
用CANscope的眼图分析可以分析当前总线特征阻抗分布情况。
综上可知,120欧姆实际上是一个大多数使用场景下的经验值,在汽车这个使用环境中,通常总线长度只有几米,所以自然会选择使用120欧姆电阻。当然有些人会问,120欧姆是直流阻抗,会有损耗,我用L-C串联弄个当前载波频率下是120欧姆的网络行不行呢?我可以告诉你可以是可以,但是实际情况下,信号也是会有频偏的,也会有多个频率的载波在工作,这时候,比如1Mbps的和250Kbps的载波同时在工作,这时候L-C网络你得跟着变化才行吧。
2. 什么时候需要接上120欧姆电阻
在CAN Omega 1.1版本开发笔记(一)中我已经提到了,以及通过前面的分析,120欧姆只是为了保证阻抗完整性,消除回波反射,提升通信可靠性的,因此,其只需要在总线最远的两端接上120欧姆电阻即可,而中间节点并不需要接(接了反而有可能会引起问题)。因此各位在使用CAN Omega做CAN总线侦听的时候,大多数情况下是不需要这个120欧姆电阻的,当然,即使当前网络中并没有终端匹配电阻,只要传输线长度不长(比如SysCan360比赛环境中,传输线只有1-2米)CAN节点数量不多的情况下,不要这个120欧姆电阻也完全可以工作,甚至,你接任意电阻都是不会有影响的。因为此时传输线长度和波长还相差甚远,节点不多的情况下,反射波的叠加信号强度也不会很强,因此传输线效应完全可以忽略。
而哪些情况需要呢,主要就是,当使用2个CAN Omega对发或者当前网络中仅有2个CAN设备的时候,此时两个端点最好都加上终端匹配电阻,当然,前面也说过了,传输线长度不长的时候,也可以不需要2端120欧姆电阻,但为了信号完整性考虑,加上这两个电阻才是严谨的。
3. 关于USB CAN使用了60欧姆终端电阻的问题:
其实在这一点上,我和主办方都犯了错误,所以在这里做个纠正,首先就是要说明一下CANalyst-II的2个120欧姆电阻的正确理解。下图为CANalyst-II的接口图:
每通道内置了2个120欧姆的电阻,如果2个电阻都拨到ON,则总线中就接入了2个120欧姆的电阻,此时CAN_L和CAN_H之间的电阻则为60欧姆。这里要注意一点,最好不要当成是60欧姆来理解,接入2个120欧姆和单个60欧姆的意义实际上有区别,根据查阅了厂商的设计资料,2个120欧姆电阻的意义在于,使用USB CAN调试某些不带终端电阻的中间节点设备时,有时候CAN总线上没有2个120欧姆电阻通信可能会异常,此时可以接入2个120欧姆电阻作为2个终端电阻来作阻抗匹配,这时候其他端点不应接入任何终端电阻!并且,这2个120欧姆电阻不可用1个60欧姆电阻代替!
那么,结论很明确了,比赛中主办方的CAN网关节点使用了2个120欧姆的CAN终端电阻,此时作为选手接入,则正确的做法应该是,终端不应使用任何电阻。
不过,由于当时年少无知,实际比赛的时候终端给接了2个120欧姆的设备和1个60欧姆的CANalyst-II,测试下来总线仍然正常工作,但此时CAN总线的CAN_H和CAN_L之间的电阻变为60/3=20欧姆,是不正确的做法!然而为什么总线正常工作呢,这表明了我前面的分析是正确的,由于比赛所用传输线长度仅有1-2米,而125kHz载波的波长大概在(c/f)=(3e8m/s)/(125e3Hz)=2.4km,其临界长度为2.4kn/10=240m>>2m,也即传输线长度不超过240m,分布阻抗带来的影响可以忽略不计,所以比赛期间设备可以正常工作也是一件显然的事情,而当时也只使用了4个端点设备,也不可能叠加出很强的反射波。当然,处于严谨的考虑,比赛当时,中间节点不应接入任何电阻。
4. 关于使用60欧姆单电阻的正确性
关于这个问题,网友以及前辈也做了不少实验,这里有个总结帖:
http://www.keil.com/forum/21024/can-bus-one-60-ohm-instead-of-two-120-ohm-resistors/
普遍结论就是,当CAN总线节点数量较少(3~5个,当总线节点数量增加时,节点的反射波会被叠加增强),以及速率不高(GM的测试结论是不高于125kbps波特率),终端电阻的影响可以忽略不计,甚至GM的车型中一直在使用低速CAN,且是不使用终端匹配电阻的。
所以,这种情况下,即使使用60欧姆单电阻,总线也可正常工作。而对于高速CAN(通常500kbps以上),此时若终端电阻不满足要求,则总线极有可能工作不正常。这也意味着,本次CAN Omega能够正常工作是存在一定侥幸的,若比赛使用的是1Mbps频率而非125kbps的话,很有可能会出现异常。也就是说,CAN总线无论何种情况,最好都应接入2个120欧姆电阻。
5. 结束语
本文分析了CAN总线终端电阻的选择以及终端电阻对总线的影响,以及何种情况下应该使用终端电阻。希望本文的分析可以给各位看官今后的设计带来帮助。在CAN Omega 1.1的设计中,终端匹配电阻使用了模拟开关来控制120欧姆单电阻的接入,同时,考虑到实际上CANalyst-II的2颗电阻的意义并不大,且作为监听设备接入的大多数情况下,这一个120欧姆电阻是不需接入的,所以综合考虑,最后CAN Omega 的1.1版本确定使用1个软件控制接入的终端电阻。