接收ECU未订阅帧内全部信号时是否可计算CRC8校验值?
结论
无法计算得到与发送节点完全一致的校验和。
具体原因
- CRC8运算的结果高度依赖完整的输入数据:发送节点是基于整帧8个字节的全部数据计算CRC8,哪怕首字节本身是校验和字段,8个字节的每一位都会被纳入运算过程,只要有一位数据缺失或错误,计算结果就会不一致。
- 未订阅全部信号意味着接收方拿不到完整的运算输入:「未订阅帧内全部信号」的本质是接收节点只会提取自身需要的信号对应的字节/比特位,未订阅信号对应的原始数据不会被接收节点保留,连CRC8计算需要的完整8字节输入都凑不齐,自然不可能得到和发送端一致的结果。
SAE J1850相关补充
虽然SAE J1850规范没有针对这个特定场景给出直接说明,但其CRC8校验的设计默认遵循链路层校验的通用逻辑:帧完整性校验是独立于上层应用信号订阅逻辑的机制,只要你需要对该帧做校验,就必须先接收完整的全部帧数据,和你要不要用帧里的某部分信号没有任何关系。
内容的提问来源于stack exchange,提问作者Ana Maria
相关产品推荐
相关产品推荐

