
本文主要介绍CAN总线的标准。
CAN总线基本协议层分为物理层、数据链路层、应用层三层协议,相关标准也分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是ISO 11898系列的国际标准,不同厂商在CAN总线的物理层和数据链路层定义是基本相同的;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。

底层标准
ISO 11898-1: 2015 定义CAN总线的数据链路层(DLL)和电气信号标准,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式,详细说明逻辑链接控制(LLC)和介质访问控制(MAC)子层部分;
ISO 11898-2: 2003 定义高速CAN总线(HS-CAN)物理层标准,最高数据传输速率 1Mbps ,应用为两线平衡式信号(CAN_H, CAN_L),HS CAN是汽车动力和工业控制网络中应用最为广泛的物理层协议;
ISO 11898-3: 2006 定义低速CAN总线(LSFT CAN)物理层标准,数据传输速率在 40Kbps ~ 125Kbps 。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信,LS CAN主要应用于汽车车身电控单元之间通信;
ISO 11898-4: 2004 定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。注意,ISO 11898-1 是基于事件驱动(Event-Driven)的通信,它对于高负荷总线上,尤其是低优先级的消息会造成较大的延迟,而基于时间触发的ISO 11898-4 标准的初衷也正是为解决该问题,确保CAN总线上可靠的消息传输;
ISO 11898-5: 2007 对ISO 11898-2高速CAN总线的补充,并参照ISO 8802-2,定义在总线闲置时的节电特性;
ISO 11898-6: 2013 对ISO 11898-2 和 ISO 11898-5 的补充,并参照ISO 8802-2,定义使用可配置的帧实现选择性唤醒总线的机制;
ISO 16845-1: 2004 定义测试符合ISO 11898-1标准CAN应用的方法和条件;
ISO 16845-2: 2014 定义包括特定功能下可以选择性唤醒总线的CAN收发器的测试实例和测试要求,也称为CAN总线的一致性测试


上层标准

下面简单介绍一下CANopen、DeviceNET和J1939这几种协议。
SAEJ1939-01卡车及客车等路面控制及信息网络
SAEJ1939-02农业设备等非路面控制及信息网络
SAEJ1939-05发动机故障诊断方面的应用
SAE J1939-11物理层(250kbit/s,屏蔽双绞线),物理层基于ISO11898-2,速率为250kbit/s时最多可带30个设备,最大总线长度可达40m
SAEJ1939-13物理层,非车载诊断连接器
SAEJ1939-15物理层,250K比特/秒,非屏蔽双绞线
SAE J1939 21数据链路层,可定义常用的消息,例如请求、确认和传输协议
SAE J1939 31网络层,定义了中继器、路由器、网关和网桥
SAE J1939 71车辆应用层,卡车和公交车动力传动系统的网络:定义所有参数以及被称为参数组的汇编消息
SAE J1939 73诊断应用层,定义诊断消息
SAEJ1939/74应用层信息配置
SAEJ1939/75应用层设置及工业化
SAE J1939 81网络管理,定义初始化的状态图以及对地址使用的限制。其主要功能是定义地址诊断,用以确保源地址在网络上的唯一性
SAEJ1939/82相容性-卡车和客车


