基于CAN总线的KWP2000协议
结构如下:
KWP on CAN Identifier
Parameter | Value [n] | Description |
---|---|---|
Transmit ID | 0x18DAFA00 | ECU ->tester |
Receive ID | 0x18DA00FA | Tester -> ECU |
KWP 2000 on CAN协议基于握手报文。对于来自测试人员的每个请求,ECU必须在新请求之前生成一个积极或消极的响应。
Single Frame:如果要传输的数据数量小于7(标准添加)/ 6(扩展添加)数据字节,则使用单帧报文。第一个(标准寻址)/第二个(扩展寻址)字节是PCI字节。PCI字节的上4位包含0x0的代码,而低四位表示:包括SID在内的参数的数量。
Bytes of the Single Frame message
Bytes | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
Normal addressing | 0x0 len | SID | par | par | par | par | par | par |
Extended addressing | ext. addr. | 0x0 len | SID | par | par | par | par | par |
第一帧的布局与单帧的布局相似。一个区别是额外的长度(len)字节已经添加(12位len允许最多传输4095字节的数据)。第一帧的代码是0x1。
在PCI字节的下4字节中存储了一个计数器(ctr)。计数器的初始值是0x01。它对每个连续的帧递增。当到达0x0F的值时,计数器被重新设置为0x00。
如果接收到类型为0x01的流控制,即发送(CTS)消息,发送方可以继续传输。如果类型是0x01(流控制等待),发送方必须重新启动超时计时器。通过流控制等待消息,接收端可以延迟数据字节的进一步传输。参数BSmax定义了在发送方等待接收方生成的流控制消息之前,允许发送方发送的连续帧数。STmin定义了分离时间,即两个连续帧之间的最小持续时间。发送方必须确保此分离时间不属于STmin。
驱动模式是控制单元接受汽车相关控制任务的正常运行状态。
KWP services for flash programming in driving mode
Service name | Service ID | Usage |
---|---|---|
securityAccess | 0x27 | Security level for flash programming |
startDiagnosticSession | 0x10 | Start flash programming mode |
readECUIdentification | 0x1A | Read ECU identification |
编程模式是实际的flash编程模式,支持flash编程所需的所有KWP服务
KWP services in the programming mode
Service name | Service ID | Usage |
---|---|---|
startCommunication | 0x81 | Start of KWP communication |
stopCommunication | 0x82 | Stop of KWP communication |
startDiagnosticSession | 0x10 | Start flash programming mode |
securityAccess | 0x27 | Security access #1 and #2 |
accessTimingParameter | 0x83 | Get and set the timing |
testerPresent | 0x3E | Keep communication alive |
writeDataByLocalIdentifier | 0x3B | Writing entry in historical zone |
readECUIdentification | 0x1A | Bootblock version, identifier block |
startRoutineByLocalIdentifier | 0x31 | Start erasing flash |
startRoutineByLocalIdentifier | 0x31 | Start checksum verification of flash |
stopRoutineByLocalIdentifier | 0x32 | Stop checksum or erase routine |
requestDownload | 0x34 | Request for download of code and data |
transferData | 0x36 | Send to ECU code and data |
requestTransferExit | 0x37 | End of data transfer for programming |
这种模式是一种临时的运行状态,软件在RAM中运行,因为flash刚刚被删除,因此无法访问flash。当删除完成时,软件会自动跳到引导块模式。
KWP services in the “RAM” mode
Service name | Service ID | Usage |
---|---|---|
StartRoutineByLocalId | 0x31 | Start erase flash |
TesterPresent | 0x3E | Keep communication alive |
基于CAN总线的KWP2000协议相关推荐
- 基于CAN总线的KWP2000协议——命令总览
1.startDiagnosticSession SID $10 (K2STDS) 开始新的诊断会话 此消息用于在ECU中启用不同的诊断模式.诊断模式(会话)只能在执行过securityAccess服 ...
- 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)
相信像我这样的小白第一次接触汽车诊断协议肯定有点懵逼,什么鬼kwp2000,那什么又是ISO-14230,ISO-15765,ISO-14229,UDS,UDSonCAN???它们到底是什么关系,还有 ...
- 汽车诊断协议(K线/CAN总线、kwp2000、ISO14230、ISO1575...)
一.初步认识 KWP 2000和IS0-14230 在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,最早欧洲出现了一种标准诊断协议KWP2000(Keyword Protocol 200 ...
- 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)(转)
相信像我这样的小白第一次接触汽车诊断协议肯定有点懵逼,什么鬼kwp2000,那什么又是ISO-14230,ISO-15765,ISO-14229,UDS,UDSonCAN???它们到底是什么关系,还有 ...
- Kwp2000协议的应用(硬件原理使用篇)
作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 发现K线没有过多的文章描述,作为一个开发过K线的人,不写些文章帮助后来的人岂不是太浪费开发经验了呢. 总述 KWP2000是一 ...
- C#上位机开发源码基于RS485通讯总线的ModbusRtu协议,支持用户权限管理
C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理.sqlite数据库.实时曲线.历史曲线.历史报表.导出Excel.主界面布局可调带记忆等功能 ...
- C#上位机开发源码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理
C#上位机开发源码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理.sqlite数据库.实时曲线.历史曲线. ...
- can协议crc计算_基于CAN总线的CRC校验码的原理与实现
基于CAN总线的CRC校验码的原理与实现 王鹏 [摘 要]CAN总线又称为控制器局域网技术,属于工业现场总线,应用范围很广.CAN系统中通常 采用反馈重发机制对通信过程进行差错控制.当接收端反馈给发送 ...
- sm总线控制器找不到驱动程序_技术 | 基于CAN总线的伺服电机通信控制
1.引言 CAN(ControllerArea Network)总线是一种有效支持分布式控制或实时控制的串行通信局域网络,由于其高性能.高可靠性.实时性好以及独特的设计,已广泛应用于控制系统中的各检测 ...
最新文章
- COLING 2018 ⽤对抗增强的端到端模型⽣成合理且多样的故事结尾
- Zend Studio添加ThinkPHP代码提示方法
- iOS项目架构 小谈
- 从第一范式(2nf)到第二范式(3nf)_关系数据模型-范式
- 第一个shell脚本——修改配置文件
- 如何准备计算机二级-Java
- 2022 软件库APP源码前端 后端整套独立后台+搭建教程
- 谈谈eXeScope这款exe修改器
- 配置vps服务器,拨号换ip(一)
- WaitForSingleObject、WaitForMultipleObjects假死,永远等待的问题
- 将进酒服务器是哪个位置的,李白的《将进酒》是他什么时候写下的?又是在哪里写的呢?...
- 幼儿课外活动游戏_这15个户外游戏,让你组织活动收放自如
- Android App瘦身实战
- java二维数组货柜,装箱布局三维可视化控件开发sup*/sup
- 页面报错$injector:unpr
- 网络爬虫是干什么的呢?
- 单云台语音跟踪摄像机MHD-G200TH
- Altium Designer原理图转PCB板时报错是什么原因?
- 01-pandas时间类型dt类属性及方法
- IDEA运行工程时报错:java: java.lang.OutOfMemoryError: GC overhead limit exceeded
热门文章
- 解决电脑软件图标显示为空白图样
- gorm preload 搜索_Win10 的13个最佳免费搜索工具(下)
- Carmex防晒护唇膏(樱桃/草莓)防晒SPF15
- android壁纸应用,是否可以设置壁纸就像使用Android附带的应用程序一样?
- 预训练模型代码深度剖析之开宗明义:新学常见误区和正确的学习姿势
- 【2012用户大会-遥感讲座分享】ENVI/IDL在地理国情监测中的解决方案
- FCPX插件-仿LR色相饱和度白平衡色彩校正HSL视频调色插件 Lightroom Controls
- 中级会计职称复习技巧总结
- 联阳 IT66121FN 低功率单通道SDI转HDMI传输器芯片
- 力天创见客流统计系统过滤员工