CAN

CAN:controller area network,控制器区域网络,异步半双工

CAN闭环总线
节点:由控制器和收发器组成。
CAN控制器:STM32
CAN收发器:TJA1050,是控制器区域网络(CAN)协议控制器物理总线之间的接口,是一种标准的高速CAN收发器,将普通逻辑电平转化成差分信号,通过差分线CAN_HIGH和CAN_LOW输出到CAN总线。
CAN通讯节点由一个CAN控制器及CAN收发器组成,控制器与收发器之间通过CAN_Tx及CAN_Rx信号线相连,收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。其中CAN_Tx及CAN_Rx使用普通的类似TTL逻辑信号,而CAN_High及CAN_Low是一对差分信号线,使用比较特别的差分信号。

差分信号

差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑0和逻辑1
差分信号
相对于单信号线传输的方式,使用差分信号传输具有如下优点:
• 抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。
• 能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。
• 时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的电路。
• 由于差分信号线具有这些优点,所以在USB协议、 485协议、以太网协议及CAN协议的物理层中,都使用了差分信号传输。

CAN协议中的差分信号

CAN差分信号
在CAN总线中,必须使它处于隐性电平(逻辑1)显性电平(逻辑0)中的其中一个状态。假如有两个CAN通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似I2C总线的“线与”特性将使它处于显性电平状态,显性电平的名字就是这样来的,即可以认为显性具有优先的意味。

ISO/OSI 基本参照模型
这里写图片描述

显性隐性电平

作者:呵呵呵
链接:https://www.zhihu.com/question/53821741/answer/148356663

用IIC总线类比一下吧,IIC是一个多主机的总线,因此可能会出现多个设备同时发起通信的情况,因此IIC也会有仲裁过程。我们在用IIC总线的时候都会设置微控制器IO 模式为开漏输出,也就是下图中的那个mosfet接地的部分,开漏输出的io只能输出低电平,不能输出高电平,因此在IIC 总站上必须接上拉电阻,这样总线上才能输出高电平。
这里写图片描述
在上面的图中可以看出如果device 1输出低电平就让mosfet 导通(此时总线与vdd之间电阻为上拉电阻阻值大概10k,与gnd之间电阻为0),输出高电平则让mosfet 关断(总线与vdd电阻为上拉电阻阻值,与gnd之间阻值为∞),当设备一输出低电平,而设备二输出高电平(此时gnd与总线之间电阻应该为0,vdd与总线直接电阻为10k),那么总线上的电平会是低电平,这里低电平就相当于CAN 里面的显性位
这里写图片描述
左下角是canh和canl的输出等效电路
这里写图片描述
不难看出上下两个mosfet 不会同时导通,输出显性位时,那么应该就是canh 导通上面那个mosfet ,canl 导通下面那个mosfet ,而输出隐性位时canh 和canl 的两个mosfet 都不导通。与IIC 上类似的canh 上输出接近vdd 的电平能力比较强,而canl 上输出接近gnd 的能力比较强,所以显性位强于隐性位。

猜你喜欢

转载自blog.csdn.net/Hola_ya/article/details/81257767
CAN