基于MPC5644的XCP 标定系统的设计

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
数据传输服务 DTS,同步至SelectDB 1个月
简介: 基于MPC5644的XCP 标定系统的设计

01.XCP 标定系统设计方案

本系统以飞思卡尔 32 位 MPC5644 作为微处理器,该微处理器最高总线时钟频率可达到 150 MHz,内部 192 KB RAM ,4 MB 片内 Flash,满足多标定数据要求,其系统设计方案如图 1 所示,

6215499f605a003bfecebca08ca3cb4a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图1 系统设计方案

在此系统中标定工具支持Vector 公司的CANape软件,ETAS 公司的 INCA 软件以及普华 I-CAL 软件,PC 端标定软件与标定工具对应,通信驱动模块可以是 CAN 总线,FlexRay 总线,USB 等,本系统使用 CAN 总线。

本系统的工作原理是安装于 PC 端的标定软件通过 GUI 界面发送指令,标定工具将命令转换为通信数据,发送给微处理器MPC5644 通信驱动模块,XCP 标定协议栈根据命令要求进行相应操作, 其通信命令包括标准命令组,标定命令组,页切换命令组, DAQ 基本命令组,Flash 刷写组, XCP 标定协议栈响应命令返回给PC 标定软件,确认操作是否成功。

02.符合AUTOSAR 架构的XCP 协议实现

在AUTOSAR 软件架构中,通信模块通过 Interface接口模块与驱动模块进行连接,本系统使用 CAN 总线传输标定数据通过 Can Interface 模块嵌入 AUTOSAR 软件架构, 符合 AUTOSAR 软件架构要求可以提高代码重用性,更换处理器型号后,代码不需要重新编写,减少软件系统研发成本,缩短开发周期。

AUTOSAR 通信协议栈一般抽象为总线驱动模块,总线接口模块,网络管理模块,通信管理模块,传输层模块以及内部数据交互模块等。其中,总线驱动模块实现硬件通信驱动,总线接口模块提供协议层数据路由,协议层数据路由通过诊断协议与诊断模块通信实现诊断功能, 网络管理模块通过网络管理协议实现其功能,内部数据交互模块实现 ECU 之间数据交互,同时运行环境抽象层与通信管理模块连接,实现与应用层之间的通信。图 2 显示 XCP 协议在 AUTOSAR 软件架构中的位置,可以基于 CAN 总线, FlexRay 总线或以太网通过总线接口接入AUTOSAR软件架构。

db87140e29901dd775797be5f4df73aa_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图2 XCP协议在AUTOSAR软件架构位置

XCP 协议实现数据标定与测量,通过 AUTOSAR软件架构的总线接口实现数据发送与接收,嵌入式操作系统的任务调度实现不同通道 DAQ 周期上传,在图 2 中,AUTOSAR XCP 模块在总线接口模块上方,如 FlexRay 或 CAN 总线,并通过总线接口实现 XCP 协议独立标定数据的传输。

2.1 XCP 协议数据发送过程分析

XCP 协议通过 CAN 接口模块的 CanIf_Transmit函数发送数据,发送成功后,调用 CanIf_TxIndication回调函数确认数据发送成功。图 3 详细说明数据发送成功后的处理过程。

e8d2b2da084819bdd39de68c06d2b087_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图3 XCP协议数据发送过程

2.2 XCP 协议数据接收响应过程分析

XCP 协议通过 CAN 接口模块的 CanIf_RxIndication 函数接收测量数据,并对其进行处理,图 4 详细说明数据接收成功后处理机制, 具体实现了XCP独有Block 传输响应机制,包含DAQ 和STIM 处理流程以及事件错误与命令错误的处理机制, 由于CAN报文每帧最多 8Byte 数据,未满 8Byte 数据需用 0xFF填充,所以完成数据接收后,需先对报文长度进行检查,然后再判断接收命令是否正确,再进行相关处理,在Block 模式下,进行DOWNLOAD 和PROGRAM 命令处理,需先将命令数据包存入缓存池,判断当前标定或刷写命令的总字节长度是否大于6,如果否,则将状态置为接收,如果大于 6,则状态置为模块接收,并将缓存池ID 设置为DNLOAD_NEXT 或PROGRAM_ NEXT 命令,并结束接收过程,

9675bc315e62739750621e5195b6d224_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图4 XCP协议数据接收响应过程

03.XCP 协议分析

XCP 协议通过主从模式进行通信, 其中主机一般指 PC 端标定软件,从机一般指包含 XCP 协议的 ECU 模块, 主机通过标准命令组中的 CONNECT 命令进行与从机的连接,建立连接后,主机就可以发送标定命令组的DOWNLOAD 与 UPLOAD 命令进行数据的标定与测定,发送页切换组命令SET_CAL_PAGE,实现 RAM 与 Flash 不同区域切换,发送 DAQ/STIM命令组的 WRITE_DAQ 等命令实现标定数据的实时上传,同时也可以发送Flash 刷写命令组的PROGRAM命令实现数据储存。

