【发布时间】:2020-03-05 12:26:25
【问题描述】:
如果你在 CAN 数据中有一个位序列:
011111000001
1 之后需要填充 0,0 之后需要填充 1。但我不确定 1 应该去哪里。
该标准对我来说似乎模棱两可,因为有时它会谈论“正常操作期间的 5 个连续位”,但有时它会说“5 个连续的数据位”。填充位算数据吗?
即
应该是:
01111100000011
或者
01111100000101
【问题讨论】:
-
Wikipedia 通过示例给出了很好的解释。维基百科页面的哪一部分不清楚?
-
@Lundin 这确实是一个很好的例子,并明确说明了我的情况。但是 Wikipedia 不是一个实际的来源,这就是我没有使用它的原因——我可以很容易地把它改成完全相反的说法。这就是为什么我希望找到一个官方标准来确认它(我还没有)。
-
同样的链接提到了标准的名称,ISO 11898-2。如果您搜索“Bosch CAN 2.0B”,您可以找到一个几乎相同的免费旧草稿版本
-
也许 11898-2:2016 说得很清楚,但我认为博世标准不足以回答这个问题。它指出“每当发送器在要发送的比特流中检测到五个连续的相同值的比特时,它会自动在实际传输的流中插入一个互补比特。”我个人认为“实际”一词的使用使其模棱两可 - 它表明“要传输的比特流”和“实际传输的比特流”是不同的东西,在这种情况下,可以解释为我的问题中的第一个选项是正确的
-
是的,它们当然是不同的东西,这就是你引用的比特填充章节的重点。 “比特流”是要传输的数据,“实际比特流”是附加了填充比特的数据。我会发布一个答案。
标签: can-bus