我在一个项目中,我必须遵守ISO26262,所以我需要验证我的CAN框架。我将使用CRC计算来检查我的帧。我的问题是:我应该在我的程序中进行这种计算,还是CAN协议已经自动进行了?
实际上,在ISO26262的情况下,您可能不仅仅依赖CAN CRC本身。
因为,由CRC+SeqCounter组成的E2E保护(在AUTOSAR中被称为(是在ASIL上下文中的两个SWC之间完成的。
BSW通常不是ASIL。因此,在向BSW提供数据的SWC和检查CRC的接收SWC之间,任何事情都可能发生。因此,您的BSW可以将一些翻转的数据放入CAN HW邮箱。CAN硬件在传输该数据时将建立错误的CRC。或者接收器可能有错误,并在CAN邮箱和实际接收SWC端之间翻转接收到的数据。
CAN在数据链路层上包含一个15位CRC。它由CAN控制器处理,除了检查控制器报告的错误外,您不需要在软件中做任何事情。
应用层CRC可以在一些特殊情况下使用,例如在传输大量数据(如引导程序(时。但这对于普通的交流来说并不是必须的。