这两周在验证移植到ECU的XCP模块是否正常运转,所以干脆开个专题,说说这个汽车业内常用的标定协议。

背景概述

众所周知,一辆汽车内部会有许许多多的ECU(Electronic Control Unit),通过CAN, LIN, Gateway 等互相连接通讯,分别或者一起协作控制不同的部件。因而标定工程师需要对不同ECU的参数进行测量获取和标定。尤其是在当下,汽车功能日益复杂,已经很少OEM选择完全独立完成车内的所有ECU软件设计开发,而是选择与多个Tier1进行协同开发。所以统一的量测和标定协议显得尤为重要。

上世纪九十年代,由Audi、BMW、Mercedes-Benz、Volkswagen等欧洲汽车企业成立了一个协会-ASAM(Association for Standardisation of Automation and Measuring Systems, 自动化及测量系统标准协会), 它是汽车工业中的标准协会,致力于数据模型,接口及语言规范等领域。最初,该协会发布的是CCP(CAN Calibration Protocol)协议,它是一种基于CAN总线的ECU标定协议,采用CCP协议可以快速而有效地实现对汽车电控单元的标定。即便是现在也仍然有许多欧美汽车厂商还在使用。

XCP协议

CCP协议限定了它的使用范围为CAN总线,然而汽车内部除了CAN通讯以外,还有LIN,USB,FlexRay等,所以后来ASAM组织又发布了XCP(Universal Measurement and Calibration Protocol)协议,用X打头表示该协议可以应用于不同的输出层:

需要注意的是,XCP虽然名为CCP协议的升级版本,然而XCP协议并不向下兼容CCP协议,有兴趣的可以详细去看看它们的命令码,用的区域已经完全不相干。

相比CCP, XCP还有以下几个不同之处:

原理解析

无论是CCP还是XCP,它们的量测,标定的原理都是类似的。

1. 采用一主多从的模式,单个主机可以同时与多个从机通讯;

2. 主机通过下发命令与从机建立连接,解锁,读取数据,修改参数等操作。

那么主机是怎么读取或者修改从机的数据的?我们知道,ECU程序使用的参数或者数据,要么在RAM中,要么在Flash中,要么在EEPROM中会有特定的地址,那我们可以通过一个文件(A2L格式文件),描述出某个参数的属性:包括参数显示名,长度,物理单位,转换关系以及映射到ECU的地址。那么主机通过该文件,就可以获取所有上述信息。以读取为例,例如想要读取起始地址A,长度为2byte的数据,那么主机通过设定MTA(Memory Transfer Address)为A,并指定长度为2,然后将命令下发给从机,从机收到命令后,从指定的MTA中读取2byte数据,然后回传给主机。同样的,主机改数据也是类似的。

以上的交互方式是CCP/XCP最基本的通讯方式,采用的是一问一答。为了提高通讯的效率和数据吞吐量,CCP/XCP还支持DAQ(Data AcQuisition)模式。基本原理为:主机一次性配置好所有要读取的变量,并关联ECU端的不同事件channel,一旦ECU对应的事件发生(例如每隔100ms),主动上传数据给主机。

如何快速将CCP/XCP协议移植到自己的ECU

CCP/XCP协议原理总体来说简单易懂,但是真正按照协议开发软件模组是相当庞大的工作。我采用的方法是直接前往Vector官网下载Vector提供的XCP Basic软件包,免费开源的。相比完整的协议,Vector提供的basic包在功能上有所阉割,不过即便对于主机厂也够用了。如果想要实现全部功能,可以购买Vector的professional包(我是不是该向Vector收广告费呐),或者基于basice包二次开发。

下载后解压的文件目录是这样的。里面有原版的CCP/XCP协议pdf,basic包源码和使用手册,应用实例。你要做的就是结合使用手册和实例,对照着移植到你的ECU。PS:移植过程需要格外注意DAQ模式相关的配置部分代码和发送Callback 函数,小编被其中的两个坑耗费了不少debug精力。有实际移植该软件包的童鞋,如果遇到问题可以留言交流。

另外建议购买Vector或者Vehicle SPY的相关软件和设备,进行A2L文件的编辑生成和实际测试使用。

