前言

大家好,我是左工,在前面文章CCP基本命令—种子获取、ECU解锁中,我们介绍了CCP协议的两个命令:种子获取(GET_SEED,0x12)和ECU解锁(UNLOCK,0x13)。今天我们来介绍另外两个命令:激活的标定页获取(GET_ACTIVE_CAL_PAGE,0x09)和内存传输地址设置(SET_MTA,0x02)。


一、CCP的实操报文

在文章CCP基本操作流程与效果展示中,当我们将ECU和上位机软件通过CAN卡硬件连接在一起后,我们在上位机软件上点击“建立连接”按钮,用于建立上位机和ECU之间的逻辑连接,如下图所示。
在这里插入图片描述

点击“建立连接”之后,在报文窗口的前几帧报文我们已经在文章CCP基本命令—连接请求、版本获取CCP基本命令—ECU的ID获取、数据上传CCP基本操作流程与效果展示中进行了详细的解释。今天我们来解读后面4帧报文的信息。

在这里插入图片描述

二、GET_ACTIVE_CAL_PAGE—激活的标定页获取

“激活的标定页获取”这条命令的功能是返回当前处于激活状态下的标定页首地址。获取该地址后,上位机软件就可以向ECU上传和下载数据了。该命令的代码是0x09,CRO格式如下所示。

在这里插入图片描述

这个命令的CRO比较简单,只有命令代码和CTR。如果大家对CRO和CTR概念忘记了,请参看文章CCP 基本概念与核心原理CCP的消息基本格式。针对GET_ACTIVE_CAL_PAGE命令的DTO格式如下。

在这里插入图片描述

这个DTO也比较简单,激活状态的标定页地址就是基地址+地址偏移。有了上面的基本知识我们来解析一下前两帧报文。

在这里插入图片描述

第一帧报文是上位机软件用ID为0x10的CAN报文发送了一帧命令帧(CMD)。第0字节为命令代码0x09,意思是获取处于激活状态下的标定页首地址。第1字节为命令序号0x0C,也就是上位机软件发出的第0x0C(十进制12)号。

第二帧报文是ECU用ID为0x2D的CAN报文发送了一帧响应帧(RES)。第0字节为PID码0xFF,意思是这是一个命令返回消息CRM-DTO,是对某个命令的反馈。第1字节为0x00,错误代码为0x00,查看文章CCP的消息基本格式中错误代码定义,这个代码的意思是“确认/无错误”。第2字节是0x00,意思是该响应帧是对第0x0C号命令(也就是上面的GET_ACTIVE_CAL_PAGE命令)的响应。第3字节0x00,表示地址偏移为0x00,也就是没有偏移。第4~7字节表示种子为:0x01,0x00,0x00,0x00,地址的转换原则是小端在前面,所有首地址为0x0000 0001。

三、SET_MTA—内存传输地址设置

SET_MTA中的MTA的英文全称为Memory Transfer Address,直译就是内存传输地址,相当于一个指针。CCP的很多命令执行之前都要上位机软件向ECU提供一个地址,指明数据从哪里开始上传、下载或者擦写。上位机软件提供地址的方法就是使用SET_MTA指令。CCP协议定义了两个MTA地址,分别是MTA0和MTA1。分别服务与不同的命令,如下图所示。

在这里插入图片描述
我们在文章CCP基本命令—ECU的ID获取、数据上传中曾经介绍了数据上传(UPLOAD,0x04)命令,里面就用到了MTA0,当时就说后面会介绍,这里左工就把这个坑给填上了。STE_MTA命令代码是0x02。该命令的CRO格式如下所示。

在这里插入图片描述

反馈DTO格式如下所示。

在这里插入图片描述

这个命令的定义比较明了,我们直接来解析一下第三、四帧报文。

在这里插入图片描述

第三帧报文是上位机软件发送了命令帧。第0字节为0x02,内存传输地址设置。命令序号承接了前面序号继续排序为0x0D号。第2字节为0x00,表示这是对MTA0进行操作。第3字节为0x00,表示偏移地址为0x00。第4~7字节表示基地址为0x0000 0000。所以这里把MTA0的地址就设置为0x0000 0000。ECU回复了第四帧报文作为ECU的响应。第0字节为0xFF,是一个命令回复PID。第1字节为0x00,表明确认/无错误。第2字节是0x0D,表明是对0x0D号命令的回复。


总结

今天我们依托于实际用例了解了激活的标定页获取和内存传输地址设置命令。相信大家对CCP的命令使用有了初步的了解。后续左工会继续依托于实际应用向大家其他命令的具体使用方法。请敬请收藏关注,不迷路。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