汽车OBD初级开发入门

您所在的位置:网站首页 obd检测工具 汽车OBD初级开发入门

汽车OBD初级开发入门

2024-07-13 09:43:38| 来源: 网络整理| 查看: 265

汽车OBD初级开发入门 我所认识的OBD从何开始学习OBDstm32的CAN总线OBD的标准协议

我所认识的OBD

直观的从名称上来说是英文On-Board Diagnostics的缩写,中文翻译为“车载诊断系统”。书面上的解释就是处理汽车相关故障的诊断系统。对于硬件接口如下图 OBD插座 针对不同车型,汽车上的OBD接口位置会有所不同 汽车OBD接口位置 而目前对于OBD接口的商用一般是作为GPS tracker即gps定位器,在汽车OBD上主要引出的接口包含了12V的电源、CAN总线、K线,L线等等如下图所示 OBD接口定义 对于实现与汽车内部诊断系统通信,就是通过这几条总线进行通信。我所理解的OBD从嵌入式的角度来说的话就是:外部器件与汽车内部系统通信的接口。

从何开始学习OBD

当我们认识了OBD相关概念之后,可是对于毫无经验的开发者来说,到底该如何下手,该先学习什么内容。我们要了解汽车内部的数据系统,那必须要学习的就是怎么和汽车进行通信,这时候就很明确了,那就是通过OBD接口的通信总线来打通外部与汽车内部的数据通信,而OBD包含的通信接口包含有CAN总线、K线以及L线,我这里主要是讲解CAN相关应用。

stm32的CAN总线

如果学习过单片机的朋友,谈到CAN总线相比OBD应该会更熟悉一些,对于CAN总线现在都是集成到芯片内部的,比较常用的就是stm32,对于使用者来说,不用太关心CAN总线的电路实现,我们只要能通过配置CAN总线进行通信就行了。在连接CAN总线通信的时候需要注意的是,在通信回路中需要并一个120欧的电阻,至于为什么需要电阻可以参考这篇博文:CAN总线为什么要有两个120Ω的终端电阻。关于CAN总线的理论基础,在网上都有很好的总结大家可以自行查找。我这里直接讨论在STM32中该如何配置CAN总线。首先调试CAN总线,可以先配置成回环模式进行调试,通过是否通信来判断can总线的相关初始化是否正确。对于can的初始化的流程, 1、配置CAN的IO口,在stm32中一般CAN的IO口是复用的,所以这里在配置的时候需要注意一下。 2、打开CAN总线的时钟,同时开始i配置CAN相关的寄存器数据,在这里很重要的一点就是要配置通信模式和波特率,这会关系到CAN的通信。 3、在初始化完之后,还需要配置CAN的滤波器,配置滤波器的目的是因为在汽车通信中,由于部分汽车是没有做网关的,当你通过CAN总线去通信的时候,会返回很多无用的消息,这个时候通过配置滤波器,直接过滤掉无用的,只接收特定的想要的数据。在滤波器中包含16位的滤波器和32位的滤波器配置,这个可以根据需要配置相应的滤波器。 网上有很多相关can初始化的配置,因为我这边使用的是stm32f042的芯片,可供大家参考一下

/**************************************************************************************** **函数信息(information):void CAN_GPIOConfig(void) **功能描述(description):CAN所用IO引脚配置 **输入参数(Arguments) :None **输出参数(Returns) :None **调用提示(reference) : *****************************************************************************************/ void CAN_GPIOConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); //使能SYSCFG, GPIO_PinAFConfig(GPIOA,GPIO_PinSource11 ,GPIO_AF_4); GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_4); //复用CAN功能 SYSCFG->CFGR1 |= PA11_PA12_RMP; //配置打开PA11_PA12功能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); } /**************************************************************************************** **函数信息(information):void CAN1_Config32BitFilter(u32 id1, u32 id2, u32 mid1, u32 mid2) **功能描述(description):CAN扩展帧滤波器设置 **输入参数(Arguments) :id1,id2 校验码 mid1,mid2 屏蔽码 **输出参数(Returns) :None **调用提示(reference) : *****************************************************************************************/ void CAN1_Config32BitFilter(u32 id1, u32 id2, u32 mid1, u32 mid2) { CAN_FilterInitTypeDef CAN_FilterInitStructure; NVIC_InitTypeDef NVIC_InitStructure; CAN_FilterInitStructure.CAN_FilterNumber = 0; CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh = id1>>13; CAN_FilterInitStructure.CAN_FilterIdLow = (id113; CAN_FilterInitStructure.CAN_FilterMaskIdLow = (mid113; CAN_FilterInitStructure.CAN_FilterIdLow = (id213; CAN_FilterInitStructure.CAN_FilterMaskIdLow = (mid2


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