CCP学习二——通信流程

1 概述

  CCP通信按信息传输方式分为:POLLING(问答)和DAQ方式
  按功能模式分为三种:SESSION(会话)、CAL(标定)、DAQ(查询)
  工作流程一般为,程序初始化完成后,通过SET_S_STATE设置节点当前工作状态(Session/CAL/DAQ),若触发CAL和DAQ,需要在初始化时对该功能进行初始化。
  正常情况下设置为会话模式(SESSION),需要CAL和DAQ时在进行初始化。
        在CCP通信流程
可以看出CCP通信协议的分为这四大模块,初始化、会话、标定、DAQ数据传输

PS:“冷启动”包含:
① 连接:建立主从设备之间的逻辑连接,
② seed&key 登录程序,
③ 自动会话配置(EXCHANGE ID),除非被覆盖,
④ 自动代码更新,如果主设备支持。

1.1.初始化

应用程序完成CAN Driver初始化后,调用CCP功能前需要对其进行初始化,按顺序如下:

命令描述备注
TEST物理连接测试是否物理连接建立起来,返回ECU的station address,该命令在可选命令中
CONNECT通信连接建立点对点(master-slave)的物理链接,声明接下来的命令都是针对当前从节点发送的,直到另一从节点被选中,此时当前的节点处于暂时断开状态。从设备不响应任何指令,除非先用带正确station address信息的CONNECT命令链接。
GET_CCP_VERSION获取CCP版本协议三原则:大版本号一定要相同;小版本号主节点大于等于从节点主节点支持有Non-Optional命令(初始化)
EXCHANGE_ID交换IDCCP主站和从站交换id以实现自动会话配置。根据从服务器返回的ID,可能包含自动分配数据采集设置文件(Plug’n’Play)。
GET_SEED获取SEEDEXCHANGE_ID 执行完后,自动将MTA0设置到相关位置,接到该命令后返回SEED,用来加密交互。
UNLOCK发送KEY解锁与SEED和加密style配合,计算出Key,返回功能权限信息,三种权限CAL、DAQ及PGM需要三次破解。
SET_S_STATUS设置状态位设置ECU内CCP通信状态,一般进入等待状态。bit 0  CAL初始化完成; bit 1  DAQ初始化完成 ;bit 2  保存DAQlist设置,上电开始传输;bit 6  CAL参数掉电不丢失 ;bit 7  Session in progress

解锁完成后,依据任务的分配,系统工作状态可以设置为以下三种状态:

  • ① 等待会话状态,接收命令,触发命令操作
  • ② 继续初始化CAL和DAQ,例如:设置DAQ掉电不丢失,上电自动传输,此时需要设置为DAQ初始化完成状态
  • ③ DISCONNECT,休眠当前节点。多ECU并行工作时,初始化时把所有节点都初始化,断开连接把每个ECU设置为休眠状态,通过CONNECT再唤醒具体ECU,切换工作。单节点工作时不需要此命令,直接进入某种工作状态。
1.2.会话状态

会话状态主要定义具体应用协议,接受具体代码,执行相关命令,返回结果数据。典型函数两条:

  • ACTION SERVICE:行动响应(Action Service)
  • DIAG SERVICE:诊断服务(Diagnostic Service)

  都是先发送协议命令,从节点接收到命令信息后按照执行具体行动,并自动设置MTA0到要返回的数据存储首地址,通过DTO带回要返回信息长度。信息量大时调用UPLOAD读取,信息量小于3bytes,直接附在DTO未定义位返回,例如执行结果,增加执行效率。
  UPLOAD、DNLOAD两个函数也可以实现会话服务,但传递数据需要先调用SETMTA指定具体存储地址,容易造成内存区存储混乱,且传输效率低,主要应用于批量数据传输。而
ACTION SERVICE和DIAG SERVICE传递的是握手信息,不需要明确传递参数的具体存储地址。DNLOAD 6相同。
  SHORT UP与UPLOAD命令区别在于和MTA0无关,
CRO自带存储区首地址,且执行完后MTA0不自增,适用于小量单次数据上传。

2.CCP具体功能的实现例子

2.1.Session log-in

CONNECT (逻辑连接)

CRO0x010x450x000x02
DTO0xFF0x000x45

GET_CCP_VERSION (版本一致)

CRO0x1B0x270x020x01
DTO0xFF0x000x270x020x01

