【转】CAN总线与CANOPEN协议入门

1. 什么是CAN总线协议

CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速、稳定、可靠的特点,已经被ISO标准化并广泛应用于工控、医疗等领域,目前依然是欧洲汽车网络的标准协议。

CAN总线协议规定了ISO七层通信协议模型的物理层和数据链路层。其具体实现都已经被固化到CAN总线控制芯片中,无需软件实现。

2. CAN总线的传输速率和传输距离

理论上,CAN总线在速率小于5K时,距离可达10000m;速率接近1M时,距离小于0.4m。现实中常用的高速CAN总线速率有500k或250k,低速CAN总线有125k和62.5k,传输距离在几米到几十米间。速率和传输距离的选择还要考虑硬件的要求。

理论上,一条CAN总线上可以连接无数个CAN设备,但实际上受到其他条件限制,数量总是有限的。例如,使用了更上层的CANOPEN协议,则一条总线上只能有128个设备

3. CAN总线协议的特点和要求

  1. CAN总线网络属于广播网络,同一条总线的设备都可以发送和接受数据。同一时刻只能有一个设备作为发送设备,其他设备只能为接收设备。
  2. 同一条总线上的设备必须工作在同一速率下。
  3. 当两个设备同时发送数据时,根据其CAN通信帧(CAN通信的最小信息单元,详情见下文)的ID号进行仲裁,ID号小的优先级高,将获得发送权,优先级低的则需要放弃发送,转为接收状态。
  4. CAN设备可以检测总线上的错误类型是暂时性的还是持续性的,如果是持续性的,出错的设备会不停的向总线发送错误帧,一段时间后将自动脱离总线。
  5. can总线的终端电阻的选择很重要,选择的不好会影响通信质量。

4. CAN总线的通信帧

CAN总线所使用的最基本通信单元称为帧,CAN总线协议规定了数据帧、遥控帧(也有称为远程帧的)、错误帧、过载帧和间隔帧。以下仅详细分析数据帧的帧格式,其他均只描述功能,不详细描述格式。

有些文档喜欢用显性电平和隐性电平来描述帧格式,这里说明一下,显性电平可以理解为逻辑1,隐性电平可以理解为逻辑0。

4.1 数据帧

数据帧由7段构成

  起始段 仲裁段 控制段 数据段 CRC段 ACK段 帧结束
bit 1 12 6 0-64 16 2 7

起始段:长度固定为1bit,逻辑0

仲裁段:前11bit为帧ID,后1bit为RTR标志

控制段:前2bit规定为0,后4bit为数据段的BYTE长度

数据段:长度可变,0~8BYTE

CRC段、ACK段、帧结束对于软件工程师来说可以不关注,比较重要的是理解仲裁段、控制段和

你可能感兴趣的:(#,CAN)