【AUTOSAR】CCP协议的代码分析与解读(五)----CCP协议数据标定和DAO

      1. 选择标定数据页(SELECT_CAL_PAGE)

该命令的功能取决于ECU的内部实现。执行该命令后,先前设置的MTA0地址将会自动指向由该命令激活的标定页,SELECT_CAL_PAGE命令的CRO数据场结构,如下所示。

位  置

类  型

描  述

0

字节

命令代码=0x11(SELECT_CAL_PAGE)

1

字节

命令序号=CTR

2~7

字节

无效

针对SELECT_CAL_PAGE命令返回DTO的数据场结构,如下所示。

位  置

类  型

描  述

0

字节

Packet ID:0xFF

1

字节

命令返回代码=ERR

2

字节

命令序号=CTR

3~7

字节

无效

例如,主设备向从设备发送SET_MTA命令,再发送SELECT_CAL_PAGE命令,当前CTR为0x23,如下所示。

byte

0

1

2

3

4

5

6

7

0x11

0x23

--

--

--

--

--

--

从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23),如下所示。

byte

0

1

2

3

4

5

6

7

0xFF

0x00

0x23

0x10

0x11

0x12

0x13

--

执行该命令后,先前SET_MTA命令设置的MTA0地址自动指向当前被激活的标定页的首地址。

byte

0

1

2

3

4

5

6

7

0xFF

0x00

0x23

      1. 获取DAQ列表大小(GET_DAQ_SIZE)

该命令用来获取某个特定DAQ列表大小,即其中ODT列表的个数,并清空当前DAQ列表内的数据,为下次DAQ通信做准备。如果GET_DAQ_SIZE命令还对DAQ列表不存在或不可用,从设备返回的ODT列表个数为0。同时该命令还对DAQ列表进行初始化并中止该DAQ列表当前的通信。

当要同时对多个ECU进行DAQ操作时,可在GET_DAQ_SIZE命令中加入该DAQ列表对应的CAN ID标识符(该DAQ列表所在ECU的DTO_ID)。该项为可选功能,如果给出的ID号不可得,则返回一个错误代码。GET_DAQ_SIZE命令的CRO数据场结构如下所示。

位  置

类  型

描  述

0

字节

命令代码=0x14(GET_DAQ_SIZE)

1

字节

命令序号=CTR

2

字节

DAQ列表序号(#0,#1…)

3

字节

无效

4~7

字节

该DAQ列表,其所对应的DTO的CAN ID标识符

针对GET_DAQ_SIZE命令返回DTO的数据场结构如下所示。

位  置

类  型

描  述

0

字节

Packet ID:0xFF

1

字节

命令返回代码=ERR

2

字节

命令序号=CTR

3

字节

DAQ列表大小(ODT列表书)

4

字节

DAQ列表的第一个PID号

5~7

字节

无效

通过下式可计算出DAQ列表中某个ODT的PID号:

PID=First PID of DAQ list + ODT number(DAQ列表中的第一个PID号+ODT数目)

例如,主设备先向从设备发送GET_DAQ_SIZE命令,当前CTR为0x23,DAQ列表的序号为0x03,CAN ID号为0x01020304,如下所示。

byte

0

1

2

3

4

5

6

7

0x14

0x23

0x03

--

0x01

0x02

0x03

0x04

从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23)、DAQ列表的第一个PID号(0x08)以及列表的大小(总共有10个ODT,每个ODT为7个字节),如下所示。

byte

0

1

2

3

4

5

6

7

0xFF

0x00

0x23

0x10

0x08

--

--

--

      1. 设置DAQ列表指针(GET_DAQ_PTR)

在进行DAQ模式通信前,必须先对DAQ列表进行配置,将数据写入到相应DAQ列表的ODT元素中。SET_DAQ_PTR命令用来为写入DAQ列表数据设置入口地址指针。SET_DAQ_PTR命令的CRO数据场结构如下所示。

位  置

类  型

描  述

0

字节

命令代码=0x15(SET_DAQ_PTR)

1

字节

命令序号=CTR

2

字节

DAQ列表序号(#0,#1…)

3

字节

ODT序号(#0,#1…)

4

字节

该ODT中的第几个元素(0,1…)

5~7

字节

无效

针对SET_DAQ_PTR命令返回DTO的数据场结构如下所示。

位  置

类  型

描  述

0

字节

Packet ID:0xFF

1

字节

命令返回代码=ERR

2

字节

命令序号=CTR

3~7

字节

无效

例如,主设备先向从设备发送SET_DAQ_PTR命令,当前CTR为0x23,DAQ列表的序号为0x03,ODT序号为0x05,将指针设置到该ODT中的第2个元素,如下所示。

byte

0

1

2

3

4

5

6

7

0x15

0x23

0x03

0x05

0x02

--

--

--

从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23),如下所示。

byte

0

1

2

3

4

5

6

7

0xFF

0x00

0x23

--

--

--

--

--

      1. 写入DAQ列表(WRITE_DAQ)

在DAQ通信前,需要对DAQ列表进行配置,将所需要上传的数据事先写入DAQ列表的ODT列表中,该条命令的功能就是将数据写入DAQ列表,先前由SET_DAQ_PTR命令所定义的地址即为该命令的数据写入地址。在WRITE_DAQ命令中,一次写入的数据称为一个DAQ元素。写入的DAQ元素大小可为:1字节、2字节(1字)、4字节(长整型/浮点型)。由于一个ODT列表最多只能存储7字节的数据,因此对于长整型或浮点型,ECU必须保证上传时DAQ列表中数据的完整性与连贯性。WRITE_DAQ命令的CRO数据场结构如下所示。

位  置

类  型

描  述

0

字节

命令代码=0x16(WRITE_DAQ)

1

字节

命令序号=CTR

2

字节

DAQ元素大小(可为1,2,4字节)

3

字节

DAQ元素的地址偏移

4~7

字节

DAQ元素的地址

针对WRITE_DAQ命令返回DTO的数据场结构如下所示。

位  置

类  型

描  述

0

字节

Packet ID:0xFF

1

字节

命令返回代码=ERR

2

字节

命令序号=CTR

3~7

字节

无效

例如,主设备向从设备发送WRITE_DAQ命令,当前CTR为0x23写入DAQ元素的大小为2字节,写入元素的地址偏移为0x01,地址为0x02004200,如下所示。

byte

0

1

2

3

4

5

6

7

0x16

0x23

0x02

0x01

0x02

0x00

0x42

0x00

从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23),如下所示。

byte

0

1

2

3

4

5

6

7

0xFF

0x00

0x23

--

--

--

--

--

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值