一文读懂CAN总线协议 CAN总线通信详解

| Exploration, research, various forms, miscellaneous talks | 探索、研究、百態、雜談 | 探索、研究、百态、杂谈 | 發現 发现 Discovery |
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

6.6 帧间隔

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。

过载帧和错误帧前不能插入帧间隔

帧间隔的构成如图 28 所示。

Image

1. 间隔

3 个位的隐性位。
2. 总线空闲

隐性电平,无长度限制(0 亦可)。本状态下,可视为总线空闲,要发送的单元可开始访问总线。
3. 延迟传送(发送暂时停止)

8 个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7. CAN总线优先级及同步
7.1 优先级的决定

​ 在总线空闲态,最先开始发送消息的单元获得发送权。

​ 多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

​ 仲裁的过程如图 29 所示: 前面的单元1和单元电平都一样,到后面单元1是隐性电平,单元2是显性电平,显性优先级更高,则单元2的优先级更高,获得发送权,而单元1则变为接收状态。

Image

7.1.1 数据帧和遥控帧的优先级

具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。
数据帧和遥控帧的仲裁过程如图 30 所示:

Image

7.1.2 标准格式和扩展格式的优先级

标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。
标准格式和扩展格式的仲裁过程如图 31 所示。

Image

7.1.3 优先级法则

​ 数据帧和遥控帧的仲裁段用于多个节点竞争总线时进行仲裁,优先级高的帧获得再总线上发送数据的权利。优先级的确认总结为以下几条法则:

在总线空闲时,最先开始发送消息的节点获得发送权;
多个节点同时开始发送时,从仲裁段的第一位开始进行仲裁,第一次出现各节点的位电平互异时,输出显性电平的节点获得发送权;
相同ID和格式的数据帧和遥控帧,数据帧具有更高优先级,因为数据中的RTR位时显性电平,而遥控帧的RTR位时显性电平;
对于11位标准ID相同的标志数据帧和扩展数据帧,标准数据帧具有更高的优先级,因为标志数据帧的IDE位时显性电平,而扩展数据帧的IDE位时隐性电平。
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.2 错误的种 类

错误共有 5 种。多种错误可能同时发生。

位错误
填充错误
CRC 错误
格式错误
ACK 错误
错误的种类、错误的内容、错误检测帧和检测单元如表 6 所示

Image

(1) 位错误

位错误由向总线上输出数据帧、遥控帧、错误帧、过载帧的单元和输出 ACK 的单元、输出错误的单元来检测。

在仲裁段输出隐性电平,但检测出显性电平时,将被视为仲裁失利,而不是位错误。

在仲裁段作为填充位输出隐性电平时,但检测出显性电平时,将不视为位错误,而是填充错误。

发送单元在 ACK 段输出隐性电平,但检测到显性电平时,将被判断为其它单元的 ACK 应答,而非位错误。

输出被动错误标志(6 个位隐性位)但检测出显性电平时,将遵从错误标志的结束条件,等待检测出连续相同 6 个位的值(显性或隐性),并不视为位错误。

(2) 格式错误

即使接收单元检测出 EOF(7 个位的隐性位)的最后一位(第 8 个位)为显性电平,也不视为格式错误。
即使接收单元检测出数据长度码(DLC)中 9∼15 的值时,也不视为格式错误。
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.3 错误帧的输出

检测出满足错误条件的单元输出错误标志通报错误。
处于主动错误状态的单元输出的错误标志为主动错误标志;处于被动错误状态的单元输出的错误标志为被动错误标志。
发送单元发送完错误帧后,将再次发送数据帧或遥控帧。
错误标志输出时序如表 7 所示。

Image
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.4 位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。

同步段(SS)
传播时间段(PTS)
相位缓冲段 1(PBS1)
相位缓冲段 2(PBS2)

这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。

1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。

1 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可

同时采样,也可任意设定采样点。

各段的作用和 Tq 数如表7 所示。1 个位的构成如图 32 所示。

Image
Image
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.5 取得同步的方法

CAN 协议的通信方法为 NRZ(Non-Return to Zero)方式。各个位的开头或者结尾都没有附加同步信号。发送单元以与位时序同步的方式开始发送数据。另外,接收单元根据总线上电平的变化进行同步并进行接收工作。

但是,发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差。因此接收单元通过硬件同步或者再同步的方法调整时序进行接收。
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.6 硬件同步

接收单元在总线空闲状态检测出帧起始时进行的同步调整。在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段。
硬件同步的过程如图 33 所示。

Image
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.7 再同步

在接收过程中检测出总线上的电平变化时进行的同步调整。
每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。但如果发生了超出 SJW
值的误差时,最大调整量不能超过 SJW 值。
再同步如图 34 所示。

Image
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

7.8 调整同步的规则

硬件同步和再同步遵从如下规则。

1 个位中只进行一次同步调整。
只有当上次采样点的总线值和边沿后的总线值不同时,该边沿才能用于调整同步。
在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。
在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件(1)和(2),将进行再同步。但还要
满足下面条件。
发送单元观测到自身输出的显性电平有延迟时不进行再同步。
发送单元在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。
expl
test ranks
Posts: 1014
Joined: 2023-03-02T05:46:06+00:00

Re: 一文读懂CAN总线协议 CAN总线通信详解

Post by expl »

参考文献 :

[1] CAN入门书(瑞萨电子)

[2] STM32 Cube 高效开发教程. 王维波等著


原文:

https://blog.csdn.net/mingtiauigena/art ... /149739180
Post Reply

Return to “| Exploration, research, various forms, miscellaneous talks | 探索、研究、百態、雜談 | 探索、研究、百态、杂谈 | 發現 发现 Discovery |”