- CCP协议应用流程
- 主从设备建立逻辑连接
按照CCP协议,当主设备需要用某个ECU通信时,必须首先与ECU建立连接。CCP建立连接的步骤如下:
- 按地址Tester与ECU建立逻辑连接:CONNECT
- 统一从、主设备CCP协议版本:GET_CCP_VERSION
- 交换站标识符:EXCHANGE_ID
- 获取开启某项功能的密钥:GET_SEED
- 使用密钥解除某项功能的保护状态:UNLOCK
- 设置当前通信状态字节:SET_S_STATUS
主设备需要发送一系列命令与ECU建立逻辑连接,EXCHANGE_ID与seed&key算法是可选步骤,根据实际情况而定。
- 2.数据下载
当主设备需要对ECU中某个变量进行标定时,需要进行数据下载,步骤如下:
- 建立逻辑连接:CONNECT
- 将MTA0 地址设置到下载数据的起始地址:SET_MTA
- 开始下载数据:DNLOAD
备注:这里的数据下载指的是驻留在RAM或EEPROM中的变量。根据下载数据的大小,可选用DNLOAD或DNLOAD_6命令。
- 3.数据上传
测试时,主设备需要ECU上传数据,步骤如下:
- 建立逻辑连接:CONNECT
- 将MTA0 地址设置到上传数据的起始地址:SET_MTA
- 开始上传数据:UPLOAD
备注:根据上传数据的大小,可选用UPLOAD或UPLOAD_6命令。数据上传适用于polling模式下数据上传,即主设备发送一则命令消息,ECU上传一次数据。
- 4.DAQ列表初始化
主设备可要求ECU以DAQ模式上传数据,上传数据前必须首先对每个DAQ列表进行配置,步骤如下:
- 建立逻辑连接:CONNECT
- 设置状态字节DAQ=0(xxxx xx0x):SET_S_STATUS
- 获取DAQ列表大小:GET_DAQ_SIZE
- 设置DAQ入口地址指针:SET_DAQ_PTR
- 写入数据:WRITE_DAQ
- 设置状态字节DAQ=1(xxxx xx1x):SET_S_STATUS
- 开始以DAQ模式传输,并设置参数:START_STOP
在对DAQ列表进行初始化前,需要将状态字节中的DAQ位设置为0,表明DAQ列表还未完成初始化配置。随后主设备通过GET_DAQ_SIZE命令获取DAQ列表大小,即其中有多个ODT列表,根据ODT列表数,主设备分n次将数据写入DAQ列表中的每个ODT。完成DAQ列表的配置后,主设备将状态字节中的DAQ位改写为1,表示DAQ列表完成初始化。最后通过START_STOP命令,开始DAQ通信。
如果有多个DAQ列表需要通信,则需要多次重复GET_DAQ_SIZE到WRITE_DAQ的步骤。
- 标定数据初始化
- 建立逻辑连接:CONNECT
- 设置阶段状态(xxxx xxx0):SET_S_STATUS
- 将MTA0设置到目标内存区域的起始地址:SET_MTA
- 为某块内存区域建立checksum:BUILD_CHECKSUM
- 如果checksum结果不符,开始下载数据:DNLOAD
- 选择标定数据页:SELECT_CAL_PAGE
- 设置阶段状态CAL=1(xxxx xxx1):SET_S_STATUS
- 代码更新
- 建立逻辑连接:CONNECT
- 将MTA0设置到起始地址:SET_MTA
- 清除从设备内存中的数据:CLEAR_MEMORY
- 编程:PROGRAM
- Size=0:PROGRAM
备注:PROGRAM命令用来更新驻扎在非易失性内存(Flash、EEPROM)中的数据和变量,最后通过将PROGRAM命令中的Size位(标定数据长度)设置为0来结束数据更新。