转载是一种动力 分享是一种美德,欢迎关注本公众号,可以扫码或者微信搜索公众号:芯连心嵌入式设计交流 。

CCP/XCP标定协议解析相关推荐

  1. 【XCP学习】CCP/XCP标定协议解析

    背景概述 众所周知,一辆汽车内部会有许许多多的ECU(Electronic Control Unit),通过CAN, LIN, Gateway 等互相连接通讯,分别或者一起协作控制不同的部件.因而标定 ...

  2. 标定协议之XCP标定协议介绍

    作者 | WenDao_Engineer 微信公众号 | 闻道工程师之家 在<标定协议基础知识介绍>一文中我们介绍了常用的标定协议有CCP和XCP两种,在前面CCP标定协议系列文章对CCP ...

  3. CAN通信最常用的标定协议--CCP与XCP

    CCP与XCP CCP协议(CAN Calibration Protocol) CAN标定协议,基于CAN总线的标定协议 XCP协议(Universal Measurement and Calibra ...

  4. 标定协议之CCP协议基础知识介绍

    上一篇<标定协议基础知识介绍>中对标定协议进行了初步的介绍,从这一篇文章开始对CCP标定协议进行相关介绍,本篇将对CCP标定协议相关指令进行介绍. CCP通讯报文定义 CCP标定协议标准中 ...

  5. 标定协议之CCP协议实现流程介绍

    之前两篇文章对CCP标定协议作了初步的介绍,大家也应该有了一定的了解,本文将对CCP标定协议的实现进行介绍,让大家能够进一步理解CCP标定协议.目前CCP协议最新版本是V2.1,在Vector的官网上 ...

  6. 标定协议基础知识介绍

    在上一篇<如何实现标定>中介绍了标定工具通过标定协议与控制器进行通讯从而实现标定.在二十世纪九十年代由Audi.BMW.Mercedes-Benz.Volkswagen等相关企业成立了AS ...

  7. CCP/XCP和T-BOX知识点

    1.CCP/XCP协议 2.Example C SocketCAN Code 3.https://github.com/craigpeacock/CAN-Examples 4.linux socket ...

  8. UDS应用层协议解析(史上最全)

    UDS应用层协议解析 UDS应用层协议解读(下) 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时,非默认会话模式下设置的状态需要reset(28服务.85服务设置的 ...

  9. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

最新文章

  1. npm run build打包失败
  2. Java知识全面总结:并发编程+JVM+设计模式+常用框架+....
  3. Luke 5—— 可视化 Lucene 索引查看工具,可以查看ES的索引
  4. Halcon 摄像机标定流程
  5. 编写和布置一个List Event Receivers(下)
  6. java string 转 inputstream_String和inputstream互转【转文】
  7. 计算机驱动伺服的程序,伺服调试软件V-ASSISTANT始终找不到驱动-工业支持中心-西门子中国...
  8. MOSS自带链接样式影响页面全局样式的解决办法
  9. Agile PLM Create Item /BOM Dialog
  10. vivo X7(全网通)线刷救砖教程
  11. python教程视频全套下载-Python爬虫视频教程全集下载
  12. 成功解决 XXX--1.0-SNAPSHOT.jar中没有主清单属性
  13. 【造数】利用Python快速生成测试数据
  14. cuba-platform和jmix框架
  15. 《LoadRunner虚拟用户开发指南》写作心语
  16. 转:据说什么都能查到网址大全
  17. 优秀的Kafka架构设计
  18. 2023最新JDK下载、安装与配置教程(jdk17.0.5以及jdk11.0.17)
  19. 5.1 多元线性回归分析
  20. 《博客服务自律公约》现征求意见了!

热门文章

  1. R语言入门与数据分析(1)
  2. 注册商标的这些利与弊你知道吗?
  3. Altium FPC软硬结合板日志
  4. 企企通采购网“企销通2.0”重磅上线 助力中小企业打通数字化生态
  5. 电路-电源模块汇总(充电器)
  6. Android开发中保存数据的四种方法方法
  7. 国产28nm制程光刻机突破在即,助力国产芯片
  8. cont_c指令_SFB41_CONT_C输入和输出参数
  9. 哈理工OJ 1986 大悲咒(简单递推)
  10. vue3 + TypeScript + vant +pinia 实现网易云音乐播放器