简介
kwp2000协议是早期汽车通信领域的常用通信协议,全称是关键字(key word protocl)协议。下面从ISO参考模型的角度对该协议进行详细解析。
物理层
协议通用属性
波特率 :10416bps (即发送单个bit所需时间大概为96us)
通信引脚 :7pin (双通路)
空闲电平电压:12V (一般汽油
车12V,柴油车24V,部分车5V)
数据格式 :1 + 8 +1 (1个开始bit位 + 8个数据bit位+ 1个结束bit位)
默认正负逻辑:正逻辑 (即默认高电平状态为1)
如下图所示,正逻辑情况下,一个高电平表示一个bit位为1,然后根据倒叙的方式得到数据位的的二进制数为1111 0001,即0xF1,符合kwp的数据格式。
建立通信方式
快速进入方式
通信设备向ECU发送25ms的低电平,在发送25毫秒的高电平后建立通信,最后在发送进入系统命令即可进入;
慢速进入
通信设备向ECU发送5bps(或200bps)的地址码,等待ECU响应0x55 + kw1 + kw2后,通信设备将kw2取反发送回给ECU,最后ECU对地址码取反发回给设备建立通信,然后再发送进入系统命令即可;其中0x55后面的字节规定了之后的通信波特率。
链路层
协议格式
基于如下图所示的协议格式,进行如下分类
格式1:80+ tag + src + len + Data + CS
举例:
Req:80 13 F0 01 81 05
Ans:80 F0 13 01 C1 45
格式2:8x+ tag + src + Data + CS
举例:
Req:81 13 F0 81 05
Ans:81 F0 13 C1 45
格式3:00+ len + Data + CS
举例:
Req:00 01 81 82
Ans:00 01 C1 45
格式4:0x + Data + CS
举例:
Req:01 81 82
Ans:01 C1 45
注解:
tag:目的地址
src:源地址
len:有效数据长度
cs:累加和校验(将所有字节相加后,取低字节)