CAN 中的填充位是否计入下一个填充组

Does a stuffing bit in CAN count towards the next stuffing group

如果您在 CAN 数据中有一个位序列:

011111000001

需要在 one 之后填充 0,在 0 之后填充 1。但是我不确定 1 应该放在哪里。

这个标准对我来说似乎是模棱两可的,因为有时它会说“正常操作期间 5 个连续的位”,但有时它会说“5 个连续的数据位”。一个填充位算作数据吗?

应该是:

01111100000011

01111100000101

位填充仅适用于 CAN 帧,直到 ACK 位。在 End-Of-Frame 和 Intermission 字段中,不应用位填充。

传送什么无所谓

就是"after 5 consecutive bits of the same value"插入一个互补位

你的第二个例子是正确的。 6 个连续位使消息无效。

来自旧的 Bosch CAN2.0B 规范,第 5 章:

The frame segments START OF FRAME, ARBITRATION FIELD, CONTROL FIELD, DATA FIELD and CRC SEQUENCE are coded by the method of bit stuffing.

意味着从帧开始到 15 位 CRC 的所有内容都可以进行位填充,但 1 位 CRC 定界符和帧的其余部分不能。

Whenever a transmitter detects five consecutive bits in the bit stream to be transmitted

这个"bit stream"指的是前面引用的句子中提到的所有字段。

...in the actual transmitted bit stream

实际传输的比特流是原始数据+附加的填充比特。