CAN(Controller Area Network)协议是一种两线半双工高速串行网络技术,它主要用于小半径区域的不同设备之间的通信,例如在汽车中。
CAN协议是CSMA-CD/ASM(基于消息优先级)协议的载波侦听多路访问冲突检测仲裁,CSMA确保每个节点在发送任何消息之前必须等待给定的时间段。冲突检测通过根据消息的指定优先级选择消息来确保避免冲突。
CAN提供从125kbps到 1Mbps的信令速率,并提供了2048个不同的消息标识符。CAN协议符合ISO-11898标准并使用7层开放系统互连模型。
CAN协议由罗伯特博世于1982年开发,1986年由底特律汽车工程师协会正式发布。第一辆集成CAN总线的汽车于1992年由梅赛德斯奔驰制造。
CAN协议11889分层架构由三层组成,分别如下所述:
一个CAN通信网络可以配置不同的帧或消息格式,具体如下:
这两种格式的区别在于位的长度,即基本帧支持11位长度的标识符,而扩展帧支持29位长度的标识符,由18位扩展和一个11位标识符。IDE位不同于CAN扩展帧格式和CAN基本帧格式,其中IDE在11位帧情况下作为显性传输,在29位帧情况下作为隐性传输。一些支持扩展帧格式的CAN控制器也可以发送或接收基本帧格式的消息。
另外,标准的CAN帧具有5种不同的消息类型,分别是:
1、总线
它由一个两线串行链路组成,即CAN_H和CAN_L,它们之间的电压电平决定了传输的是1还是0。这是差分信号,每条信号线中流动的电流相等但方向相反,从而产生场抵消效应,这是实现低噪声排放的关键。
这确保了平衡的差分信号,从而减少了噪声耦合并允许通过电线进行高速率传输。通常情况下,电线是双绞线电缆,总线长度为40m,最多30个节点。它是一种屏蔽或非屏蔽电缆,特性阻抗为120欧姆。
2、CAN收发器
CANH和CANL两根线通常为2.5V,由两个晶体管和2.5V电压源决定。基本上两条线之间的差异应该始终为0。驱动控制决定了施加到CANH和CANL线上的电压。当两个晶体管都导通时,第一个晶体管和二极管两端的电压降为1.5V,使CANH线上拉至3.5V。第二个电压降晶体管和二极管为1V,使CANL线下拉至 1.5V。二极管用于高压保护。
接收器是一个鉴别器电路,当两个输入CANH和CANL相同时输出1,如果两个输入不同则输出0。TXD显性块用于接地故障保护,如果二极管和晶体管过热,热关断块将禁用驱动器控制。
控制器局域网在工业和车辆中都有广泛的应用。其中一个主要应用涉及车辆中不同设备之间的通信。另一个可以在不同的微控制器之间,假设用于检测密码,用于满足任何要求,例如使用密码打开锁着的门或打开灯泡等。
基本应用程序由3个微控制器组成,它们使用两条线相互通信,就像在CAN网络中一样。第一个微控制器与键盘连接,第二个与LCD连接,第三个与蜂鸣器和操作灯的继电器连接。当在键盘上输入密码时,第二个微控制器充当接收器,并逐位接收从第一个发送器发送的消息,并将消息显示在LCD上。当整个消息被传输时,第 2个微控制器进行验证,如果密码错误,它会向第3个微控制器发送信号微控制器,它又发送蜂鸣器打开这个信号。当密码正确时,第三个微控制器打开继电器,继而打开灯。
CAN协议具有诸多的优势,常见的优势表现在以下几个方面:
其实,CAN协议不是基于地址的协议,而是面向消息的协议,CAN中嵌入的消息具有传输数据的内容和优先级。在总线上接收到数据后,每个节点决定是丢弃还是处理数据——然后根据系统的不同,将网络消息发送到单个节点或许多其他节点。CAN通信允许特定节点通过发送RTR(远程传输请求)从任何其他节点请求信息。
它通过传输最高优先级的消息并支持和等待较低优先级的消息来提供无仲裁的自动数据传输。在这个协议中,显性是逻辑0,隐性是逻辑1。当一个节点传输隐性位而另一个节点传输显性位时,显性位获胜。如果两个或多个设备同时开始传输,则基于优先级的仲裁方案决定是否授予继续传输的许可。