CAN协议

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41924435/article/details/81025906

一、物理层

A)工作电平:

        ECU 工作电平:12V

        TOOLS工作电平:12V

B)通讯电平:1.5~2.5V

C)通讯波特率:

        Can Network Baud Rate:  500KBps

D)通信脚:PIN16—6#,14#,全双工通信,相对设备6#发送,14#接收

E)初始化过程:

        Diagnostic CAN 不需要初始化过程,所有功能任何时候都是处于响应状态。

二、链路层

1、帧格式:

A)单帧

                              07  DF  08   02  01 00  99  99  99  99  99 CHK

        BYTE0,BYTE1是系统地址

         BYTE2是固定值,表示从BYTE3到BYTE10数据的长度,同时也决定整个帧长是12个BYTE

        BYTE3在单帧中是从表示它以后数据部分有效数据的长度,无效的数据位用”99”填补。

        BYTE4功能的模式号

        BYTE5—BYTE10 系统要传送的数据信息

        BYTE11是校验位,对前面11个字节的异或校验(CRC)

       第二种格式:                          08  07 DF   02  01 00  99  99  99  99  99 CHK

2、帧类型:

A)单帧(Single Frame)

B)第一帧(First Frame)

C)流控制帧(Flow Frame)

D)连续帧(Consecutive Frame)

3、命令交互:

A)发1帧回1帧:
Tools: 08H FCH 00H 03H 19H 02H FFH 00H 00H 00H 00H(单帧)

ECU : 08H FDH 00H 10H 0FH 59H 02H FFH 01H 80H 00H(单帧)

        其中报文识别码 FC 00(我们常说的系统过滤 ID)是不准确的,应该右移 5 位,即 0x7E0 才是真正的报文识别码。通常情况下,标准 CAN 协议的响应帧报文识别码就是请求帧的报文识别码加上 8,即0x7E8,左移 5 位后就是我们所看到的 FD 00。

B) 发1帧回多帧 :
Tools: 08H FCH 00H 03H 19H 02H FFH 00H 00H 00H 00H(单帧)
ECU : 08H FDH 00H 10H 0FH 59H 02H FFH 01H 80H 10H(第一帧)
Tools: 08H FCH 00H 30H 00H 00H 00H 00H 00H 00H 00H(流控制帧)
ECU : 08H FDH 00H 21H FFH 01H 79H F1H E3H 01H 62H (连续帧)
ECU : 08H FDH 00H 22H F1H FFH 00H 00H 00H 00H 00H(连续帧)

发送一条帧后,响应帧的第四个字节最高位为1,则表示回多帧 ; 响应帧的有效数据长度为 0x100F&0x0FFF=0x0F,表示有 15 个有效数据的回复帧。蓝色表示有效数据。

C)发多帧回1帧:

Tools: 08H FCH 00H 10H 09H 01H 02H 03H 04H 05H 06H(第一帧)
ECU : 08H FDH 00H 30H 00H 00H 00H 00H 00H 00H 00H(流控制帧)
Tools: 08H FCH 00H 21H 07H 08H 09H 00H 00H 00H 00H(连续帧)

ECU : 08H FDH 00H 04H 59H 02H 2FH 01H 00H 00H 00H(单帧)

发送帧的第四个字节最高位为1,表示发多帧;发送的命令数据长度有第 4,第 5 个字节一起决定,在这里数据长度为 9。蓝色表示有效数据。


展开阅读全文

没有更多推荐了,返回首页