XCP 协议接受到命令后,首先判断前期接收到的命令是否处理完成,是否处于空闲状态,再判断接收到的命令是否有效,如果是则进行相应的命令处理,以标准命令处理过程为例,进行说明,

3.1 标准命令分析

在 XCP 协议中,标准命令主要用于主机与从机建立连接,数据的上传与下载以及数据解锁等,其包含的部分命令见表 1, 表1 XCP 协议部分标准命令组

8642355ca46ad873c1be7f24874ff8dd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过 CONNECT 命令主机与从机建立连接, 如果上传与下载数据需要解锁,必须通过 GET_SEED命令获取密钥,并使用UNLOCK 命令进行解锁,解锁成功后,通过 SET_MTA 命令指定工作地址,之后才可以通过 DOWNLOAD 命令下载数据到该地址或通过UPLOAD 命令上传该地址对应的数据, 当完成数据的传输后,可以通过 DISCONNECT 命令断开主机与从机之间的连接, 表中的 DOWNLOAD_NEXT 命令用于 Block 功能传输中。

3.2 CCP通讯方式

采用主从方式,标定工具作为MASTER,发送命令报文(CRO),ECU作为SLAVE应答(DTO)。

polling(查询模式)

由主设备主动向从设备发送指令,从设备做出反馈应答,“一问一答”模式。效率相对较低,实现简单,占用ECU内存空间少;


DAQ(数据采集)

主设备发送一条请求指令后,从设备按照一定周期自动向主设备上报数据;效率高,实现复杂,数据量大,占用ECU内存空间大;


通讯过程中通过指令接收报文(CRO)和数据传输报文(DTO)实现数据及信息的传递。

指令接收报文(CRO),发送指令。

数据传输方向:master -> slave;报文中携带一个指令和在从设备中执行的指令参数;

1:CMD

2:CTR

3-8:Date and Parameter

CMD:命令代码。如连接命令0x01,

CTR: 命令计数器。保证命令和应答的一致性。

数据传输报文(DTO),DTO出了应答命令外,还包括从数据主动上传的DAQ数据包。

1:PID

2:ERR

3:CTR

4-8: Data and Parameter

PID:包标识 [0XFE-0xFF],0XFF表示命令应答,0XFE表示错误报文

ERR:应答码

CTR: 命令计数器,与命令中的计数器对应。

1:PID

2-8:DAQ VALUE

PID:包标识 [0X00-0xFD],在DAQ模式下,此标识对应于相应的ODT标识(一次设置最多254个ODT)。表示后面的上传数据是此ODT中元素索引表中对应的变量值。

DAQ VALUE:ODT中元素索引表中对应的变量值,最大7个字节。

数据传输方向:slave -> master;DTO分为如下几类消息:

1、错误返回消息CRM;2、事件消息;3、数据采集;

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
数据格式
一文读懂A2L文件和ASAP2 Studio的使用
一文读懂A2L文件和ASAP2 Studio的使用
一文读懂A2L文件和ASAP2 Studio的使用
|
传感器 调度 开发者
【Freertos基础入门】freertos任务的优先级
【Freertos基础入门】freertos任务的优先级
1740 0
|
监控 网络架构
CAN-TP传输协议详解
CAN-TP传输协议详解
CAN-TP传输协议详解
|
7月前
|
开发者 Windows
鸿蒙5开发宝藏案例分享---一多窗口适配开发实践
本文为鸿蒙开发者分享HarmonyOS多窗口适配技巧,涵盖窗口断点自适应、横竖屏旋转策略、PC端自由窗口适配及沉浸式状态栏透明显方案。通过官方案例代码,解决折叠屏、小屏设备布局问题,提供设备兼容清单与避坑指南。重点包括动态监听窗口变化、宽高比判断、最小尺寸限制及全屏切换等配置。最后建议使用ohpm安装示例模板,借助DevEco预览器模拟多设备效果,并参考开发者社区解决问题。
|
10月前
|
机器学习/深度学习
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
464 11
|
机器学习/深度学习 数据可视化 JavaScript
Plotly可视化介绍
Plotly可视化介绍
450 0
|
移动开发 C语言
C语言:&&和&、||和|有什么区别
在C语言中,&&和||是逻辑运算符,分别表示逻辑与(AND)和逻辑或(OR),它们用于连接两个布尔表达式,只有当两边都为真时&&返回真,||在至少一边为真时返回真;&和|是位运算符,对应地进行位级的与、或操作,它们对操作数的二进制位进行逐位处理。&&和||具有短路特性,而&和|没有。
13878 1
|
开发框架 前端开发 JavaScript
程序与技术分享:ASP.NET发展史(【译】)
程序与技术分享:ASP.NET发展史(【译】)
265 0
|
算法 Unix Linux
快速了解C++17 std:: filesystem的原理和使用
快速了解C++17 std:: filesystem的原理和使用
775 4
|
SQL 存储 数据库连接
在Python中使用sqlite3进行数据持久化操作
在Python中使用sqlite3进行数据持久化操作
371 0

热门文章

最新文章