CCP协议学习《一》

CCP:CAN Calibration Protocol是基于CAN总线应用层协议。

  在学习CCP之前,先了解一下CAN总线。

1 CAN是什么?

  CAN 是Controller Area Network****(控制器局域网) 的缩写(以下称为CAN),是ISO*1 国际标准化的串行通信协议。
  CAN总线的作用就是将整车中各种不同的控制器连接起来,实现信息的可靠共享,并减少整车线束数量。

1.1 CAN总线的工作原理

  CAN总线的通信是通过一种类似于“会议”的机制实现的,每一个会议参加人员都可以自由的提出会议议题(多主通信模式)。
CAN工作原理

1.2 CAN收发器

按照BOSCH CAN总线标准将0或1逻辑信号转换为标准中规定的电平,同时有反馈功能。
CAN2.0A/B标准规定:总线空闲时,CAN_H和CAN_L上的电压为2.5V
在数据传输时,
 显性电平(逻辑0):CAN_H 3.5V CAN_L 1.5V
 隐性电平(逻辑1):CAN_H 2.5V CAN_L 2.5V

1.3何为CAN控制器?

CAN控制器主要实现了两部分的功能
  • 数据链路层的全部功能;
  • 物理层的位定时功能

1.4 帧的种类

 通信是通过以下5种类型的帧进行的。
   数据帧、遥控帧、错误帧、过载帧、帧间隔。
 另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11 个位的标识符(Identifier: 以下称ID),扩展格式有29 个位的ID。

帧用途
数据帧用于发送单元向接收单元传送数据的帧。
遥控帧用于接收单元向具有相同ID的发送单元请求数据的帧。
错误帧用于当检测出错误时向其它单元通知错误的帧。
过载帧用于接收单元通知其尚未做好接收准备的帧。
帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧。

2 CCP协议

2.1 基本概念

  • ECU

    Electronic Control Unit(电子控制单元):一种具有中央处理单元的电子装置,其外围电路可执行编程功能。

  • CRM

    Command Return Message(命令返回消息) : 从从设备发送到主设备的一种消息,包含命令/错误代码和命令计数器。

  • CRO

    Command Receive Object(命令接收对象) :从主设备发送到从设备的消息。

  • DTO

    Data Thansmission Object (数据传输对象):从设备发送到主设备的消息(命令返回消息或事件消息或数据采集消息)。

  • DAQ

    Data Acquisition:从从设备向主设备发送的用于从ECU快速数据采集的过程和消息的定义。

  • ODT

    Obiect Descriptor Table: 元素(变量)列表,用于组织数据采集。

2.2 CCP的应用范围和领域

  • 任何基于CAN的分布式电控系统ECU开发
  • 对ECU进行功能和环境测试的系统
  • 被控设备的测试系统和测试台架(发动机、变速箱、悬挂系统、空调控制系统、车身控制系统、刹车防抱死系统)
  • 预研车系的测试和测量系统

2.3 报文对象描述

CRO

DTO:Data Transmit Object ——从Slave到Master 根据PID(Packet ID)的不同,DTO可分为:
?

  • PID=255:Command Return Message(CRM-DTO )

主要是从设备反馈给主设备的响应 ?

  • PID=254:Event Message

当从设备检测到内部发生错误机制时,由从设备自行向主设备发送, 报告其当前的运行状态,并请求主设备暂停当前工作进程以处理发生 的错误。 ?

  • 0≤PID ≤253:Data Acquisition Message(DAQ-DTO)

用在DAQ模式中,由从设备组织,周期性向主设备发送。

2.4 11个基本命令

CommandCodeTimeOut to ACK[ms]Remark
CONNECT0x0125
GET_CCP_VERSION0x1B25
EXCHANG_ID0x1725
SET_MTA0x0225
DNLOAD0x0325
UPLOAD0x0425
GET_DAQ_SIZE0x1425
SET_DAQ_PTR0x1525
WRITE_DAQ0x1625
START_STOP0x0625
DISCONNECT0x0725

2.5 17个可选命令

CommandCodeTimeOut to ACK[ms]Remark
GET_SEED0X1225
UNLOCK0X1325
DNLOAD_60X2325
SHORT_UP0X0F25
SELECT_CAL_PAGE0X1125
GET_ACTIVE_CAL_PAGE0X0925
SET_S_STATUS0X0C25
GET_S_STATUS0X0D25
BUILD_CHKSUM0X0E30000
CLEAR_MEMORY0X1030000
PROGRAM0X18100
PROGRAM_60X22100
MOVE0X1930000
TEST0X0525
DIAG_SERVICE0X20500
ACTION_SERVICE0X215000
START_STOP_ALL0X0825

2.6 命令返回码和错误类别

命令返回码和错误类别
错误处理

2.7 基本命令描述

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

PositionTypeDescription
0byteCommand Code = CONNECT 0x01
1byteCommand Counter = CTR
2wordstation address (Intel format)
4…7bytedon’t care

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3…7bytesdon’t care

