前言

硬件说明:
 MCU: GD32C103 120M,128K,32k RAM.
 输入:USB 5V.
 OBD功能口定义:OBD(2,10)VPWM、OBD 7(K线)、OBD 6(CAN H)、OBD 14(CAN L)、OBD 15(L线).

软件说明:
一、汽车CAN2.0(双线OBD 6、14)
1、支持波特率:1M、800K、500K、250K、125K、100K、62K、50K、33.3K、25K

二、汽车CAN FD(双线OBD 6、14)
1、仲裁区波特率:1M、500K
2、数据区波特率5M 4M 2M 1M

三、汽车KWP/LIN(OBD 7)总线数据采集说明
1、波特率:5、4800、9600、10416、57600、115200 BPS

三、SAE J1850(OBD 2、10)
1、PWM 协议发送接收
2、VPW 协议发送接收

KWP ISO14230
  1. 电路图

  2. 例程说明
    物理层特性
    空闲电平通常为12V;
    数据位格式为1+8+1,无校验位;
    常用波特率为10416BPS和9600BPS两种。
    通讯方式
    ① K线 ② K+L线

快速模式
诊断仪在K-线上传送一个唤醒模式(WuP)的信号。该信号在一段空闲时间(300MS)以后,以25ms 的低电平开始。在TWuP 的时间后,接着第一个下降沿,诊断仪发送启动通信服务的第一个位。

本例子 KWP 波特率设置为10416,高低电平激活后,循环发送0xCX格式和0x8X 格式的命令帧
注:用OBD 一分2线接上开发板与CAN/K 采集器

3.软件设计
(1)main主要流程
//InitKinSys(0,0,10416);//25/25 拉低拉高激活系统 并初始化K线波特率
//SendKwp14230Frame(SendData) 发送命令

Main() 主要代码
uint8_t SendData[10]={0xC1,0x33,0xF1,0x81,0x66};
uint8_t SendData1[10]={0x83,0xF1,0x11,0xC1,0xEF,0x8F,0xC4};
gpio_bit_set(GPIOB,GPIO_PIN_11); //PB11=1 开启 1027
InitKinSys(0,0,10416);//25/25 拉低拉高激活系统
/* main loop */
while (1)
{
SendKwp14230Frame(SendData);//CX 开头的帧
Delay_ms(500);
SendKwp14230Frame(SendData1);//8X 开头的帧
Delay_ms(500);

}

(2)usart.c 主要函数说明

1 高低电平激活 Low_High_ms
//波特率设置
//高低电平激活
void Low_High_ms(u16 low,u16 high)
{
rcu_periph_clock_enable(RCU_GPIOA);
/* configure LED2 GPIO port /
gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_2);
/
reset LED2 GPIO pin */
//tja1027 芯片控制脚接PB11 ,PB11=1时使能芯片
gpio_bit_set(GPIOB,GPIO_PIN_11); //PB11=1

  gpio_bit_set(GPIOA,GPIO_PIN_2);    //PA2=2  拉高
Delay_ms(300);//300ms 高电平//拉低拉高gpio_bit_reset(GPIOA,GPIO_PIN_2);    Delay_ms(low);gpio_bit_set(GPIOA,GPIO_PIN_2);   Delay_ms(high);

}

2 初始化UART1_Init
//波特率设置
void UART1_Init(uint32_t bound)
{
/* enable USART, GPIOA clock */
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_USART1);
rcu_periph_clock_enable(RCU_AF);

 nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
nvic_irq_enable(USART1_IRQn, 0, 1);/* connect port to USART1_Tx */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
/* connect port to USART1_Rx */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3);/* USART1 and USART2 baudrate configuration */
usart_baudrate_set(USART1, bound);//波特率/* configure USART word length */
usart_word_length_set(USART1, USART_WL_8BIT);//8位数据格式/* configure USART stop bits */
usart_stop_bit_set(USART1, USART_STB_1BIT);//停止位/* configure USART transmitter */
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);//使能发送/* configure USART receiver */
usart_receive_config(USART1, USART_RECEIVE_ENABLE);//使能接收/* enable USART */
usart_enable(USART1);/* enable the USART interrupt */
usart_interrupt_enable(USART1, USART_INT_RBNE);//是能接收中断

}
3 发送命令SendKwp14230Frame

/***********************************************

函数:标准 KWP 2000 命令发送函数
参数:cmdaddr = 83 F1 11 C1 EF 8F C4
功能:
返回:
**********************************************/
uint8_t SendKwp14230Frame(uint8_t cmdaddr[])
{
uint8_t Sidx=0,Slong=0;
uint16_t i=0;
uint32_t tmp=0;
Slong=CountKwpDataLong(cmdaddr);//根据帧头自动计算长度
cmdaddr[Slong-1]=SumDat(cmdaddr,Slong);
//cmdaddr[Slong-1]=sum;//累加和最后一个字节
//USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);//禁中段
/
enable the USART interrupt */
usart_interrupt_disable(USART1, USART_INT_RBNE);
usart_receive_config(USART1, USART_RECEIVE_DISABLE);//关闭接收
usart_interrupt_flag_clear(USART1, USART_INT_FLAG_RBNE);//清款冲
Delay_ms(20);
for(Sidx=0; Sidx <Slong; Sidx ++)
{
KLIN_Send_ByteOne(cmdaddr[Sidx]);
if(Sidx==(Slong-1))
{
Delay_us(20);
usart_data_receive(USART1);
usart_interrupt_flag_clear(USART1, USART_INT_FLAG_RBNE);//清款冲
}
Delay_ms(5);
}
usart_interrupt_enable(USART1, USART_INT_RBNE);
usart_receive_config(USART1, USART_RECEIVE_ENABLE);//使能接收
return Slong;
}

