一提到总线,就很容易让我们联想到错综复杂的计算机电线,可是这些总线总能起着十分重要的作用,今天我们就来认识下CAN总线协议。
CAN控制器局域网总线是一种实施应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。最常用的领域是汽车。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配线线束。
【特点】
1.CAN是目前位置唯一有国际标准的现场总线
2.CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而且部分主从
3.在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求
4.CAN采用非破坏总线仲裁技术
5.CAN节点只需通过对报文的标识符滤波即可实现点对点、一点对多点及全局广播几种方式接收数据
6.CAN上的节点数主要取决于总线驱动电路
7.报文采用短帧结构,传输时间段,受干扰概率低,数据出错率极低
8.CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果
9.CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活
10.CAN节点在错误严重的情况下具有自动关闭输出功能,已使总线上其他节点的操作不受影响
11.CAN总线具有较高的性能价格比
【总线拓扑图】
CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方,如图。
【错误状态种类】
1.主动错误状态
主动错误状态是可以正常参加总线通信的状态。
处于主动错误状态的单元检测出错误时,输出主动错误标识。
2.被动错误状态
被动错误状态是易引起错误的状态。
处于被动错误状态的单元虽能参加总线通信,但为不妨碍其他单元通信,接收时不能积极地发送错误通知。
处于被动错误状态的单元即使检测出错误,而其他处于主动错误状态的单元如果没有发现错误,整个总线也被认为是没有错误的。
3.总线关闭态
总线关闭态是不能参加总线上通信的状态。
信息的接收和发送均被禁止。
这些状态依靠发送错误计数和接受错误计数来管理,根据计数值决定进入何种状态。错误状态和计数值的关系如图。
【错误计数值】
发送错误计数值和接受错误计数值根据一定的条件发生变化,错误计数值的变动条件如图所示。
一次数据的接收和发送可能同时满足多个条件。
错误计数器在错误标志的第一位出现的时间点上开始计数。
【CAN总线分层结构】
数据链路层分为MAC子层和LLC子层。MAC子层是CAN协议的核心部分。数据链路层的功能是将物理层收到的信号组织陈有意义的消息,并提供传送错误控制等传输控制的流程。具体地说,就是消息的帧化、仲裁、应答、错误的检测或报告。数据链路层的功能通常在CAN控制器的硬件中执行。
物理层定义了信号实际的发送方式、位时序、位的编码方式及同步的步骤。但具体地说,信号电平、通信速度、采样点、驱动器和总线的电气特征、连接器的形态等均未定义。这些必须由用户根据系统需求自行确定。
传输层定义的是CAN总线的高层协议,具体由软件实现。
【CAN协议及标准规格】
1.ISO标准化的CAN协议
CAN协议经ISO标准化后有ISO11898标准和ISO11519-2标准两种。
ISO11898:是通信速度为125kbps-1Mbps的CAN高速通信标准。目前ISO11898追加新规约后,成为ISO11898-其标准。
ISO11519:ISO11519是通信速度为125Kbps以下的CAN低速通信标准。ISO11519-2是ISO11519-1追加新规约后的版本。
如图:CAN协议和ISO11898及ISO11519-2标准的范围
【ISO11898和ISO11519-2的不同】
1.物理层的不同
如上图所示,ISO11898和ISO11519-2在CAN协议中物理层的标准有所不同,CAN写一页的物理层如下图所示,定义为三个子层,ISO11898和ISO11519-2在物理层中的PMA层和MDI层有所不同。
在物理层(PMA层、MDI层),ISO11898和ISO11519-2的主要不同点如图:
【CAN总线的通信模式】
1.总线访问:CAN是共享媒体总线,它对媒体的访问机制类似于以太网的媒体访问机制,采用载波监听多路访问的方式。CAN控制器智能在总线空闲时发送,并采用硬同步,所有CAN控制器同步位于帧起始的前沿。为避免异步时钟因累积误差而产生错位,CAN总线中用硬同步满足一定条件的跳变进行重同步。
2.仲裁:当总线空闲时呈隐性电平,此时任何一个节点都可以向总线发送一个显性电平作为一个帧的开始。如果有两个或两个以上的节点同时发送,就会产生总线冲突。CAN总线解决总线冲突的方法比以太网的CSMA/CD方法有很大的改进。以太网是碰撞检测方式,即一旦检测到两个或多个节点同时发送信息帧时,所有发送节点都退出发送,待随机时间后再发送。而CAN是按位对标识符进行仲裁的。
3.编码/解码:帧起始域、总裁域、控制域,数据域和CRC序列均使用位填充技术进行编码。在CAN总线中,每连续5个同状态的电平插入一位与它相补的电平,还原时每5个相同状态的电平后的相补电平被删除,从而保证了数据的透明。
4.出错标注:当检测到位错误、填充错误、形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。
5.超载标注:一些CAN控制器会发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。