- 数据下载(DNLOAD)
DNLOAD指令负责将CRO中的数据下载到ECU中,起始地址为先前设定的MTA0,下载完毕后MTA0指针自增,自增的字数为下载的字节数。DNLOAD命令的CRO数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
命令代码=0x03(DNLOAD) |
1 |
字节 |
命令序号=CTR |
2 |
字节 |
下载数据大小(字节数) |
3~7 |
字节 |
下载数据(最多为5个字节) |
针对DNLOAD命令返回DTO的数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
Packet ID:0xFF |
1 |
字节 |
命令返回代码=ERR |
2 |
字节 |
命令序号=CTR |
3 |
字节 |
MTA0偏移量(自增后) |
4~7 |
字节 |
MTA0地址(自增后) |
例如,主设备向从设备发送DNLOAD命令,当前CTR为0x23,需下载的数据块大小为5个字节,所需下载的数据为0x10,0x11,0x12,0x13,0x14,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0x03 |
0x23 |
0x05 |
0x10 |
0x11 |
0x12 |
0x13 |
0x14 |
从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23)、MTA的偏移(0x02)及自增后当前的MTA0地址,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0xFF |
0x00 |
0x23 |
0x02 |
0x34 |
0x00 |
0x20 |
0x05 |
由返回DTO可知,执行该命令前MTA0为0x34002000,执行命令后MTA0自动增加了5个字节。
2.字节数据下载(DNLOAD_6)
该命令功能与DNLOAD命令相同,区别在于DNLOAD命令一次下载数据可为1~5各字节不等,DNLOAD_6下载固定为6字节大小的数据,起始地址为MTA0,下载结束后MTA0指针会自增6个字节。DNLOAD_6的CRO数据场结构如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
命令代码=0x23(DNLOAD_6) |
1 |
字节 |
命令序号=CTR |
2~7 |
字节 |
下载的数据(最多为6个字节) |
针对DNLOAD_6命令返回DTO的数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
Packet ID:0xFF |
1 |
字节 |
命令返回代码=ERR |
2 |
字节 |
命令序号=CTR |
3 |
字节 |
MTA0偏移量(自增后) |
4~7 |
字节 |
MTA0地址(自增后) |
例如,主设备向从设备发送DNLOAD_6命令,当前CTR为0x23,需下载的数据块大小为6个字节,所需下载的数据为0x10,0x11,0x12,0x13,0x14,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0x03 |
0x23 |
0x10 |
0x11 |
0x12 |
0x13 |
0x14 |
0x15 |
从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23)、MTA的偏移(0x02)及自增后当前的MTA0地址,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0xFF |
0x00 |
0x25 |
0x02 |
0x34 |
0x00 |
0x20 |
0x06 |
由返回DTO可知,执行该命令前MTA0为0x34002000,执行命令后MTA0自动增加了6个字节。
3.数据上传(UPLOAD)
主设备通过UPLOAD命令,请求从设备以MTA0为起始地址,将命令中规定字节数的数据上传。随后MTA0指针自动增加相应的字节数(上传的字节数)。UPLOAD命令的CRO数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
命令代码=0x04(DNLOAD) |
1 |
字节 |
命令序号=CTR |
2 |
字节 |
请求上传的数据大小(字节数) |
3~7 |
字节 |
无效 |
针对UPLOAD命令返回DTO的数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
Packet ID:0xFF |
1 |
字节 |
命令返回代码=ERR |
2 |
字节 |
命令序号=CTR |
3~7 |
字节 |
所请求的数据 |
例如,主设备向从设备发送DPLOAD命令,当前CTR为0x23,请求以MTA0为起始地址,上传4个字节的数据,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0x04 |
0x23 |
0x04 |
-- |
-- |
-- |
-- |
-- |
从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23),如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0xFF |
0x00 |
0x23 |
0x10 |
0x11 |
0x12 |
0x13 |
-- |
备注:该命令返回的DTO不向主设备汇报自增后的MTA0地址。
4.数据短上传(SHORT_UP)
该命令的功能同UPLOAD命令,同样用于主设备要求从设备上传数据。区别在于UOLOAD命令中上传数据的起始地址是MTA0,SHORT_UP中的起始地址由命令本身指定,从设备按该起始地址上传数据,上传后MTA0指针保持不变。SHORT_UP命令的CRO数据场结构如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
命令代码=0x0F(SHORT_UP) |
1 |
字节 |
命令序号=CTR |
2 |
字节 |
请求上传的数据大小(字节数1~5) |
3 |
字节 |
地址偏移量 |
4~7 |
无符号长整型 |
地址 |
针对SHOPT_UP命令返回DTO的数据场结构,如下所示。
位 置 |
类 型 |
描 述 |
0 |
字节 |
Packet ID:0xFF |
1 |
字节 |
命令返回代码=ERR |
2 |
字节 |
命令序号=CTR |
3~7 |
字节 |
所请求的数据 |
例如,主设备向从设备发送SHORT_UP命令,当前CTR为0x23,所要上传数据长度为4个字节,起始地址为0x12345678,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0x0F |
0x23 |
0x04 |
0x00 |
0x12 |
0x34 |
0x56 |
0x78 |
从设备返回TDO,包括确认代码ERR(0x00)、CTR(0x23)及所请求的数据,如下所示。
byte |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
0xFF |
0x00 |
0x23 |
0x10 |
0x11 |
0x12 |
0x13 |
-- |