CAN 是Controller Area Network 的缩写,最早应用于汽车领域,由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。
现在CAN通信已经被广泛应用于各个领域,例如医疗,工业等领域。CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
当总线处于空闲状态时,任何Device都可以发送消息,总线通过标志符号来决定发送优先级。只有仲裁获胜方可以继续发送消息,其余Device可以立刻停止数据发送,进入数据接收状态。
由于CAN通信采用的是差分通信的方式,其能传输更远的距离,且传输的速率最高可以1Mbps。
CAN通信有高速CAN通信(ISO11898标准)和低速CAN通信(ISO11519-2标准)两种,一般所说的CAN通常是ISO11898标准的高速CAN通信,其最高的传输速率为 1Mbps 。低速CAN的最高的传输速率为 125Kbps ,主要应用于汽车领域,其具有较高的可靠性。
物理层 | ISO11898 | ISO11519-2标准 |
---|---|---|
电平 | 显性 | 隐性 |
CAN_H | 3.5V | 3V |
CAN_L | 1.5V | 3V |
电位差 | 2.0V | 0V |
4 CAN电路设计
TJA1050 供电采用5V供电,有些CAN收发器采用的3.3V供电,可直接连接至MCU。
隔离CAN电路能将板载与CAN总线完全隔离,但是需要注意的是电源部分也需要进行隔离。
隔离电源UCC12051DVE-Q1的设计见下:
经常会有这样的一种使用场景:同一板载上两个MCU之间进行CAN通信。此时,我们就会考虑能否直接将CAN_TX连接至CAN_RX,CAN_RX连接至CAN_TX(见下图)?答案是 否定的 。
CAN_RX需要去监听CAN_TX的状态,我们不能简单的直接这样互联。对于CAN通信的每个节点,可以通过一个二极管实现CAN_RX对CAN_TX的监听,具体的电路如下:
这种通信方式亲测可用,但是还是不建议使用。
全部0条评论
快来发表一下你的评论吧 !