前言
本文将介绍Can通信协议。
说明:学习嵌入式五大通信协议之一的Can通信协议。
简介
CAN全称控制器局域网络(Controller Area Network),是 ISO 国际标准化的串行通信协议。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。
网络层级
应用层(具体数据)
链路层(将比特流组成帧数据,判断数据是否正常)
物理层(收发比特流的物理层)
注:Can协议中不需要自己设置数据格式,Can内部已经处理好了
组成
1、CPU与CAN控制器集成到一起、再外接CAN收发器;
2、另一种是CPU与CAN控制器分开的,使用的时候需要配置CAN接口电路。
电平
can总线采用差分电压传输数据,分别是CAN_H和CAN_L两根总线。总线上的信号电平分为这两条线之间的差分电压。
CAN总线具有两种逻辑电平:隐性电平和显性电平。
隐性电平:CAN_H和CAN_L之间的差分电压近似为0V,表示逻辑1
显性电平:CAN_H和CAN_L之间的差分电压近似为2~3V,表示逻辑0
CAN总线上的逻辑是“线与”的形式,显性电平可以覆盖隐性电平,因此0可以覆盖1。
CAN标准帧
CAN没有地址的概念
起始帧(SOF)——仲裁段(ID)——RTR(远程帧)——IDE(扩展帧)——RB0(保留位)——DLC(数据长度位)——数据段(0-8个字节组成的要发送的数据)——CRC段(校验位)——CRC界定符(用于分隔CRC与ACK)——ACK槽(接收方应答位)——ACK界定符(用于分隔)——帧结束(EOF)
CAN数据过滤 (这里听的时候不是很理解)
分为两个模式:屏蔽位模式(用于组配)和标识符列表模式(用于单配)
屏蔽位模式
接收器标识符某位置0为忽略,置1为
标识符列表模式
接收器标识符与需要接收的ID一致
Can的特点
(1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信
(2) 多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞
(3) 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M)
(4) CAN总线传输介质可以是双绞线,同轴电缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
(5) CAN总线上同一个子网下设备的通信速度必须相同
(6) CAN总线上不同子网下的两个设备进行通信必须通过网关
(7) CAN总线上的设备可以自动进行错误检测,错误通知,错误恢复和故障隔离。当设备发生故障时,该设备会不断发送错误提示,其他设备将暂停发送数据;当一段时间过后设备故障未恢复会自动将自己隔离,断开与总线的连接,此时其他设备可以继续发送信息