CAN协议已经计算出CRC了吗?

Is CRC already calculated by CAN protocol?

我在一个项目中,我必须遵守 ISO26262,所以我需要验证我的 CAN 帧。我将使用 CRC 计算来检查我的帧。我的问题是:我应该在我的程序中进行这个计算还是 CAN 协议已经自动进行了?

CAN 在 data-link 层包含一个 15 位 CRC。它由 CAN 控制器处理,除了检查控制器报告的错误外,您不需要在软件中做任何事情。

应用层 CRC 可用于某些特殊情况,例如传输大量数据(如引导加载程序)时。但是一般的交流就不需要了。

实际上,对于 ISO26262,您可能不仅仅依赖 CAN CRC 本身。

因为,由 CRC + SeqCounter 组成的 E2E 保护(在 AUTOSAR 中称为)是在两个 SWC 之间完成的,在 ASIL-context.

BSW 通常不是 ASIL。因此,在向 BSW 提供数据的 SWC 和检查 CRC 的接收 SWC 之间,任何事情都可能发生。因此,您的 BSW 可以将一些翻转的数据放入 CAN HW 邮箱中。然后,CAN HW 在传输该数据时将构建错误的 CRC。或者接收方可能有错误,将接收到的数据在CAN邮箱和实际接收SWC端之间翻转。