CAN协议简介
CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。
一、总线特点(不分主从,半双工)
1、多主通信,CAN总线的端点没有地址(除非自己在帧里定义地址),CAN总线通信不用地址,用标识符(CAN总线采用了一个11位或29位的标识符来识别不同的数据帧,ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级),不是单独的谁发给谁,而是,你总是发送给整个网络。然后每个节点都有过滤器,对网络上的传播的帧的标识符进行过滤,自己想要什么样的帧,可以设置自己的过滤器,接收相关的帧信息。如果两个节点同时发送怎么办?这个不用我们担心,CAN控制器会自己仲裁,让高优先级的帧先发。CAN可以传输0到8字节的数据。CAN总线具有较好的实时性能,可以在网络中实现精确的时间同步,适用于实时控制系统。
2、采用无破坏性的基于优先级的逐位仲裁,标识符越小,优先级越高。若两个节点同时向网络上传送数据,优先级高的报文获得总线访问权,优先级低的报文会在下一个总线周期自动重发。
3、可以采用点对点、点对多及全局广播等传送方式收发数据。
4、直接通信距离最远可达10km(速率5kb/s以下)。
5、通信速率最高可达1Mb/s(此时距离最长40m)。
6、节点数实际可达110个。
7、每帧信息都有CRC校验及其他检错措施,数据出错率极低。
8、通信介质可采用双绞线、同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。 9、节点在错误严重的情况下,具有自动关闭总线的功能,以切断它与总线的联系,使总线上的其他操作不受影响。
二、CAN物理层
与I2C、 SPI等具有时钟信号的同步通讯方式不同, CAN通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。CAN总线由显性电平和隐性电平,执行的是线”与“逻辑,即只要总线上有一个节点发送显性电平,则总线为显性电平(即逻辑0),只有总线上发送的所有电平都为隐性时,总线才为隐性电平(即逻辑1)。
CAN物理层的形式主要分为闭环总线及开环总线网络两种,一个适合于高速通讯(闭环),一个适合于远距离通讯(开环)。
1、闭环总线网络
CAN闭环通讯网络是一种遵循ISO11898标准的高速、 短距离网络, 它的总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120欧”的电阻。
2、开环总线网络
CAN开环总线网络是遵循ISO11519-2标准的低速、远距离网络, 它的最大传输距离为1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个“2.2千欧”的电阻。
三、帧的种类
通信是通过以下 5 种类型的帧进行的。
• 数据帧
• 遥控帧
• 错误帧
• 过载帧
• 帧间隔
另外, 数据帧和遥控帧有标准格式和扩展格式两种格式。 标准格式有 11 个位的标识符(Identifier: 以下称 ID) ,扩展格式有 29 个位的 ID。各种帧的用途如表 7 所示,各种帧的构成如图 11~图 15 所示。