深入浅出:CAN通信之CCP协议

2023-11-04

CCP(CAN Calibration Protocol) CAN标定协议(用于标定系统与ECU之间的通信)

CCP协议在应用层,使用CAN的数据帧来传输命令
在这里插入图片描述

CRO数据帧(主设备向从设备发送)

CRO报文:CCP报文帧格式为CMD + CTR + DATA,即Command、Counter、Data,其中Command是一些列的命令标号,为人为规定,Counter计数用,Counter根据发送消息的先后顺序进行赋值,例如第一条发送的CRO其CTR为01,相对应的,从机对其进行应答的相应报文的CTR值也应该为01,第二条的CTR值为02,以此类推。CCP协议共规定了28条命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hPAXq7vf-1682574673463)(D:\ScreenShoot\2345_image_file_copy_20230415_1.jpg)]

  • CRO命令的第一个字节为CMD,命令代码,命令表一共有28条命令
  • CRO命令的第二个字节为CTR,命令计数器,由上位机计数
  • CRO命令的剩余六个字节为命令参数,每个命令有不同参数

在这里插入图片描述

DTO(从设备向主设备发送)

DTO报文:分为三种类型报文,分别是CRM-DTO(命令返回消息),EVENT-DTO(事件消息),DAQ-DTO

CRM类型:用于反馈CRO命令的报文

CRM-DTO发生在Polling模式下,是针对主设备发送的CRO消息的应答

第一个字节为PID,表示类型,CRM类型为0xff
第二个ERR字节,表示错误类别,命令返回码表一共有18条命令,0x00是无错误,CRM类型就对应0x00
第三个CTR字节,表示回答的哪条CRO命令,两者的CTR要对应起来
剩余的五个字节为参数
在这里插入图片描述

Event Message类型:用于反馈错误的报文

EVENT-DTO事件消息发生在ECU内部错误时由ECU主动发送,这类DTO不需要事先收到主设备的CRO,一旦ECU发生内部错误,会主动向主设备发生这一消息,报告内部情况。

第一个字节为PID,表示类型,EM类型为0xfe
第二个ERR字节,表示错误类别,命令返回码表一共有18条命令,0x00是无错误,EM类型对应命令返回码表除0x00的剩余17条命令
第三个CTR字节,表示回答的哪条CRO命令,两者的CTR要对应起来
剩余的五个字节为参数

在这里插入图片描述

CRM-DTO和EVENT-DTO共用上一种报文结构,第一个字节PID(data packet ID)用于判断报文属于那一类型,PID = 0xFF为CRM(正常命令的被动响应),PID = 0xFE(错误事件的主动响应)为EVENT,其它的都是DAQ,第二个字节ERR(error code),第三个字节为代码指令计数器CTR,其它字节为指令代码相关的返回参数和数据

DAQ类型:用于定期反馈数据

DAQ-DTO(数据采集)报文除了第一个字节为PID外,其余字节都是返回数据
在这里插入图片描述

在这里插入图片描述

基本概念

  • ECU

    Electronic Control Unit(电子控制单元):一种具有中央处理单元的电子装置,其外围电路可执行编程功能。

  • CRM

    Command Return Message(命令返回消息) : 从从设备发送到主设备的一种消息,包含命令/错误代码和命令计数器。

  • CRO

    Command Receive Object(命令接收对象) :从主设备发送到从设备的消息。

  • DTO

    Data Thansmission Object (数据传输对象):从设备发送到主设备的消息(命令返回消息或事件消息或数据采集消息)。

  • DAQ

    Data Acquisition:从从设备向主设备发送的用于从ECU快速数据采集的过程和消息的定义。

  • ODT

    Obiect Descriptor Table: 元素(变量)列表,用于组织数据采集。

DAQ列表

按照不同的上传周期,ECU内部需要多个DAQ列表。例如有三个信号,上传周期分别为10ms、20ms、30ms,那么就需要3个DAQ列表,而同一上传周期的数据/变量(OTD)都被归类在同一个DAQ列表内,这些ODT被称作ODT列表。

ODT列表