EXCHANGE_ID (交换身份标识)

CRO0x170x23
DTO0xFF0x000x230x040x020x030x03

GET_SEED (得到秘钥种子,返回秘钥)

CRO0x120x230x02
DTO0xFF0x000x230x010x140x150x160x17

UNLOCK (通过接收到的秘钥,解除保护)

CRO0x130x230x140x150x160x17
DTO0xFF0x000x230x02

SET_S_STATUS (设置会话状态,设置一个或多个状态位)

CRO0x0C0x230x81
DTO0xFF0x000x23

2.2.Calibration Data Initialization
CONNECT (连接,如果已经连接,跳过)

CRO0x010x450x000x02
DTO0xFF0x000x45

SET_S_STATUS (设置会话状态(xxxx xxx0)CAL=off)

CRO0x0C0x230x81
DTO0xFF0x000x23

Loop
SET_MTA (设置内存传输地址到目的块)

CRO0x020x230x000x020x340x000x200x00
DTO0xFF0x000x23

BUILD_CHKSUM (构建内存块的校验和)

CRO0x0E0x230x000x000x800x00
DTO0xFF0x000x230x020x120x34

DOWNLOAD (下载,如果校验和不匹配)

CRO0x030x230x050x100x110x120x130x14
DTO0xFF0x000x230x020x340x000x200x05

SELECT_CAL_PAGE (选择标定数据页)

CRO0x110x23
DTO0xFF0x000x23

SET_S_STATUS (设置会话状态 bit CAL=1(xxxx xxx1))

CRO0x0C0x230x81
DTO0xFF0x000x23

2.3.DAQ list Initialization
CONNECT (连接,如果已经连接,跳过)

CRO0x010x450x000x02
DTO0xFF0x000x45

SET_S_STATUS (设置会话状态 DAQ=0(xxxx xx|0x))

CRO0x0C0x230x81
DTO0xFF0x000x23

GET_DAQ_SIZE (分配DAQ列表,参考Organization of DAQ)

CRO0x140x230x03------0x010x020x030x04
DTO0xFF0x000x230x100x08

Loop
SET_DAQ_PTR (设置目标指针)

CRO0x150x230x030x050x02
DTO0xFF0x000x23

WRITE_DAQ (写列表数据)

CRO0x150x230x020x010x020x000x420x00
DTO0xFF0x000x23

SET_S_STATUS (设置会话状态 DAQ=1(xxxx xx1x))

CRO0x0C0x230x81
DTO0xFF0x000x23

STATRT_STOP (开始DAQ- DTOs的数据传输,设置参数)

CRO0x060x230x010x030x070x020x000x01
DTO0xFF0x000x23

2.4.Code Update
CONNECT (连接,如果已经连接,跳过)

CRO0x010x450x000x02
DTO0xFF0x000x45

SET_MTA (设置内存传输地址到开始地址)

CRO0x020x230x000x020x340x000x200x00
DTO0xFF0x000x23

CLEAR_MEMORY (清除从设备的内存)

CRO0x100x230x000x000x800x20
DTO0xFF0x000x23

Loop
PROGRAM (程序 取决于扇区或设备的大小)

CRO0x180x230x030x100x110x12
DTO0xFF0x000x230x020x340x000x200x03

PROGRAM (SIZE=0,程序结束)

CRO0x180x230x030x100x110x12
DTO0xFF0x000x230x020x340x000x200x03

2.5.Block DownLoad
CONNECT (连接,如果已经连接,跳过)

CRO0x010x450x000x02
DTO0xFF0x000x45

SET_MTA (设置内存传输地址到目的块)

CRO0x020x230x000x020x340x000x200x00
DTO0xFF0x000x23

DOWNLOAD (下载,相应的数据块大小被下载)

CRO0x030x230x050x100x110x120x130x14
DTO0xFF0x000x230x020x340x000x200x05

2.6.Block UpLoad
CONNECT (连接,如果已经连接,跳过)

CRO0x010x450x000x02
DTO0xFF0x000x45

SET_MTA (设置内存传输地址到源数据块)

CRO0x020x230x000x020x340x000x200x00
DTO0xFF0x000x23

UPLOAD (上传)

CRO0x040x230x04
DTO0xFF0x000x230x100x110x120x13

3.附录:
错误码矩阵
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值