当前位置: 首页 > news >正文

XCP协议

文章目录

  • 一、XCP的主从架构
  • 二、XCP 的协议组成
  • 三、XCP Packet Format
    • 1. CTO的标识字段
    • 2. DTO的标识字段
    • 3. absolute ODT number的标识字段
    • 4. Identification Field Type “relative ODT number and absolute DAQ list number”
    • 5. Timestamp Field
    • 6. Data Field
  • 四、CTO(Command Transfer Object)Packets
    • 1. Command Packet (CMD)
      • 1.1 Standard commands (STD)
      • 1.2 Calibration commands (CAL)
      • 1.3 Page switching commands (PAG)
      • 1.4 Data Acquisition and Stimulation commands (DAQ)
      • 1.5 Non-volatile memory programming commands (PGM)
    • 2. Command Response packet (RES)
    • 3. Error packet (ERR)
    • 4. Event packet (EV)
    • 5. Service Request packet (SERV)
  • 五、DTO(Data Transfer Object)Packets
    • 1. Data Acquisition Packet (DAQ)
    • 2. Synchronous Data Stimulation Packet (STIM)
  • 参考

一、XCP的主从架构

XCP(Universal Measurement and Calibration Protocol,通用测量与校准协议)采用主从架构,这种架构明确了参与通信的设备角色和功能,使得系统的通信和管理更加有序。

  • 主设备通常是测量与校准工具,例如 PC 上运行的校准软件。它在整个通信过程中起到发起者和控制者的作用。
  • 从设备一般是被测量和校准的对象,常见的如汽车电子控制单元(ECU)、工业自动化中的控制器等。它主要负责响应主设备的命令。

主设备发送命令连接并开始,从设备在接收到后,再向主设备发送应答,可以采用一主多从的通信形式。

二、XCP 的协议组成

所有XCP通信都以XCP包的数据对象方式进行传输。
有两种基本的数据包类型:

  • 传输通用控制命令的数据包:CTO(Command Transfer Object)
  • 传输同步数据的数据包:DTO(Data Transfer Object)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、XCP Packet Format

在这里插入图片描述
XCP报文由标识字段(Identification Field)、时间戳字段(Timestamp Field)和数据字段(Data Field)组成。

当交换XCP包时,主从双方都必须能够明确地识别任何传输的XCP包,包括其类型和数据字段的内容。
为此目的,XCP包基本上总是以标识字段开始,标识字段作为第一个字节包含包标识符(PID)。

1. CTO的标识字段

对于CTO报文,标识字段应该能够根据报文的类型识别报文,区分协议命令(CMD)、命令响应(RES)、错误报文(ERR)、事件报文(EV)和服务请求报文(SERV)。
对于CTO数据包,标识字段仅由PID组成,其中包含CTO数据包代码。
在这里插入图片描述

2. DTO的标识字段

对于DTO包,标识字段应该能够明确地标识DAQ列表和该DAQ列表中的ODT,它们描述了数据字段的内容。
对于每个DAQ列表,通过ODT_NUMBER的ODT编号从0重新开始:
在这里插入图片描述
因此,ODT_NUMBER的作用域对于DAQ列表是本地的,并且ODT号码在同一个从设备中不是唯一的。

3. absolute ODT number的标识字段

将相对而非唯一的ODT号映射到明确可识别的DTO包的一种方式是,通过“此DAQ列表的FIRST_PID”将相对ODT号映射到绝对ODT号,然后在DTO包内传输绝对ODT号。

absolute_ODT_NUMBER(ODT i in DAQ list j) = FIRST_PID(DAQ list j) + relative_ODT_NUMBER(ODT i)

FIRST_PID是该DAQ列表传输的第一个ODT的DTO包中的PID。
FIRST_PID由从设备决定,并在START_STOP_DAQ_LIST(DAQ列表j)上发送给主设备。

在分配FIRST_PID时,从服务器必须确保每个ODT都有一个唯一的绝对ODT号。
所有的PID也必须在PID(DAQ)和PID(STIM)的可用范围内。