每一个ODT的最大元素数目为7,可以存放7个单字节数据变量的信息,其内容包括数据变量的存放地址,数据长度及其偏移地址。ODT列表需要通过DAQ-DTO方式才能向主设备发送,由于每一个ODT都有唯一的绝对编号,该编号即为DAQ-DTO的PID,排在最前面的ODT相对编号为0。绝对编号是对于所有ODT来说的,每一个ODT的绝对编号都不相同。相对编号是相对于当前DAQ列表而言,不同DAQ列表的ODT,其相对编号可能会相同。正是因为单帧有八字节数据,而ODT编号需要占用一字节,因此在DAQ-DTO中只剩下7字节来用于ODT的传输,而又因为CCP无法进行跨帧的数据/命令传输,所以一个ODT最大只能存储7字节数据。又因为PID的长度为8位,因此ODT的总数不能超过254个(0~0xFD)(通过修改PID长度可以增加ODT总数,但会减少单个ODT的长度)

命令编号 功能
0x01 CONNECT——建立连接
0x02 SET_MTA——设置内存传输地址
0x03 DNLOAD——数据下载
0x04 UPLOAD——数据上传
0x06 STOP_START——开始/停止/准备数据传输
0x07 DISCONNECT——断开连接
0x08 STSRT_STOP_ALL——开始/停止数据传输
0x0C SET_S_STATUS——设置Session状态
0x0D GET_S_STATUS——获取Session状态
0x0E BUILD_CHECKSUM——计算校验和
0x12 GET_SEED——获取被请求资源的种子
0x13 UNLOCK——解锁保护
0x14 GET_DAQ_SIZE——获取DAQ list大小
0x15 SET_DAQ_PTR——设置DAQ list指针
0x16 WRITE_DAQ —— 写DAQ list入口
0x1B GET_CPP_VERSION——获取CCP版本

流程介绍

在这里插入图片描述

在这里插入图片描述

可提供功能:

1.随机读取ECU中RAM和ROM中的数据

2.测量数据采样

3.标定数据的采样和传输

4.同时处理多个ECU系统

5.flash编程技术

在这里插入图片描述

ECU地址(Intel格式,低字节在前)

在这里插入图片描述

错误等级:

C0:警告

C1:伪错误

C2:可修复错误

C3:不可修复

在这里插入图片描述

0x31:命令句法错误,与传输命令信息有误相关

使用CCP协议的意义:

在我们对板卡下载烧录完程序后如果我们要更改参数,则需要再次编辑编译烧录会使工作变得更加繁琐,引入CCP协议后我们可以通过CCP中的相关操作指令对RAM、PORTS、ROM、FLASH读取,写RAM、PORTS、FLASH

DAQ下的定期传输需要用到ODT(Objetc Descriptor Table,元素变量列表)

在这里插入图片描述

DAQ通信设置

在使用DAQ通信前,主设备需要对DAQ列表及ODT列表进行配置

  1. 获取ECU内部DAQ列表数量和ODT数目,DAQ列表数量由上传的数据周期决定,每个不同周期对应一个DAQ列表。ODT列表数则由每个周期下上传的数据个数及长度决定

  2. 向相应的ODT填入数字,及数据的存储地址和数据长度,随后根据类型和上传周期被写在不同DAQ的不同ODT中

  3. 上传周期由事件通道(Event Channel)和预分频值(Prescaler)决定.事件周期可以理解为ECU每多少ms触发一次,若为10,则说明ECU每10ms触发一次该事件。预分频值可以理解为:以事件通道的时间为基准进行分频,我们以此来复用事件通道。若预分频值设定为2,则将某一事件以20ms的周期进行触发,但使用的仍然是同一个DAQ列表。

  4. 启动DAQ,进行数据采集

    DAQ Initlize and Start data transmission