4.PC 平台效果
EcuSimulator 工具设置KWP波特率10416采集,显示数据如下图所示

源码地址
硬件地址

GD32汽车诊断KWP 协议/ ISO-14230测试相关推荐

  1. 【图解UDS】UDS汽车诊断标准协议(ISO 14229)带你入门到精通

                                      [图解UDS]UDS汽车诊断标准协议(ISO 14229)带你入门到精通 目录 为了便于学习ISO 14229 UDS诊断协议,提供 ...

  2. 汽车诊断-KWP2000协议

    汽车诊断-KWP2000协议 目录 一.物理层 二.链路层 1.帧格式 2.握手方式 附录 目录 一.物理层 引脚用途: 采用标准OBDII-16诊断接头: 4号引脚:电源地:5号引脚:信号地:16号 ...

  3. GD32 汽车诊断协议J1850-PWM 测试

    J1850-PWM 硬件说明:  MCU: GD32C103 120M,128K,32k RAM.  输入:USB 5V.  OBD功能口定义:OBD(2,10)VPWM.OBD 7(K线).O ...

  4. GD32汽车诊断协议 ISO-9141测试

    硬件说明:  MCU: GD32C103 120M,128K,32k RAM.  输入:USB 5V.  OBD功能口定义:OBD(2,10)VPWM.OBD 7(K线).OBD 6(CAN H ...

  5. 汽车诊断-KWP1281协议

    文章目录 前言 一.物理层 1.诊断接口 2. 物理特征: 二.链路层 1.命令格式 2.握手方式 三.总结 1.KWP1281的特点: 2.KWP2000,ISO9141,KWP1281协议的异同点 ...

  6. 【图解UDS】UDS汽车诊断开发流程及Vector解决方案工具链介绍

                                   [图解UDS]UDS诊断开发流程及Vector解决方案工具链介绍 目录 为了便于学习ISO 14229 UDS诊断协议,提供三个资源链接: ...

  7. 基于CAN总线的汽车诊断协议UDS (网络层 ISO 15765)

    上个月一个同事Z跳槽去了德赛西威,Z之前是完全不懂诊断的MCU工程师,去德赛后做诊断开发,让我感觉到,汽车嵌入式行业,CAN和诊断工程师还是比较稀缺的.之前我和Z共同负责一个项目,我负责CAN网络和诊 ...

  8. 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)

    相信像我这样的小白第一次接触汽车诊断协议肯定有点懵逼,什么鬼kwp2000,那什么又是ISO-14230,ISO-15765,ISO-14229,UDS,UDSonCAN???它们到底是什么关系,还有 ...

  9. 14229汽车诊断协议学习笔记

    14229汽车诊断协议学习笔记 什么是14229协议 诊断服务基本知识 确认的服务 未确认的服务 请求原语格式 响应原语格式 诊断分层结构 诊断服务 诊断会话控制(0x10)服务 ECU 重置(0x1 ...

最新文章

  1. Excel批量导入数据库
  2. 百度飞桨和Imagination宣布在全球AI生态系统方面开展合作
  3. @responseBody 返回更多数据
  4. RouterOS双线进行IP分流上网
  5. solidity智能合约[7]-整型与运算
  6. 推荐Mongodb GUI 可视化管理工具-NoSQLBooster
  7. MapReduce案例一:天气温度
  8. Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean
  9. 从svn导入多个项目_GIT和SVN相比有哪些优势?如何在团队内部推行GIT?
  10. 第六章:thymeleaf页面模版-1. 信息输出
  11. Matlab基础笔记
  12. 元搜索推荐:比比猫!(马丁编辑)
  13. jQuery TagsInput
  14. 苹果手机换电池对手机有影响吗_你知道你的手机电池多久换一次吗?
  15. java中无法解析的编译问题怎么解决,java.lang.Error: 无法解析的编译问题
  16. SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧
  17. 华为机密照片!(转载)
  18. 10-11月数据接口-京东商品信息api,金碟Api对接,京东商智监控商品request采集后指数还原,聚水潭第三方接入api,拼多多上架辅助非第三方SKU核对上传,拼多多销量无限修改更新
  19. HDU 5172 GTY's gay friends 线段树
  20. 新概念二-非谓语动词

热门文章

  1. 【office】Visio 2010 画大括号 + 调整大括号尖角居中(对称)
  2. var和let的区别
  3. 四川一度智信:电商商家实效获取流量,不要花钱做无用功
  4. php语音信息,PHP代码示例_PHP语音验证接口 | 微米-中国领先的短信彩信接口平台服务商...
  5. pythonqq刷消息_QQ快速刷幸运字符
  6. ecg 幅度_ECG(心电图)
  7. ​食品领域排名靠前的品牌咨询公司塔望/华与华等服务优势对比​
  8. 专业系统维护:CleanMyMac X for mac
  9. ?——熊猫烧香作者年薪100万?
  10. Threejs系列--11游戏开发--沙漠赛车游戏【初步加载地面】