CAN标定协议

更新时间:2023-11-26 05:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.2 CAN标定协议

控制器局域网络CAN是由英特尔公司和罗伯特博世有限公司联合开发的。该协议广泛应用在许多高端汽车控制系统如发动机管理以及工业控制系统。用于CAN协议的控制器芯片可以从不同的半导体制造商处得来。

CAN标定协议是ASAP标准的一部分。它是由一个名叫Ingenieurbüro Helmut Kleinknecht的标定系统制造商开发和推广的,并且应用于汽车行业的许多领域中。CCP由ASAP的工作组控制,并且增强了可选功能。

2 应用程序的领域及范围

这个文件规定了CAN标定协议CCP,是由包含了ASAP的工作组来定义。CCP定义了控制器与主设备之间的连接使用CAN2.0B(11-bit和29-bit 标示符),也包括2.0A(11-bit 标示符)用于:

1. 从控制器获得数据,

2. 内存转移和标定控制器中的控制功能。 在以下领域CCP提供的功能可能会被用到:

开发电子控制单元(ECU) ECU功能和环境测试的系统

用于控制设备的测试系统和测试标准 前车系列的机载测试盒测量系统

任何基于CAN的分布式电子控制系统的非汽车应用

5 定义及缩写

CAN 控制器区域网络:通信协议(在ISO/OSI模型水平 1+2)是由罗伯特博世有限公司开

发和维护的。设计此协议用以管理各种CPU之间多路复用的通讯。它是信息化控制,采用无损的逐位仲裁决定哪个节点“拥有”总线,并且有一个信号优先体系,它基于每个信号传递的信号标示符。

CCP CAN标定协议:由Ingenieurbüro Helmut Kleinknecht开发,并由ASAP工作组通

过批准为用于数据采集和标定的标准协议。 CRO 命令接收对象:信号从主设备发送到从设备。

CRM 命令返回信息:一种由从设备发向主设备的信号格式,包含了命令/错误代码和命令

计数器。 DAQ 数据采集:从ECU中定义一个程序和从设备到主设备之间的信号发送,以实现数据的

快速读取

DTO 数据发送器:从设备发送到主设备的信号。(命令返回信号或者事件信号或数据采集

信号)

ECU 电子控制单元:带有一个中央处理机利用它的外围电路执行程序功能的电子设备。 消息对象: 在CAN总线上传递的信号,是由发送端ECU发送到接收端ECU的。接收端ECU

拥有信号中包含的数据编码。一个消息对象的数据可以是0到8字节。 消息框: 在最近的关于CAN的文献中,消息框是消息对象的同义名称。

主从设备: 一套通过CAN交换数据对象的控制器。此外,外部控制器链接到网络,它与一

个或多个控制器相连,并向它们发送命令,被称为主设备。在现存网络中接收命令的控制器被称为从设备。

ODT 对象描述符表:用于接收数据组的变量元素列表。

6 协议的定义

用于标定和获取数据的CAN通信协议是一个主-从通讯类型。在CAN总线上,主设备和一个或多个从设备相连。

主从设备布局

主设备是一个标定工具或诊断/监测工具,或一个测量系统通过向从设备发送命令以启动CAN总线上的数据传输。CCP实现支持命令,用于带有简单存储传输的通用控制和数据采集。通讯协议的上述两部分(函数组)是相互独立并且可以分别运行的,这是依靠从控制器实现的。这也支持各部分的信号以嵌套次序传输。

6.1 通用控制命令

这些命令用于在从设备中实现功能。出于这个目的,在主设备和CAN总线上的其他位置(从设备)之间建立了连续的逻辑连接。这种逻辑连接一直有效,直到另一个站被选中或当前位置是通过明确的命令断开。

初始化过后,已经取得了逻辑连接,主设备控制数据从主设备到从设备间的相互传输。 所有来自主设备的命令必须由从设备上带有的握手协议来提示(命令返回码或错误代码)。

6.2 数据采集命令

