一文搞懂汽车标定协议之CCP

汽车标定协议之CCP从入门到精通一篇就够了

    • CCP协议基本概念
    • CCP协议数据类型
    • CCP协议报文格式
    • 常用CRO与DTO
        • CONNECT——建立连接(0x01):
        • DISCONNECT ——断开连接(0X07)
        • 数据标定命令-设置内存传输地址(0X02)
        • 数据下载(0x03)
        • 数据上载(0X0F)
    • DAQ常用命令与流程
        • 获取DAQ List大小-0x14
        • 设置DAQ指针-0x15
        • 向DAQ列表写入标识符地址-0x16
        • 开启DAQ传输-0x06

在看这篇文章之前,我们先了解CCP协议是什么?CCP得作用是什么? CCP是“CAN Calibration
Protocal”的缩写,是基于CAN实现的一种最为基本的测量标定协议。

例如:我们学习STM32时经常通过串口助手(上位机)将传感器的数据打印出来,这就是测量。我们通过串口助手将数据发送之MCU,MCU通过串口助手(上位机)拿到数据对变量进行赋值,这就是标定。
而CCP是在CAN通信的基础上实现的测量与标定,当然CCP的测量与标定功能更加强大。

CCP协议基本概念

在学习CCP协议之前,我们需要先学一些CCP的理论知识,不过这部分看不懂也没关系,先有个印象,后面会通过CCP的实际报文来结合理论分析。

CCP的测量模式分为两种:一种是POLLING(轮询模式),一种是DAQ(固定周期)。

POLLING模式,就是一问一答得形式,上位机发送一条指令,从机(ECU)回复一条。这种模式实现简单,但缺点显而易见,占内存,效率低。
DAQ模式,DAQ模式就是固定周期将测量数据发送至上位机。举个例子:强哥是卖鱼的,鱼呢比较受欢迎卖的很好,没鱼了就打电话叫老默送点鱼,老默发现每次送的鱼基本都差不多,于是和强哥商量就立下哥规矩,草鱼呢一天送一次,鲈鱼呢两天送一次,不用天天打电话说了。有别的需求在打电话沟通。因此,CCP就定义了DAQ模式,需要将数据按传输速率分组,每一组称为一个DAQ List,每一个List里面定义了多个ODT(数据列表),专门存储数据的地址,数据长度等相关信息。CCP可以有多个DAQ列表,每个DAQ列表传输速率不同,多个列表可同时启动。

CCP协议数据类型

CCP将CAN传输的报文分为以下几种类型:

CRM:命令返回消息,从设备发送到主设备的一种消息,包含命令/错误代码和命令计数器。
CRO:上位机发送到ECU的命令消息报文。
DTO:ECU响应上位机的消息报文。

CCP协议报文格式

CRO报文结构:
CRO是上位机发送至ECU的命令报文。
在这里插入图片描述
第一个字节CMD:表示命令位,例如标定命令、测量命令等。具体命令后面讲诉。
第二个字节CTR:表示计数位,也就是该字节没发一个CRO就会加1,加到255后重置为0。
第2-7个字节Data:根据CMD而定,具体数据我们后面讲诉。

DTO报文结构
DTO是ECU回复上位机命令的报文
在这里插入图片描述
第一个字节PID:表示ECU回复的命令位,0xFF表示正相应回复,0xFE表示负响应回复。正相应回复会携带数据发送至上位机,负响应回复会携带错误码发送至上位机。
第二个字节ERR:上诉提到的错误码,0x00表示无错误。
第三个字节CTR:表示计数位,此为回复至上位机时与上位机发送的CRO中的CTR一致。
第3-7字节Data:根据PID而定,具体数据后序讲诉。

常用CRO与DTO

CONNECT——建立连接(0x01):

在这里插入图片描述在这里插入图片描述
示例:
上位机发送CRO至ECU报文如下:
01 C6 00 00 00 00 00 00
参数如下:
第1字节01:连接命令(CMD)
第2字节C6:CTR计数
第3-8字节00:不必理会
ECU响应上位机DTO白问如下:
FF 00 C6 FE 00 00 00 00
参数如下:
第1字节FF:正响应命令(PID)
第2字节00:无错误
第3字节C6:CTR计数
第4-8字节00:不必理会

