报文层的错误检测包括CRC和ACK。
CRC域包含15位校验、1位界定符;ACK域包括1位应答位、1位界定符。
CRC校验错误
CRC校验错误很好理解,它对数据域以及数据域之前的位生产CRC校验。由于一帧CAN报文数据流很小(最多8个用户数据),所以15位CRC的侦错能力非常优秀。
ACK校验错误
ACK域是怎么起作用的呢?
这是由CAN协议规定的,即发送节点发送一帧数据后,接收节点必须向发送节点应答,如果发送节点没有收到接收节点的应答信号,就会认为自己发送失败,从而重传数据。
报文层的第三种错误检查方法是格式检查。这种检查会监控报文中那些一定为隐性位的域,如果这些域中出现显性位,则检测到格式错误。这些域包括SOF、EOF、ACK的界定符和CRC的界定符。