车载CAN总线crc简单计算
注意下面
如果有车载讨论需要的小伙伴,可以私信加我微信
,拉你进群,和同行业大佬交流
注意上面
前言
车载can总线功能安全应用很明显的体现是crc计算的应用,一般报文中会取一个字节(0-255)用以存储checksum,4bit用以存储counter。之前公司功能安全项目需要配置计算crc值,用了一个Python的crc三方库,但是那个crc库升级版本后,功能实现写法稍微改动了下,今天就正好抽空把实现重新尝试了下并尝试成功,特此记录下
二、具体实现
代码如下(示例):
import crc
def calculatecrc8(data):
crc_configuration = crc.Configuration(
width=8,
polynomial=0x1D,
init_value=0xFF,
final_xor_value=0xFF,
reverse_input=False,
reverse_output=False, )
crc_calculator = crc.Calculator(crc_configuration, False)
crc_data = crc_calculator.checksum(data)
return crc_data
data = [5,6,7]
checksun = calculatecrc8(bytes(data)) # 最新版需要将列表转换为字节传入运算
print(checksum)
查看源码发现他提供了车载常用的多项式,如下图
有兴趣的可以自行研究下
总结
车载总线crc加密功能后续应该会是常用的功能,还有有必要学习了解清楚的
写在结尾
我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步