这些协议命令是用来在从设备中进行连续数据采集的。CAN上的任一节点都可以定期的传送内部数据,它们对应于主设备的控制命令所配置的一个列表。数据传输起始于主设备并由从设备完成,它可以依赖于固定的采样率或者由事件驱动(例如:曲轴位置)。

7 信号对象

7.1 信号对象组织

根据对CAN的定义,所有需要传送的信号和数据都被打包成为“信号对象”,含有高达8字节的数据。一个信号对象从CAN上的一个节点传送到另一个节点。

CCP要求至少两个信号对象,一个用于每个方向: 1) 命令接受对象: CRO 2) 数据传送对象: DTO

CRO用于命令代码和相关参数的接收,来执行内部功能或者是以逻辑连接的CAN设备之间的内存传输。命令的接收必须由一个使用数据传送对象DTO的握手信号来提示,这样一来DTO就被称为命令返回信号。这一DTO信号的返回代码,用来判定对应命令是否被成功执行。

功能框图:CCP主从设备间的通讯流程

在从设备描述文件里定义了消息标识符在上述对象的分配(例如:ASAP2格式描述文件),它被用来配置主设备。一个好的建议表示信号对象的总线优先权需要认真确定,以防止破环总线上其他的实时通讯。同时,CRO需要具备比DTO更高的优先权。

对于CCP数据传输,它的本身没有定义字节顺序。因为数据组依靠ECU的CPU,字节顺序是在从设备描述文件中被定义的。唯一的例外是TEST中的站地址,连接和断开命令。

7.2 信号对象的描述

7.2.1 命令接收对象 CRO

一个命令接收对象CRO是由主设备送到其中一个从设备中的。从设备响应中的数据传输对象包含一个命令返回信号CRM。

对象的结构:

信号范围参数:

CRO的数据长度代码必须是8.未使用的数据字节,在命令描述中标有“忽略”,可能代表任意值。

7.2.2 数据传输对象DTO

DTO必须将从设备所有将要发出的信号和数据制作为数据包。数据包的首字节被用作它的ID。

DTO是一个:*命令返回信号CRM,如果DTO被当做主设备发送到一个CRO的响应。 *事件信号,如果DTO报告内部下属状态改变,以引用错误恢复或其他服

务。详细的解释在该章的‘错误处理’。

*数据采集信号,如果数据包ID指向对应的对象描述表ODT,它描述了数

据采集元素(变量)包含在数据包剩余的7个字节的数据中。ODTs是通过协议命令进行初始化和修改的(见章节‘命令的描述’)。

对象结构:

信号范围内的参数:

PID的含义:

命令返回或事件信号的格式如下:

ERR:命令返回/错误代码。

CTR:CRO中最后一条命令收到的命令计数器

CRM的数据长度代码必须是8。 未使用的数据字节,在命令描述中标有“忽略”,可能代表任意值。

数据采集信号的格式如下:

PID=n;DTO包含一个数据采集信号对应于对象描述表ODTn(详见章节‘命令的描述’)

DTO的数据长度代码可设置为实际大小。

7.3 数据采集机构

主设备可以从一个从设备中初始化数据采集,从设备将DAQ-DTOs中定义的数据送回。

组织的数据元素如下:

位于ECU内存中的数据元素,被分配给一个称为对象描述表ODT的列表中。表中包含地址,地址扩展和个元素的字节长度。ODT可以有多达7个元素指针。

在这ODT中定义的每个元素的内容必须被转换成DAQ信号DTO以送到主设备中。为了节省ECU中的内存资源,地址的扩展和长度都是可选的。该元素必须由ECU一贯的采样。如果一个ECU不支持一个元素的大小超过1字节,主设备需要将多数据对象分割为单一字节。在这种情况下,ECU必须保证在ODT中所有元素的一致性。