Command Description Remark
CONNECT (0x01) Connect Bypass, if already connected
GET_DAQ_SIZE (0x14) Get the number of ODTS in DAQ
(loop ) n
SET_DAQ_PTR (0x15) Set DAQ List number,ODT List number,ODT Element(Id) number
WRITE_DAQ (0x16) Set DAQ transfer bytes,extension address(DAQ element),Address of DAQ Element
START_STOP (0x06) Set Mode select,DAQ list number,last ODT number(the current DAQ list should be transmission the last ODT number),Event channel number ,transmission prescaler prepare data tranmission
START_STOP_ALL (0x08) start data transmission
SHORT_UP(Short Upload)

在这里插入图片描述

在这里插入图片描述

实例视图在这里插入图片描述
后续会持续完善内容……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入浅出:CAN通信之CCP协议 的相关文章

  • 爬坑记录

    1 vue循环中的input 每输入一次都会失去焦点需要再次点击才能获取焦点 v for里面的key设置的不是固定值 是会跟随文本框变化而变化的 因为key 变化了 所以才引发了dom的重新渲染 把key设置成其他不会随其他变量改变的值就可
  • canvas详解08-基本动画

    由于我们是用 JavaScript 去操控 canvas 对象 这样要实现一些交互动画也是相当容易的 在本章中 我们将看看如何做一些基本的动画 可能最大的限制就是图像一旦绘制出来 它就是一直保持那样了 如果需要移动它 我们不得不对所有东西
  • leveldb源码分析--SSTable之Compaction SetupOtherInputs

    leveldb源码分析 SSTable之Compaction 对于compaction是leveldb中体量最大的一部分 也应该是最为复杂的部分 为了便于理解我们首先从一些基本的概念开始 下面是一些从doc impl html中翻译和整理的
  • java多线程学习之wait与notify

    序言 每一个java对象都有一个lock状态 synchronized method 获取的就是 this对象的object lock 权威 等待 通知机制的工作意义 某个线程 thread1 的run 方法的方法体运行中需要等待一个特定条
  • 解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而富有创意的编译过程

    在 csproj 中 Project 中的 Sdk 属性是 MSBuild 15 0 开始支持的 也就是 Visual Studio 2017 开始支持 有了 Sdk 属性的存在 MSBuild 编译过程能够扩展得非常强大 而不止是过去 I
  • 综合64位win10系统无法安装.Net framework3.5或出现“Error: 0x800f0922”

    1 有可能是未开启windows update win 设置 搜索service 打开服务下拉有window update 属性手动开启 然后确认 再开启window update 再进行安装net framework3 5 2 如果还不行

