XCP是什么
XCP是什么?我们开发过程中是不是经常用串口打印出一些变量的值供自己发现问题?
XCP的作用1
跟上述串口看数据类似,只不过用一组更为严格的格式规定基于CAN/ETH/FLR进行数据的观测。
XCP作用2
比串口打印数据更强大的是,XCP可以通过变量地址对变量值进行改写!比如在开发后期车辆调教过程中用于测试一个刹车制动力的系数K,标定人员可以根据自己主观评价,对刹车系数k=1,2,3,4...20实时修改,这比使用下载器每次进行软件下载不知高效了多少!
XCP ON CAN 帧结构
XCP与UDS协议一样,只是一种协议,以XCP ON CAN为例,其只是在有限的CAN报文基础上做一些花样,但本质上它就是CAN报文的一种!明白了这点就好办了。
一帧XCP Frame就是一个CAN报文!XCP ON CAN的帧结构如下图:
首先XCP Header为空,也即CAN数据域的起始字节就是XCP的起始字节,至于XCP Packet则与XCO协议一模一样。而XCP Tail则根据经典CAN的MAX_DLC(经典CAN的MAX_DLC固定为8)和XCP Packet长度LEN有以下两种情况:
1. MAX_DLC = LEN
这个时候XCP Packet把CAN帧的8个字节全部填满,XCP Tail为空。
2. MAX_DLC > LEN
这个时候XCP Packet没有把CAN帧的8个字节填满,那么就需要填充到8个字节,这个时候XCP Tail即为填充。
对于CAN-FD,MAX_DLC只有以下值有效:8、12、16、20、24、32、48