2.7.2 GET_CCP_VERSION ——获得CCP版本(0X1B)

CRO:
CRO

PositionTypeDescription
0ByteCommand Code = GET_CCP_VERSION 0x1B
1ByteCommand Counter = CTR
2ByteMain Protocol version (desired)
3ByteRelease within version (desired)
4 …7Bytesdon’t care

DTO:
DTO

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3ByteMain Protocol version as implemented
4ByteRelease within version as implemented
5 … 7Bytesdon’t care

2.7.3 EXCHANGE_ID—加粗样式—交换ID(0x17)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = EXCHANGE_ID 0x17
1byteCommand Counter = CTR
2…bytesCCP master device ID information (optional and implementation specific)

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3bytelength of slave device ID in bytes
4bytedata type qualifier of slave device ID (optional and implementation specific)
5byteResource Availability Mask
6byteResource Protection Mask
7byteDon’t care

2.7. 4. SET_MTA——设置内存传输地址(0X02)
CRO:
CRO

PositionTypeDescription
0byteCommand
1byteCommand
2byteMemory transfer address MTA number (0,1)
3byteAddress extension
4…7unsignedlong Address

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3…7bytesdon’t care

2.7. 5. DNLOAD——数据下载(0x03)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = DNLOAD 0x03
1byteCommand Counter = CTR
2bytesize of data block to follow in bytes
3…7bytesdata to be transferred (up to 5 bytes)

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3byteMTA0 extension (after post-increment)
4…7unsigned longMTA0 address (after post-increment)

2.7.6. UPLOAD——数据上载(0x04)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = UPLOAD 0x04
1byteCommand Counter = CTR
2byteSize of data block to be uploaded in bytes
3…7bytesdon’t care

DTO:

DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3 … 7bytesrequested data bytes

2.7. 7. GET_DAQ_SIZE ——获得DAQlist大小(0X14)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = GET_DAQ_SIZE 0x14
1byteCommand Counter = CTR
2byteDAQ list number (0,1,…)
3bytedon’t care
4…7unsigned longCAN Identifier of DTO dedicated to list number

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3byteDAQ list size (= number of ODTs in this list)
4byteFirst PID of DAQ list
5 … 7bytesdon’t care

2.7.8. SET_DAQ_PTR ——设置DAQlist指针(0X15)
CRO:
CRo

PositionTypeDescription
0byteCommand Code = SET_DAQ_PTR 0x15
1byteCommand Counter = CTR
2byteDAQ list number (0,1,…)
3byteObject Descriptor Table ODT number (0,1,…)
4byteElement number within ODT (0,1,…)
5…7bytesdon’t care

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3 … 7bytesdon’t care

2.7. 9. WRITE_DAQ ——写DAQlist入口(0X16)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = WRITE_DAQ 0x16
1byteCommand Counter = CTR
2byteSize of DAQ element in bytes { 1, 2, 4 }
3byteAddress extension of DAQ element
4…7unsigned longAddress of DAQ element

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3 … 7bytesdon’t care

2.7.10 DISCONNECT ——断开连接(0X07)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = DISCONNECT 0x07
1byteCommand Counter = CTR
2byte0x00 temporary, 0x01 end of session
3bytedon’t care
4,5wordStation address (Intel format)
6…7bytesdon’t care

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3 … 7bytesdon’t care

2.7.11. STOP_START ——开始/停止数据传输(0X06)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = START_STOP 0x06
1byteCommand Counter = CTR
2byteMode : start / stop / prepare data tranmission
3byteDAQ list number
4byteLast ODT number
5byteEvent Channel No.
6, 7wordTransmission rate prescaler

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3 … 7bytesdon’t care

2.8 可选命令描述

2.8.1. GET_SEED——获取被请求资源的种子(0x12)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = GET_SEED 0x12
1byteCommand Counter = CTR
2byteRequested slave resource or function (Resource Mask)
3…7bytesdon’t care

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3byteProtection status (TRUE or FALSE)
4…7bytes‘seed’ data

2.8.2. UNLOCK——解锁保护(0x13)
CRO:
CRO

PositionTypeDescription
0byteCommand Code = UNLOCK 0x13
1byteCommand Counter = CTR
2…bytes‘key’

DTO:
DTO

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3byteCurrent Privilege Status (Resource Mask)
4…7bytesdon’t care

2.8.3 DNLOAD_6 ——数据下载6个字节(0X23)
CRO:

PositionTypeDescription
0byteCommand Code = DNLOAD_6 0x23
1byteCommand Counter = CTR
2…7bytes6 bytes of data to be transferred

DTO:

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code
2byteCommand Counter = CTR
3byteMTA0 extension (after post-increment)
4…7unsigned longMTA0 address (after post-increment)

2.8.4 SHORT_UP ——上传数据最多为5个字节(0X0F)
CRO:

PositionTypeDescription
0ByteCommand Code = SHORT_UP 0x0F
1ByteCommand Counter = CTR
2ByteSize of data block to be uploaded in bytes (1…5)
3ByteAddress extension
4unsigned longAddress

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3 … 7bytesrequested data bytes

