目录
一,帧的种类
CAN网络通信是通过5种类型的帧(Frame)进行的,
数据帧(Data frame)
遥控帧(Remote frame)
错误帧(Error frame)
过载帧(Overload frame)
帧间空间(Inter-frame space)
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下称 ID),扩展格式有 29 个位的 ID。
1,数据帧(Data frame):
用于发送单元向接收单元传送数据的帧。
2,遥控帧(Remote frame):
用于接收单元向具有相同 ID 的发送单元请求数据的帧。
3,错误帧(Error frame):
用于当检测出错误时向其它单元通知错误的帧。
4,过载帧(Overload frame):
用于接收单元通知其尚未做好接收准备的帧。
5,帧间空间(Inter-frame space):
用于将数据帧及遥控帧与前面的帧分离开来的帧
二,数据帧
数据帧由 7 个段构成。数据帧的构成如图 17 所示。
帧起始:表示数据帧开始的段。
仲裁段:表示该帧优先级的段。
控制段:表示数据的字节数及保留位的段。
数据段:数据的内容,可发送 0~8 个字节的数据。
CRC 段:检查帧的传输错误的段。
ACK 段:表示确认正常接收的段。
帧结束:表示数据帧结束的段。
1,帧起始(标准、扩展格式相同)
表示帧开始的段。1 个位的显性位。
2,仲裁段
表示数据的优先级的段。
标准格式和扩展格式在此的构成有所不同。
3,控制段
控制段由 6 个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。
4,数据段(标准、扩展格式相同)
数据段可包含 0~8 个字节的数据。从 MSB(最高位)开始输出。
5,CRC 段(标准/扩展格式相同)
CRC 段是检查帧传输错误的帧。由 15 个位的 CRC 顺序*1 和 1 个位的 CRC 界定符(用于分隔的位)构成。
6,ACK 段
ACK 段(Acknowledge Bit)用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。
7,帧结束(End of Frame,EOF)
帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成。
三,遥控帧
接收单元向发送单元请求发送数据所用的帧。遥控帧由 6 个段组成。遥控帧没有数据帧的数据段。
遥控帧的构成如图 25 所示。
帧起始:表示帧开始的段。
仲裁段:表示该帧优先级的段。
控制段:表示数据的字节数及保留位的段。
CRC 段:检查帧的传输错误的段。
ACK 段:表示确认正常接收的段。
帧结束:表示遥控帧结束的段。
四,错误帧
用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。
错误帧的构成如图 26 所示。
1. 错误标志
错误标志包括主动错误标志和被动错误标志两种。
主动错误标志:6 个位的显性位。
被动错误标志:6 个位的隐性位。
2. 错误界定符
错误界定符由 8 个位的隐性位构成。
五,过载帧
过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成。
过载帧的构成如图 27 所示。
1. 过载标志
6 个位的显性位。过载标志的构成与主动错误标志的构成相同。
2. 过载界定符
8 个位的隐性位。过载界定符的构成与错误界定符的构成相同。
六,帧间隔
帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。
过载帧和错误帧前不能插入帧间隔
帧间隔的构成如图 28 所示。
1,间隔
3 个位的隐性位。
2,总线空闲
隐性电平,无长度限制(0 亦可)。本状态下,可视为总线空闲,要发送的单元可开始访问总线。
3,延迟传送(发送暂时停止)
8 个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。
七,总线发送优先级
1, 优先级的决定
在总线空闲态,最先开始发送消息的单元获得发送权。
多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。
仲裁的过程如图 29 所示: 前面的单元1和单元电平都一样,到后面单元1是隐性电平,单元2是显性电平,显性优先级更高,则单元2的优先级更高,获得发送权,而单元1则变为接收状态。
2,数据帧和遥控帧的优先级
具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。
数据帧和遥控帧的仲裁过程如图 30 所示:
3,标准格式和扩展格式的优先级
标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。
标准格式和扩展格式的仲裁过程如图 31 所示。
4,优先级法则
数据帧和遥控帧的仲裁段用于多个节点竞争总线时进行仲裁,优先级高的帧获得再总线上发送数据的权利。优先级的确认总结为以下几条法则:
在总线空闲时,最先开始发送消息的节点获得发送权;
多个节点同时开始发送时,从仲裁段的第一位开始进行仲裁,第一次出现各节点的位电平互异时,输出显性电平的节点获得发送权;
相同ID和格式的数据帧和遥控帧,数据帧具有更高优先级,因为数据中的RTR位时显性电平,而遥控帧的RTR位时显性电平;
对于11位标准ID相同的标志数据帧和扩展数据帧,标准数据帧具有更高的优先级,因为标志数据帧的IDE位时显性电平,而扩展数据帧的IDE位时隐性电平。
八,错误的种类
错误共有 5 种。多种错误可能同时发生。
位错误,填充错误,CRC 错误,格式错误,ACK 错误
错误的种类、错误的内容、错误检测帧和检测单元如表 6 所示
九,位时序
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。
同步段(SS)
传播时间段(PTS)
相位缓冲段 1(PBS1)
相位缓冲段 2(PBS2)
这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。
1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。
1 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可
同时采样,也可任意设定采样点。
各段的作用和 Tq 数如表7 所示。1 个位的构成如图 32 所示。
十,取得同步的方法
CAN 协议的通信方法为 NRZ(Non-Return to Zero)方式。各个位的开头或者结尾都没有附加同步信号。发送单元以与位时序同步的方式开始发送数据。另外,接收单元根据总线上电平的变化进行同步并进行接收工作。
但是,发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差。因此接收单元通过硬件同步或者再同步的方法调整时序进行接收。
1,硬件同步
接收单元在总线空闲状态检测出帧起始时进行的同步调整。在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段。
硬件同步的过程如图 33 所示。
2,重同步
在接收过程中检测出总线上的电平变化时进行的同步调整。
每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。但如果发生了超出 SJW
值的误差时,最大调整量不能超过 SJW 值。
再同步如图 34 所示。
3,调整同步的规则
硬件同步和再同步遵从如下规则。
1 个位中只进行一次同步调整。
只有当上次采样点的总线值和边沿后的总线值不同时,该边沿才能用于调整同步。
在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。
在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件(1)和(2),将进行再同步。但还要
满足下面条件。
发送单元观测到自身输出的显性电平有延迟时不进行再同步。
发送单元在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。