对于标识字段类型为“绝对ODT号”的DTO报文,标识字段仅由PID组成,其中包含绝对ODT号。
在这里插入图片描述

4. Identification Field Type “relative ODT number and absolute DAQ list number”

将相对而非唯一的ODT号映射到明确可识别的DTO包的另一种方式是,将绝对DAQ列表号与DTO包中的相对ODT号一起传输。
对于标识字段类型为“相对ODT号和绝对DAQ列表号”的DTO报文,标识字段由PID(包含相对ODT号)、DAQ位(包含绝对DAQ列表号)和一个可选的FILL字节组成。

将DAQ列表号传输为BYTE,这减少了理论上可能的数据包数量,因为DAQ_LIST_NUMBER参数被编码为WORD。
在这里插入图片描述
如果必须满足XCP包的某些对齐条件,则有可能传输额外的FILL字节。
在这里插入图片描述
在GET_DAQ_PROCESSOR_INFO处的DAQ_KEY_BYTE,从机通知主机在将DAQ数据包传输到主机时将使用的标识字段的类型。主服务器在向从服务器传输STIM包时必须使用相同类型的标识字段。

5. Timestamp Field

XCP包可以选择性地包含时间戳字段。

对于CTO报文,时间戳字段不可用。
直接在标识字段之后的DTO数据包可能有一个包含时间戳(TS)的时间戳字段。

GET_DAQ_PROCESSOR_INFO的TIMESTAMP_SUPPORTED标志表示从机是否支持时间戳数据采集和激励。

使用SET_DAQ_LIST_MODE的TIMESTAMP标志,主机可以将DAQ列表设置为时间戳模式。

GET_DAQ_RESOLUTION_INFO TIMESTAMP_MODE中的TIMESTAMP_FIXED标志表示Slave总是以时间戳模式发送DTO报文。主服务器不能使用SET_DAQ_LIST_MODE关闭时间戳。

TIMESTAMP标志也可以用于DIRECTION = DAQ和DIRECTION = STIM。
对于DIRECTION = DAQ,时间戳模式意味着从设备在一个DAQ周期的第一个ODT的DTO包中传输其时钟的当前值。
在这里插入图片描述
对于DIRECTION = STIM,时间戳模式意味着主设备首先从从设备接收带有时间戳的DTO(DAQ),然后在DTO包中为DAQ周期的第一个ODT回显从设备时钟的当前值。
通过这种方式,“时间戳”可以用作计数器,使从机有可能检查DTO(DAQ)和CTO(STIM)在功能上是否属于一起。

时间戳字段总是由TS组成,包含同步数据传输时钟的当前值。
同步数据传输时钟是从机中一个自由运行的计数器,它永远不会被重置或修改。
根据时间戳字段类型的不同,TS以BYTE、WORD或DWORD的形式传输。
在这里插入图片描述
在 GET_DAQ_RESOLUTION_INFO 服务中,通过 TIMESTAMP_MODE(时间戳模式)和 TIMESTAMP_TICKS(时间戳刻度),从设备会告知主设备在向主设备传输数据采集(DAQ)数据包时所使用的时间戳字段类型。主设备在向从设备传输刺激(STIM)数据包时,必须使用相同类型的时间戳字段。TIMESTAMP_MODE 和 TIMESTAMP_TICKS 包含了数据传输时钟分辨率的相关信息。

6. Data Field

在这里插入图片描述
XCP包最终包含一个数据字段。
对于CTO报文,Data Field包含了不同类型CTO报文的具体参数。
对于DTO包,数据字段包含同步采集和刺激的数据。

四、CTO(Command Transfer Object)Packets

CTO用于传输通用控制命令。
在这里插入图片描述
标识字段仅由 PID(Packet Identifier,数据包标识符)组成,其中包含 CTO(Command Transmission Object,命令传输对象)数据包代码。
时间戳字段不可用。
数据字段包含不同类型 CTO 数据包的特定参数。

1. Command Packet (CMD)

在这里插入图片描述