随机推荐

  • English Phonetic Spelling Alphabet

    https www englishclub com vocabulary english phonetic spelling htm When speaking on the telephone or in noisy environmen
  • Python OpenCV 人脸识别

    简单运用Python OpenCV对图片进行人脸识别 我们先看效果及代码 import cv2 img1 cv2 imread 6 jpeg gray cv2 cvtColor img1 cv2 COLOR BGR2GRAY face de
  • BSN公网发展如何影响区块链的技术演进?

    2022年1月25日 区块链服务网络 BSN 面向国内市场发布了BSN DDC基础网络 2022年9月6日 BSN在香港面向海外发布了BSN Spartan网络 BSN DDC基础网络与BSN Spartan网络共同组成了BSN的公网产品体
  • Java 批量生成二维码图片,并在页面打包成可直接下载的zip包

    一 描述 前言 在页面点击按钮通过后端生成二维码并下载到本地 并且可以批量下载 请求方式 GET 请求参数 String ids 响应内容 zip文件流 二 代码实现 1 引入包
  • error MSB6006: “cmd.exe”已退出,代码为 3 ,错误解决

    利用vs2019和qt5 9 2 在编译例子时发生如下错误 error MSB6006 cmd exe 已退出 代码为 3 C Program Files x86 Microsoft Visual Studio 2017 Community
  • cicd 08--基于Jenkins的通用可扩展CICD架构

    cicd 08 基于Jenkins的通用可扩展CICD架构 1 介绍 2 架构 2 1 架构图 2 2 主要模块功能 3 案例 3 1 场景说明 3 2 Job multi 的功能脚本 3 3 执行结果 4 优化实施 5 注意事项 6 说明
  • SQL注入——布尔盲注

    目录 一 盲注的概念 二 盲注分类 三 注入方法的选择 四 关键函数 五 实例 一 盲注的概念 页面没有报错回显 不知道数据库具体返回值的情况下 对数据库中的内容进行猜解 实行SQL注入 二 盲注分类 盲注分类 布尔盲注 时间盲注 报错盲注
  • 【数据结构】[环形链表](LeetCode142. 环形链表 II)给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

    一 问题描述 给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos
  • SAP HANA之异军突起 (数据库各厂商发展历史.9. )

    2012 11 27 iihero于CSDN 如若转载 请注明出处 谢谢 HANA 最近一直被热炒的数据库产品 从2011年6月27日由SAP公司正式提供给客户使用开始算起 其用户出现爆炸式增长 一方面源于它的初创性 它是一款完全基于内存的
  • 利用HBuilder制作网页模板

    div class header div class logo fl div div class nav lan fl div class language fr 选择语言 div div class nav fr 导航 div div c
  • java--进阶--1.1--Dom4j--常用api

    java 进阶 1 1 Dom4j 常用api 代码位置 https gitee com DanShenGuiZu learnDemo tree master Dom4j learn 1 SAXReader类的方法 获取Document 文
  • 二分类变量相关性分析spss_【2026.】RC列联表(分类数据)的统计分析方法选择与SPSS实现...

    关注本号后 回复软件名称 即可拿到软件下载链接哦 分类资料在医学统计中很常见 有些统计学书上称为计数资料 比如 有效 无效 发病 不发病 男 女 血型 A B O AB 等等 分类资料一般根据频数整理成列联表的形式 一般的列联表多是二维的
  • 软件开发常用结构

    一 三层架构 1 三层架构包含的三层 界面层 User Interface layer 业务逻辑层 Business Logic Layer 数据访问层 Data access layer 2 三层的职责 1 界面层 表示层 视图层 主要功
  • 多核处理器下的快速包处理软件架构FastGate

    FastGate主要的目标是帮助用户缩短研发周期 保护已有的代码 快速开发和灵活部署自己的业务 用户无需关注多核处理器的硬件细节 无需关注性能和扩展性 只需专注于自身功能模块的开发 然后通过和FastGate框架的无缝集成便可以快速形成自己
  • npm 淘宝镜像的安装

    npm 淘宝镜像的安装 方法一 使用阿里定制的cnpm命令行工具代替默认的npm 输入以下代码 npm install g cnpm registry https registry npm taobao org 检查是否安装成功 cnpm
  • 关于${ }的用法-Linux shell编程小记

    关于 的用法 Linux shell编程小记 1 替换 裁剪 在shell编程中 当遇到需要将某个字符串进行替换或者裁剪时 我们首先想到的是sed和awk 但是sed和awk的功能都太强大了 当只是简单的对某个字符串进行替换裁剪时 我们可以
  • visual-studio-code – 如何更改VS Code的文件排序?

    visual studio code 如何更改VS Code的文件排序 时间 2019 03 09 标签 visual studio code 栏目 Visual Studio 在我的项目中 我有文件标记为day1 txt day2 txt
  • 图像处理反向投影原理

    反向投影的作用是什么 反向投影用于在输入图像 通常较大 中查找特定图像 通常较小或者仅1个像素 称为模板图像 最匹配的点或者区域 也就是定位模板图像出现在输入图像的位置 直接看原文 https blog csdn net yee yj ar
  • 【PhpStorm】插件集

    安装翻译插件Translation 使用方法 点击你需要翻译的英文即可 插件2 CodeGlance 这个插件可以添加代码地图 插件3 ApiDebuggerApiDebugger 可以做沉浸式开发 插件4 代码特效插件Power Mode
  • 深入浅出:CAN通信之CCP协议

    CCP CAN Calibration Protocol CAN标定协议 用于标定系统与ECU之间的通信 CCP协议在应用层 使用CAN的数据帧来传输命令 CRO数据帧 主设备向从设备发送 CRO报文 CCP报文帧格式为CMD CTR DA