PID是分配给ODT的数目(0=

CCP允许DAQ列表一个数字的安装,它可以同时起作用。每个DAQ列表DTO的采样和传

输都是由ECU中的个别事件引发的。详见START_STOP命令的说明。

当一个DAQ列表被触发,所有或一个ODT(根据ECU的执行情况)的数据都以一致的方式采样。ECU可能需要一些时间在总线上发送取样的DTO信息。当一个新的周期循环在前一个循环的传输完成之前被触发,ECU有两种可能的反应:

1. 前一周期的传输被跳过。

优点:有一些DAQ列表的ODT丢失而且此工具可以向用户反应这一情况。 问题:如果这些缺陷发生的频繁,会有一些信号根本没有被测量到。

2. 新一循环的传输被跳过。

优点:收到的采样总是完成的,而且产生的采集扫面线减少。

问题:如果是事件触发的采样,工具没有能力检查采集率的准确性。

此外,ECU可能发送一个“DAQ处理器超负荷”事件信号来通知主设备。ECU必须小心不要因为这一额外的消息溢出另一个周期。

当定义ECU中的测量元件时,开发者必须注意以保证采样数据可以通过CAN传输。所描述的对于过载的反应机制,不应该在标准工况下起作用。

一个经典的方法来建立一个ODT应该是: 1. 清除ECU中的当前列表并且让ECU通过发送命令GEL_DAQ_SIZE来为一个DAQ

列表分配内存。在GEL_DAQ_SIZE命令之后,ECU报告了当前DAQ列表中的ODT可用的内存。

2. 在一个循环中的发送

设置数据采集参数以及DAQ列表数目,ODT数目,ODT中的元素数目

写下数据采集参数包括元素大小,扩展地址,直至ODT完成的32位基地址并且重复这一程序作进一步ODT。

为了初始化DAQ-DTO的传输,发出了一个START_STOP命令。

8 版本机制

CCP2.1版介绍了一个版本管理机制,以减少版本不相容性的影响。以下是方针应用: 主要的协议版本号码:主要协议的版本好吗在0到255之间变动。如果现存的用于基本内存传输和数据采集功能的命令,与以前定义的版本有很大的不同,那么就需要对这一号码做些改变。这意味着,非选择性命令在同一个主要协议版本号的非向后兼容方式里必须是不变的。

次要协议的版本号:次要协议的版本号是从0到9.如果协议中增加了或删除了一个选择性命令,那么就必须对这号码做些变动。

9 版本兼容性

为了确保主设备与从设备间最低的兼容性,以下方针适用:

1. 如果主协议版本号不相等,则主设备与从设备间的通讯就不可能完成。

2. 主设备必须至少有跟从设备相同或更高的协议版本(主要和次要协议版本号)。从

设备只要求支持一个协议版本。

3. 为了确保一个完全的ASAP1,一个CCP要求主设备和从设备必须至少支持所有非选

择性命令。

10 命令代码列表

以下是可选择命令,如果ECU不支持DAQ:

GET_DAQ_SIZE,SET_DAQ_PTR,WRITE_DAQ,START_STOP。

如果用到SELECT_CAL_PAGE命令,则需要GET_ACTIVE_CAL_PAGE。

11 令返回代码列表

如果对协议命令非同步的发生错误,CCP的从设备也可以通过发送错误代码作为事件代码(封包ID 0xFE),来直接调用相应的错误处理。

错误的分类:

详情见章节“错误处理”。

12 命令的描述

这一章节讲述了所有命令以及它们的参数和期望的返回信息,也包括每个命令对应的一个示例。

12.1 连接

命令标签CONNECT CRO中数据的结构

这个命令为主-从命令协议,建立一个与选择的从站间连续逻辑的点对点连接。直到另一个站点被选中,以下所有的命令协议都唯一的指向这一站点。一个对另一个站点的CONNECT命令将临时断开活动站点(见断开连接)。 CONNECT命令对于一个已经连接的站点是被认可的。一个从设备不会对任何命令做出回应,除非被一个优先的连接命令带有正确的站点地址标记过。该站点地址按照从小到大字节顺序,被指定为一个数(Intel格式,低字节优先)

以下是预计的返回信息(连接或返回DTO:)

示例

主设备向从设备发送一个带有站点地址0x0200的CONNECT CRO。命令计数器目前是0x45:

从设备返回一个包含认可(0x00)的DTO和CRO的CTR:

12.2 交换站点标识

命令标签EXCHANGE_ID CRO中的数据结构

CCP的主从站点交换ID用于自动回话配置。这也可能包括基于从站点返回ID(即插即用)的数据采集安装文件的自动分配。以下是预计的返回信息(返回的DTO的内容):

从设备自动的设置内存传输地址0(MTA0)到CCP主设备可能用UPLOAD随后上传的请求ID中。另见SET_MTA和UOPLOAD命令的说明。

下述的资源的可利用性掩码/为了精简的资源保护状态掩码格式仅仅被称为资源掩码。

资源可用性:如果bit=TRUE 指定的资源或功能可用。

资源保护:如果bit=TRUE 指定的资源或功能被保护,以防未授权的访问(需解锁)。 示例

主设备发送一个EXCHANGE_ID CRO到从设备。命令计数器CTR目前是0x23:

从设备返回一个包含确认接收的DTO(0x00),CRO的CTR,从地址的长度和数据格式:

从ID的长度是4字节,数据格式是第二类编码类型。资源的可用性掩码是0x03,资源保护状态掩码是0x03.数据可以利用UPLOAD在从设备中提取。

12.3 Get Seed for Key

命令标签GET_SEED CRO中的数据结构

详见用资源掩码的描述EXCHANGE_ID。

一个GET_SEED命令只能调用一个资源或功能。如果需要调用更多资源,GET_SEED命令必须和下述UNLOCK命令一起多次执行。

返回的‘seed’数据用于seed&key算法来计算解锁需要授权访问功能的‘key’(见下面的‘解锁保护’)。

以下是预计的返回信息(返回DTO的内容):

如果保护状态=FALSE,不需要UNLOCK来解锁有用的功能。 示例

主设备发送一个GET_SEED CRO到从设备。命令计数器目前是0x23.任务是数据采集:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,保护状态和‘seed’数据:

保护状态是TRUE(0x01),seed数据是0x14,0x15,0x16,0x17。

12.4 解锁保护

命令标签UNLOCK CRO中数据的结构

利用一个由‘seed’计算出的‘key’来解锁从设备的安全保护(如果合适)。见上述seed&key。

以下是预期的返回信息(返回的DTO的内容):

详见用于资源掩码描述的EXCHANGE_ID。 示例

主设备发送一个UNLOCK CRO到从设备。命令计数器CTR目前是0x23,并且运用了GET_SEED得来的key:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,以及授权状态:

授权状态是0x02,仅有数据采集解锁。

12.5 设置内存转移地址

命令标签 SET_MTA CRO中的数据结构

这个指令将初始化一个基础指针(32bit+扩展)用于以下所有的内存传输。该地址扩展是依靠从控制器组织,并且可以辨认一个可切换记忆库或一个内存段。MTA数(操作)是用来识别不同的传输地址位置(指针)。MTA0是被DNLOAD,UPLOAD,DNLOAD_6,SELECT_CAL_PAGE,CLEAR_MEMORY,PROGRAM和PROGRAM_6命令。MTA1用于MOVE密令。见‘MOVE’命令。

以下是预期的返回信息(返回的DTO的内容):

示例

主设备发送一个SET_MTA CRO到从设备。命令计数器目前是0x23,MTA0数为0,地址扩展0x02并且基地址是0x34002000:

从设备返回包含确认接收(0x00)的DTO和CRO的CTR:

12.6 数据下载

命令标签 DNLOAD CRO的数据结构

在CRO中包含的指定长度(大小)的数据块,将被复制到内存中,在当前内存传输地址(MTA0)开始。MTA0指针将随‘size’的值后递增。

以下是预期的返回信息(返回的DTO的内容):

示例

主设备发送一个DNLOAD CRO到从设备。命令计数器CTR目前是0x23,数据大小是0x05,传输的数据是0x10,0x11,0x12,0x13,0x14:

从设备回答了一个包含确认收到(0x00)的DTO,CRO的CTR,记忆传输扩展地址0x02以及(增加的)目前的MTA0

在执行这个命令之前,MTA0是0x34002000并且增加了5。

12.7 6字节数据下载

命令标签 DNLOAD_6 CRO中的数据结构

包含在CRO中的固定长度6字节的数据模块将被复制到内存中,在目前的内存传输地址(MTA0)启动。MTA0指针增加的值被设置为6。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个DNLOAD_6CRO到从设备。命令计数器CTR目前是0x25,数据大小是0x05,将要传输的数据是0x10,0x11,0x12,0x13,0x14,0x15:

从设备返回一个包含确认收到(0x00)的DTO,CRO的CTR,内存传输扩展地址0x02和(增加的)目前的MTA0

在执行这一命令之前,MTA0是0x34002000,滞后增加了6。

12.8 数据上传

命令标签 UPLOAD CRO中的数据格式

从目前MTA0启动的指定长度的数据模块,将被复制到相应的DTO数据库中。MTA0指针的位置增加值被设置为‘size’。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个UOLOADCRO到从设备。命令计数器CTR目前是0x23,数据大小是0x04:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR以及要求的数据字节:

DTO中没有报告新的MTA0地址。

12.9 简短上传

命令标签 SHORT_UP CRO中数据的结构

在源地址启动的指定长度的数据模块,将被复制到对应的DTO数据库中。MTA0指针保持不变。

以下是预期返回的信息(返回的DTO中的内容):

示例

主设备发送一个SHORT_UPCRO到从设备。命令计数器CRT目前是0x23,数据大小是0x04,源地址是0x12345678:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR和要求的数据字节:

12.10 选择标定数据页面

命令标签 SELECT_CAL_PAGE CRO中的数据结构

这个命令的功能依赖于ECU的执行。先前用于启动标定数据页面的初始化的MYTA0指针,是由这个命令的当前活动页面选择的。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备首先发送一个SET_MTACRO然后是一个SELECT_CAL_PAGE CRO到从设备。命令计数器目前是0x23。

从设备返回一个包含确认接收(0x00)的DTO并且CRO的CTR:

利用ECU的两个内存模块来标定,SET_MTA和SELECT_CAL_PAGE命令可以被用于来自主设备的‘紧急事件中断’,这就可以将从设备带入一个‘安全状态’,是用SET_MTA命令和立刻用SELECT_CAL_PAGE执行改变来准备这两个内存模块的改变。

12.11 获取DAQ列表的大小

命令标签 GET_DAQ_SIZE CRO中数据的结构

返回指定的DAQ列表的大小,作为可用对象描述列表(ODTs)的号码并且清除目前的列表。如果指定列表数不可用,将返回size=0。DAQ列表初始化而且这个列表的数据采集停止。

一个单独的CAN标识器被指派到一个DAQ列表,来配置多个ECU数据采集。这一特征是可选择性的。如果给定的标识器不可用,将返回一个错误代码。29小块CAN标识器是由许多重要小块成套标记的。

以下是预期的返回信息(返回的DTO内容):

一个DAQ列表指定的ODT的PID是由下式决定的: PID=First PID of DAQList+ODT number 示例

主设备发送一个GET_DAQ_SIZE CRO到从设备。命令计数器CTR目前是0x23,DAQ列表号码是0x03 ID是0x01020304。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,第一个PID=0x08列表大小是0x10(10个ODT有多达7个元素)

12.12 设置DAQ列表指针

命令标签 SET_DAQ_PTR CRO中数据的结构

初始化DAQ列表指针以便随后写入DAQ列表。

详见‘数据采集信息组织’。

以下是预期返回的信息(返回DTO的内容):

示例

主设备发送一个SET_DAQ_PTR CRO到从设备。命令计数器CTR目前是0x23,DAQ列表号是0x03,ODT号码是0x05,元素号码地址是0x02。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

下一个命令WRITE_DAQ是用来设置选定的ODT中的数据元素。

12.31 写DAQ列表入口

命令标签 WRITE_DAQ CRO中数据的结构

写一个到DAQ列表的入口(单独DAQ元素的描述)是由DAQ列表指针(见SET_DAQ_PTR)定义的。接下来的DAQ元素大小被定义为:1 字节,2字节(单字型),4字节(长整型/浮动型)。

一个ECU可能不支持每一个元素单独地址扩展,以及2或4字节元素大小。主设备负责监视ECU的限度。限度可以再从设备描述文件中被定义。(例如.ASAP2)。

从设备必须负一个DAQ元素的所有字节数符合传输的规定。 以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个WRITE_DAQCRO到从设备。命令计数器目前是0x23,DAQ元素大小是0x02字节,扩展地址是0x01,32位地址是0x02004200。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

12.13 启动/停止数据传输

命令标签 START_STOP CRO中的数据结构

这个命令是用来启动或停止数据采集, 或为一个指定的DAQ列表同步启动作准备。Last ODT number 明确指定了这个DAQ列表中的哪个ODTs(从0到最后一个ODT号)需要传输。Event Channel No.明确指定了可以很有效控制数据传输定时的信号源种类。为了可以降低期望的传输速率,可能会向事件通道发送prescaler请求。预标定器的值要素必须是大于或等于一的。

Mode参数被定义如下:0x00停止指定的DAQ列表,0x01启动指定的列表,0x02准备DAQ列表用于同步启动。

启动/停止模式参数=0x02(准备启动数据传输)用提供的参数配置DAQ列表但并不启动指定列表的数据采集。这参数用于所有配置的DAQ列表的同步启动。为了防止从设备无法完成数据采集的同步启动,从设备会在这一参数是TRUE(不是0)时启动数据采集。

ECU指定的事件通道和DAQ列表属性会在从设备说明(ASAP2)中有描述。 以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个START_STOP CRO到从设备。命令计数器CTR目前是0x23,启动/停止字节是0x01(开始),DAQ列表号是0x03,要传送的封包号是0x07。ECU外壳通过预标定器为1(Motorola格式)使用事件通道0x02。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

12.15 断开连接

命令标签 DISCONNECT CRO中的数据结构

断开从设备连接。断开可以是临时的,将从设备设置为‘离线’状态或者用参数0x01中断标定事件。

停止活动时所有状态信息失效,并将从设备重置为保护状态。

一个临时的断开连接并没有停止DAQ信息的传输。MTA的值、DAQ的建立、活动状态和保护状态并不受临时断开连接的影响而且保持不变。

如果ECU支持恢复特征,而且恢复部分由SET_SESSION_STATUS命令设置,那么DAQ相关的功能将会在临时断开连接时运行。DAQ的保护状态保持解锁。

Station address 被指定为一个数字按从小到大字节顺序(Intel格式,低字节优先)。 以下是预期的返回信息(返回的DTO的内容):

示例

主设备发送一个DISCONNECT CRO到从设备。命令计数器CTR目前是0x23,参数字节是0x00(临时),从设备地址是0x0208。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

12.16 设置会话状态

命令标签 SET_S_STATUS CRO的数据结构

保持从节点时刻了解目前的标定会话状态(见章节‘错误处理’)。 会话状态:

位集设置为(1)如果表现的是TRUE。

会话状态为是用于对从设备读/写的,并且在通电、会话脱机和在适当的故障条件下被清除。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个SET_S_STATUS到从设备。命令计数器CTR目前是0x23,会话状态位是10000001(RUN,CAL)。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

12.17 获得会话状态

命令标签 GET_S_STATUS CRO中数据的结构

以下是预期返回的信息(返回的DTO的内容):

注意:额外的状态信息的使用是制造商和/或具体的项目,它不是本规范协议的一部分。例如,额外的状态信息可以包含一个增量校验结果,它可以不断跟踪目前的会话活动。

如果返回信息不包含额外的状态信息,额外状态信息修饰符必须是FALSE(0)。如果额外状态信息不是FALSE,它可能被用来定义额外状态信息的类型。 示例

主设备发送一个GET_S_STATUS CRO到从设备。命令计数器CTR目前是0x23。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR和会话状态位:

会话状态位是0 设置(CAL)位是7时设置(RUN)。

12.18 建立校验

命令标签 BUILD_CHKSUM CRO中数据的结构

返回一个由MTA0(内存传输区域起始地址)和模块大小定义的内存模块的校验结果。校验算法可以是制造商和/或具体项目的,它不是这个规范中的一部分。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个BUILD_CHKSUM CRO到从设备。命令计数器CTR目前是0x23,模块大小为32 千字节(0x08000)。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,和计算校验0x1234。

12.19 清除内存

命令标签 CLEAR_MEMORY CRO中数据的结构

命令可以被用来预先清除闪存以便重新编程。MTA0指针指向将要被删除的内存位置。 以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个CLEAR_MEMORY CRO到从设备。命令计数器目CTR前是0x23,模块大小是32千字节(0x08000)。

从设备返回一个包含确认返回(0x00),CRO的CTR:

12.20 编程

命令标签 PROGRAM CRO中数据的结构

CRO中包含的指定长度(大小)的数据模块,将会被编程入非逸失性存储器(闪存、电可擦只读存储器),在当前MTA0启动。MTA0指针将会按照‘size’的值递增。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个PROGRAM命令到从设备。命令计数器CTR目前是0x23,大小是3字节(0x03),将要编程的数据是0x10,0x11,0x12:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,存储传输扩展地址0x02,(递增的)目前的MTA0

执行此命令之前,MTA0是0x34002000并且递增3。

12.21 编程6 字节

命令标签 PROGRAM_6 CRO中的数据结构

包含在CRO中的长度(大小)为6字节的数据模块,将会被编程进非逸失性存储器(闪存、电可擦只读存储器),在当前MTA0启动。MTA0指针将会按照6递增。

以下是预期的返回信息(返回的DTO的内容):

示例

主设备发送一个PROGRAM命令道到从设备。命令计数器CTR目前是0x23,大小是6字节,将要编程的数据是0x10,0x11,0x12,0x13,0x14,0x15:

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,存储传输扩展地址0x02,(递增的)目前的MTA0

执行此命令之前,MTA0是0x34002000并且递增6。

12.22 移动存储模块

命令标签 MOVE CRO中的数据结构

指定长度(大小)的数据模块将会从MTA0(源指针)定义的地址复制到由MTA1(目的指针)定义的地址。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个MOVE CRO到从设备。命令计数器CTR目前是0x23,移动的字节数是32千字节(0x08000)。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR:

12.23 诊断服务

命令标签 DIAG_SERVICE CRO的数据结构

从设备运行了所要求的服务,并且自动设置内存传输地址MTA0到CCP主机随后将上传的需要的诊断服务返回信息。

需要以下握手(返回的DTO的内容):

示例

主设备发送一个DIAG_SERVICE CRO到从设备。命令计数器CTR是0x23,要求的诊断服务号码是0x08并且没范围。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,返回信息的长度是0x20,数据格式是0x00。

诊断服务信息现在可以从MTA0处上传。见UPLOAD。

12.24 行动服务

命令标签 ACTION_SERVICE CRO中的数据结构

从设备运行了所要求的服务,并且自动设置内存传输地址MTA0到CCP主机随后将上传的需要的行动服务返回信息(如果使用)。

需要以下握手(返回的DTO的内容):

示例

主设备发送一个ACTION_SERVICE到从设备。命令计数器CTR目前是0x23,需要的行动服务号码是0x08,范围是0x05。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,返回信息的长度是0x20,

数据格式是0x00。

行动服务信息现在可以从MTA0处上传。见UPLOAD。

12.25 可用性测试

命令标签 TEST CRO中数据的结构

这一命令用来测试从设备上指定站点地址对CCP通讯的可用性。此命令不建立逻辑连接,也不在指定从设备中引发任何活动。站点地址被指定为一组从小到大字节顺序排列的号。(Intel格式,低字节优先)。

以下是预期返回的信息(返回的DTO的内容):

12.26 启动/停止同步数据传输

命令标签 START_STOP_ALL CRO中数据的结构

这个命令用于以同步方式启动,先前发送的START_STOP命令(启动/停止运作=2)当做‘准备启动’配置的所有DAQ列表的定期传输。该命令用来同步停止所有DAQ列表包括没有启动的定期的传输。

以下是预期返回的信息(返回的DTO的内容):

12.27 获取当前活动的标定页面

命令标签 GET_ACTIVE_CAL_PAGE CRO中数据的结构

命令返回目前在从设备中活动的标定页面的启动地址。 以下是预期返回的信息(返回的DTO的内容):

12.28 获取CCP的实施版本

命令标签 GET_CCP_VERSION CRO中数据的结构

命令做一个主设备和从设备列出的协议版本的相互鉴定,已得到一个相同版本的协议。这一命令预期在EXCHANGE_ID命令之前执行。

以下是预期返回的信息(返回的DTO的内容):

示例

主设备发送一个GET_CCP_VERSION命令到从设备。命令计数器CTR目前是0x27,目标主协议版本是2,主要版本2的第1个,例如:目标协议版本是CCP2.1。

从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,再次在从设备中生效的CCP版本是CCP2.1 。

13 错误处理

标定会话状态图表和错误处理程序

状态图表显示了传输状态和可能错误的种类。下表显示了这些错误条件之后采取的行动。

‘冷启动’包含:

-CONNECT来建立主从设备间的逻辑连接。 -seed&key登陆程序

-除了过载的自动会话配置(使用EXCHANGE_ID) -由主设备支持的自动代码升级。

在‘标定数据初始化’的状态下,‘DAQ列表初始化’或‘会话运作’,CCP主设备可以要求重复嵌入seed&key程序。

错误种类C1 处理方法是重试,并没有导致状态的改变。

14 示例序列

对于一些常用实施服务,程序使用CCP都解释过。这只被视为对CCP的用法的一个示

例。会话状态字节的设置在下表被描述:

(01xx xx1x)是指:x→位保持不变;0/1→位强制改为0/1 如果发生了不能解决的错误(种类3),宏观服务序列将被停止。

14.1 登陆会话

14.2 模块下载

14.3 模块上传

14.4 标定数据初始化

14.5 DAQ列表初始化

14.6 代码上传

这个程序也可以被嵌入到用于编程闪存的服务中。

15 预期的性能评级

这一协议的性能评级很大程度依赖于响应延迟时间,总线波特率,总线负载情况和协议对象的总线优先级。

由于一次只能传送内存的一小部分,涉及到的网络节点的延迟时间是突发传输最严格的因素。

对于波特率达500kbit/s以及用于总线和ECU的节点的典型负载条件,已获得以下评级:

16 附录

在此附录中,给出了CCP使用和执行的其他信息。

16.1 错误代码列表

16.2 多点应用中的广播技术

在一些多点应用中,它可能是有用的同时从多个器件执行命令。虽然CCP从设备命令协议被设计用来点对点依次只连接一个从设备,仍然有许多方法将协议命令播送到不止一台从设备站点。

1)广播站点地址

如果相关联的各个从站点都可识别一个共同的广播地址(除了它们专门的从地址),CCP主设备可以与这些从设备进行多连接。

2)对多站点不断开的嵌套连接命令

在每种情况下,每个从设备必须对每一个命令传送命令返回信息,而且CCP主机必须分开验证返回的信息。

有关同步和速度,广播可以提供相当大的优势。然而,广播连接中的错误处理当然就变得复杂和困难。

16.2 多点应用中的广播技术

在一些多点应用中,它可能是有用的同时从多个器件执行命令。虽然CCP从设备命令协议被设计用来点对点依次只连接一个从设备,仍然有许多方法将协议命令播送到不止一台从设备站点。

1)广播站点地址

如果相关联的各个从站点都可识别一个共同的广播地址(除了它们专门的从地址),CCP主设备可以与这些从设备进行多连接。

2)对多站点不断开的嵌套连接命令

在每种情况下,每个从设备必须对每一个命令传送命令返回信息,而且CCP主机必须分开验证返回的信息。

有关同步和速度,广播可以提供相当大的优势。然而,广播连接中的错误处理当然就变得复杂和困难。

本文来源:https://www.bwwdw.com/article/3ent.html

Top