CMD(Protocol Command),PID范围为 0xC0 ≤ CMD ≤ 0xFF,主机向从机发送的命令请求,从机据此识别命令。
在这里插入图片描述

1.1 Standard commands (STD)

在这里插入图片描述

1.2 Calibration commands (CAL)

在这里插入图片描述

1.3 Page switching commands (PAG)

在这里插入图片描述

1.4 Data Acquisition and Stimulation commands (DAQ)

在这里插入图片描述

1.5 Non-volatile memory programming commands (PGM)

在这里插入图片描述

2. Command Response packet (RES)

在这里插入图片描述

RES(Transferring Command Responses),PID值为0FF,从机在接收到主机的CMD后,当命令被执行成功时,从机向主机发送肯定响应数据包。

3. Error packet (ERR)

在这里插入图片描述
ERR(Error Packets),PID值为0XFE,当命令执行发生错误时,从机反馈错误数据包。

4. Event packet (EV)

在这里插入图片描述
EV(Event),PID值为0xFD,当从机向主机报告一个异步的事件时,发送次数据包。

在这里插入图片描述

5. Service Request packet (SERV)

在这里插入图片描述
SERV(Service Request Packets),PID值为0xFC,当从机需要主机做出某些动作时,从机向主机发送此数据包。
在这里插入图片描述

五、DTO(Data Transfer Object)Packets

DTO数据包传输同步数据包DAQ(Data Acquisition)和同步激励数据STIM(Data Stimulation packet)。
在这里插入图片描述

  • FILL用于描述报文对齐信息
  • DAQ表示DAQ列表的标识符
  • TIMSTAMP为可选项
  • Data存放数据

1. Data Acquisition Packet (DAQ)

在这里插入图片描述
PID(数据包标识符)包含范围在 0x00 <= DAQ <= 0xFB 之间的(绝对或相对)ODT(Object Descriptor Table,对象描述表)编号。
ODT 编号指向一个对象描述表,该表描述了剩余数据字节中包含哪些数据采集元素。

在DAQ模式下,从机周期性上传数据。

2. Synchronous Data Stimulation Packet (STIM)

在这里插入图片描述
PID(数据包标识符)包含范围在 0x00 <= STIM <= 0xBF 之间的(绝对或相对)ODT(对象描述表)编号,此处该编号用于刺激数据相关,记为 STIM。
该 ODT 编号指向一个对应的对象描述表(ODT),此表描述了剩余数据字节中包含哪些数据刺激元素。

在STIM模式下,主机周期性的向从机下载数据。

参考

  • 5分钟看懂XCP协议
  • 小猫爪:嵌入式小知识15-XCP基础简介

相关文章:

  • 【刷题】leetcode
  • var、let、const区别
  • 项目中分库分表的分布式ID如何生成
  • 数据结构与算法-搜索-bfs(floodfill and 最短路):池塘计数,城堡问题,山峰和山谷,迷宫问题,武士分度的牛,抓住那头牛
  • 深入理解 QObject的作用
  • 【JavaEE进阶】#{}和${}
  • 【Pandas】pandas Series reindex_like
  • Casbin 权限管理介绍及在 Go 语言中的使用入门
  • 【AI工具之Deepseek+Kimi一键免费生成PPT】
  • Redis Windows 设置密码
  • 关于人工智能的学习方向应该怎么选择
  • 3.3.1 交易体系构建——参与上涨趋势
  • 解决DeepSeek服务器繁忙问题的实用指南
  • 猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势
  • 【Flink快速入门-7.Flink 状态管理】
  • c++作业
  • 数据结构-----双向链表
  • Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
  • 普通人如何主动适应AI浪潮
  • Dify +deepseek-free-api 实现API对话
  • 奥园集团将召开债券持有人会议,拟调整“H20奥园2”本息兑付方案
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 司法部:民营经济促进法明确禁止违规异地执法、利用行政或者刑事手段违法干预经济纠纷
  • 全球第七个迪士尼主题公园将落户阿布扎比
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 公积金利率降至历史低位,百万房贷30年省5万