DISCONNECT ——断开连接(0X07)

在这里插入图片描述
在这里插入图片描述示例:
上位机发送CRO至ECU报文如下:
07 C7 01 00 00 00 00 00
参数如下:
第1字节07:断开连接命令(CMD)
第2字节C7:CTR计数
第3字节01:结束会话
第4-8字节:不必理会
ECU响应上位机DTO报文如下:
FF 00 C8 FE 00 00 00 00
参数如下:
第1字节FF:正响应命令(PID)
第2字节00:无错误
第3字节C8:CTR计数
第4-8字节:不必理会

数据标定命令-设置内存传输地址(0X02)

此命令用于进行数据标定,在数据标定之前需要先用此命令进行内存定位,然后向定位的内存写入数据,写入数据命令见下一条。
在这里插入图片描述
在这里插入图片描述
示例:
上位机发送CRO至ECU报文如下:
02 03 00 00 40 00 11 10
参数如下:
第1字节02:设置内存传输地址命令(CMD)
第2字节03:CTR计数
第3字节00:MAT号
第4字节00:扩展地址
第5-8字节:变量地址
ECU响应上位机DTO报文如下:
FF 00 03 00 00 00 00 00
参数如下:
第1字节FF:正响应命令(PID)
第2字节00:无错误
第3字节03:CTR计数
第4-8字节:不必理会

数据下载(0x03)

此命令用于标定数据,与上一条命令结合使用。
在这里插入图片描述
在这里插入图片描述示例:
上位机发送CRO至ECU报文如下:
03 10 02 01 00 00 00 00
参数如下:
第1字节03:数据下载命令(CMD)
第2字节10:CTR计数
第3字节02:变量字节数
第4-8字节:01为标定的数据
ECU响应上位机DTO报文如下:
FF 00 10 00 00 00 00 00
参数如下:
第1字节FF:正响应命令(PID)
第2字节00:无错误
第3字节10:CTR计数
第4-8字节:不必理会

数据上载(0X0F)

数据上载也就是ECU数据上载至上位机,对数据的测量。
在这里插入图片描述
在这里插入图片描述
示例:
上位机发送CRO至ECU报文如下:
0F 11 02 00 40 00 11 10
参数如下:
第1字节0F:数据上载命令(CMD)
第2字节11:CTR计数
第3字节02:变量字节数
第3字节00:扩展地址
第5-8字节:变量地址
ECU响应上位机DTO报文如下:
FF 00 11 01 00 00 00 00
参数如下:
第1字节FF:正响应命令(PID)
第2字节00:无错误
第3字节11:CTR计数
第4-8字节00 00 00 00 01:变量值

上诉命令一般用于POLLING模式,下面我们讲解DAQ命令。

DAQ常用命令与流程

获取DAQ List大小-0x14

在这里插入图片描述
在这里插入图片描述

示例:
上位机发送CRO至ECU报文如下:
14 07 02 00 00 00 01 01
ECU响应上位机DTO报文如下:
FF 00 07 1E 3C 00 05 00

设置DAQ指针-0x15

此命令与设置内存传输地址类似,需要先定位DAQ-ODT位置然后向,该目标写入变量地址,与下一条指令配合使用。
在这里插入图片描述
在这里插入图片描述
示例:
**上位机发送CRO至ECU报文如下:**指向向DAQ0-ODT0
15 08 00 00 00 00 00 00
ECU响应上位机DTO报文如下:
FF 00 08 00 00 00 00 00

向DAQ列表写入标识符地址-0x16

此命令与上一条命令配合使用,指向DAQ-ODT后写入标识符地址,DAQ会周期性的将地址上的数据发送至上位机。
在这里插入图片描述
在这里插入图片描述
示例:
**上位机发送CRO至ECU报文如下:
16 09 02 00 40 00 11 10
ECU响应上位机DTO报文如下:
FF 00 09 00 00 00 00 00

开启DAQ传输-0x06

在这里插入图片描述
在这里插入图片描述
示例:
**上位机发送CRO至ECU报文如下:
08 0C 01 00 00 00 00 00
ECU响应上位机DTO报文如下:
FF 00 0C 00 00 00 00 00


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部