2.8.5 SET_S_STATUS ——设置Session状态(0X0C)
CRO:

PositionTypeDescription
0ByteCommand Code = SET_S_STATUS 0x0C
1ByteCommand Counter = CTR
2ByteSession status bits (see table below)
3…7Bytedon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3 … 7bytesdon’t care

2.8.6 GET_S_STATUS ——获得Session状态(0X0D)
CRO:

PositionTypeDescription
0ByteCommand Code = GET_S_STATUS 0x0D
1ByteCommand Counter = CTR
2…7bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID = 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3ByteSession status
4Byteadditional status information qualifier
5bytesadditional status information (optional)

2.8.7 BUILD_CHESUM ——计算校验和(0X0E)
CRO:

PositionTypeDescription
0ByteCommand Code = BUILD_CHKSUM 0x0E
1ByteCommand Counter = CTR
2…5unsigned longblock size in bytes
6, 7bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3Bytesize of checksum data
4 … 7byteschecksum data (implementation specific)

2.8.8 CLEAR_MEMORY ——清除某内存范围(0X10)
CRO:

PositionTypeDescription
0ByteCommand Code = CLEAR_MEMORY 0x10
1ByteCommand Counter = CTR
2…5longMemory size
3…7bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3 … 7bytesdon’t care

2.8.9 PROGRAM ——下载最多5个编程字节(0X18)

CRO:

PositionTypeDescription
0ByteCommand Code = PROGRAM 0x18
1ByteCommand Counter = CTR
2ByteSize of data block to follow (bytes)
3…7bytesData to be programmed (max. 5 bytes)

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3ByteMTA0 extension (after post-increment)
4unsigned longMTA0 address (after post-increment)

2.8.10 PROGRAM_6 ——下载6个编程字节(0X22)
CRO:

PositionTypeDescription
0ByteCommand Code = PROGRAM_6 0x22
1ByteCommand Counter = CTR
2…7bytesData to be programmed (6 bytes)

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3ByteMTA0 extension (after post-increment)
4unsigned longMTA0 address (after post-increment)

2.8.11 MOVE ——移动某内存块(0X19)
CRO:

PositionTypeDescription
0ByteCommand Code = MOVE 0x19
1ByteCommand Counter = CTR
2…5long Size(number of bytes) of data block to be moved
6,7bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3 … 7bytesdon’t care

2.8.12 DIAG_SERVICE ——诊断服务(0X20)
CRO:

PositionTypeDescription
0ByteCommand Code = DIAG_SERVICE 0x20
1ByteCommand Counter = CTR
2,3wordDiagnostic service number
4…7bytesParameters, if applicable

DTO:

PositionTypeDescription
0BytePacket ID = 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3Bytelength of return information in bytes
4Bytedata type qualifier of return information (to bedefined)
5…7bytesdon’t care

2.8.13 ACTION_SERVICE ——行为服务(0X21)
CRO:

PositionTypeDescription
0ByteCommand Code = ACTION_SERVICE 0x21
1ByteCommand Counter = CTR
2,3wordAction service number
4…7bytesParameters, if applicable

DTO:

PositionTypeDescription
0BytePacket ID = 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3Bytelength of return information in bytes
4Bytedata type qualifier of return information (to bedefined)
5…7bytesdon’t care

2.8.14 TEST ——测试可用性(0X05)
CRO:

PositionTypeDescription
0ByteCommand Code = TEST 0x05
1ByteCommand Counter = CTR
2,3little-endian wordstation address (Intel format)
4…bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code = ACK 0x00
2ByteCommand Counter = CTR
3 …7bytesdon’t care

2.8.15 START_STOP_ALL ——开始/停止同步数据传输(0X08)
CRO:

PositionTypeDescription
0ByteCommand Code = START_STOP 0x08
1ByteCommand Counter = CTR
2Byte0x00 stops, 0x01 starts data transmission
3 … 7bytesdon´t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3 … 7bytesdon’t care

2.8.16 SELECT_CAL_PAGE ——选择标定数据页(0X11)
CRO:

PositionTypeDescription
0byteCommand Code = SELECT_CAL_PAGE 0x11
1byteCommand Counter = CTR
2…7bytesdon’t care

DTO:

PositionTypeDescription
0bytePacket ID: 0xFF
1byteCommand Return Code = ACKNOWLEDGE 0x00
2byteCommand Counter = CTR
3 … 7bytesdon’t care

2.8.17 GET_ACTIVE_CAL_PAGE —获得当前激活的标定页(0X09)
CRO:

PositionTypeDescription
0ByteCommand Code = GET_ACTIVE_CAL_PAGE 0x09
1ByteCommand Counter = CTR
2…7Bytesdon’t care

DTO:

PositionTypeDescription
0BytePacket ID: 0xFF
1ByteCommand Return Code
2ByteCommand Counter = CTR
3ByteAddress extension
4 … 7unsigned longAddress
  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值