03 Xcp CTO 命令介绍

CTO被用来将命令从Master发送到Slave,以及将Slave的响应发送到Master。

XCP 命令结构

Slave 收到来自 Master 的命令,必须对其做出正面或负面的响应。

命令 (CMD):

每条命令都有一个唯一的编号,此外,还可以随命令发送其他具体参数,这里定义的最大参数个数为MAX_CTO-1,MAX_CTO表示CTO包的最大长度,单位为字节。

肯定响应:

 

否定响应:

 

具体参数也可以作为补充信息传递给消极的回应,而不仅仅是积极的回应。举个例子,在Master和Slave之间建立连接。在Master和Slave开始通信时,Master向Slave发送一个连接请求,而从Slave必须积极响应,从而产生一个连续的点对点连接。

Master –>Slave: 连接

Slave –> Master: 肯定响应

连接命令:

 

模式 00 表示 Master 希望与 Slave 进行正常XCP 通信。如果 Master 在建立连接时使用 0xFF 0x01,则 Master 正在请求与 Slave 进行 XCP 通信。同时,它通知 Slave 它应该切换到特定的 - 用户定义- 模式。

Slave肯定响应:

 

Slave的肯定响应可以采取更广泛的形式。当与Slave建立连接时,它已经向Master发送了特定于通信的信息。例如,RESOURCE是Slave提供的关于是否支持页面切换或是否可以在XCP上闪烁的信息。使用MAX_DTO,从端通知主端它支持的传输测量值的最大数据包长度,等等。您将在ASAM XCP第2部分协议层规范中找到有关参数的详细信息。

XCP允许在主从之间交换命令和反应的三种不同模式:Standard模式、Block模式和Interleaed模式。

 

在标准的通信模型中,每个对Slave的请求后面都有一个响应。除了XCP ON CAN,它不允许多个slave对Master的命令做出反应。因此,每个XCP消息总是可以追溯到一个唯一的Slave。这种通信模式就是Standard模式。

Block传输模式是可选的,节省了大量数据传输(例如上传或下载操作)的时间。尽管如此,在Slave方,在这种模式下必须考虑性能问题。因此,需要维护两个命令之间的最小间隔时间(MIN_ST),并将命令总数限制在MAX_BS的上限值。另外,Master可以使用GET_COMM_MODE_INFO从Slave读取这些通信设置。前面提到的限制在Master方Block传输模式中不需要观察,因为PC机的性能几乎总是足以接受来自微控制器的数据。

由于性能原因,还提供了交错模式。但是这种方法也是可选的,与块传输模式相反,它在实践中没有相关性。

CMD

 

Master通过CMD向Slave发送一个通用请求。PID (Packet Identifier)字段包含命令的标识号。附加的特定参数在数据字段中传输。然后Master等待Slave肯定或者否定响应。

XCP的实现也具有很强的可伸缩性,因此不需要实现每个命令。在A2L文件中,把可用的cmd列在所谓的XCP IF_DATA中。如果在A2L文件中的定义和在Slave中的实现之间有差异,Master可以根据Slave的响应确定,Slave甚至不支持该命令。如果Master发送了一个没有在Slave上实现的命令,那么Slave必须响应ERR_CMD_UNKNOWN并且没有在Slave上发起任何活动。这会让Master快速知道一个可选命令还没有在Slave上实现。

命令中还包括其他一些参数。请从文档ASAM XCP第2部分的协议层规范中获取精确的细节。

命令按组划分: Standard, Calibration, Page, Programming 和 DAQ测量命令。如果不需要某个组,则不需要实现该组的命令。如果组是必要的,那么某些命令必须始终在Slave中可用,而组中的其他命令是可选的。

下面以概述为例。Page组中的SET_CAL_PAGE和GET_CAL_PAGE命令被标识为非可选。这意味着在一个支持页面切换的XCP Slave中,至少必须实现这两个命令。如果在Slave中不需要切换页面,则不需要执行这些命令。

Standard 命令:

 

Calibration命令:

 

Page命令:

 

周期数据交换—基础:

 

 

周期数据交换—静态配置

 

 

周期数据交换—动态配置

 

Flash programming

 

RES

如果Slave能够成功地满足Master的请求,Slave 会使用RES表示肯定响应。

 

在ASAM XCP第2部分协议层规范中找到有关参数的更详细信息

EV

如果Slave想要通知Master一个异步事件,可以发送一个EV来做这件事。它的实现是可选的。

 

在ASAM XCP第2部分协议层规范中找到有关参数的更详细信息

我们将更多地讨论与测量和激励有关的事件。这与XCP Slave发起发送事件的动作没有任何关系。相反,它涉及Slave报告诸如特定功能故障之类的干扰。

SERV

Slave可以使用这种机制请求Master执行一个服务。

 

在ASAM XCP第2部分协议层规范中找到有关参数的更详细信息

  • 18
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小菜鸟工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值