Wednesday, 09 December 2020 10:10

ISO15765-4协议-初始化和读车架号的代码实现(源自C300开发板教程) Featured

在NL_OBD_SendCANFrame函数的支持下,OBD诊断程序的开发就会变得简单,我们只需关注ISO15031-5协议的功能实现即可,网络层,数据链路层等底层处理由NL_OBD_SendCANFrame函数完成。

下面是C300车联网开发板第一版软件关于OBD诊断程序代码截图。

图中我们看到第一版本软件主要实现读车架号,读故障码,读数据流三大基本OBD诊断信息,同时还有一个协议初始化函数。下面我们就围绕这四方面应用程序代码进行具体分析讲解。
ISO15765-4初始化
图中代码片段82行通过调用ISO15765_4_WakeUp函数,如果它的返回值是NL_OK表示初始化成功。下面截图分析ISO15765_4_WakeUp函数源码,了解初始化的过程。
 

ISO15765_4_WakeUp函数有两个参数,参数1是CAN通信速率,其值我已经用宏定义进行了定义分别是CAN_500K,CAN_250K,CAN_125K,这三个速率已经涵盖了法规诊断协议和增强型诊断协议也就是专车私有协议的速率。更多速率可以通过计算分频值获得,这部分内容在第6章的6.1.2小节 CAN配置中学习。参数2是诊断协议类型,只能填ISO15765_4STD_500K和ISO15765_4EXT_500K这两个协议。
31行对协议类型进行判断,如果是ISO15765_4STD_500K标准CAN协议执行33行到35行。如果是ISO15765_4EXT_500K扩展CAN协议执行39行到41行。首先看标准CAN协议33行NL_OBD_SelectCAN函数,这个函数是用来选择OBD 接口CAN通信引脚的,参数分别是有CAN_6_14和CAN_3_11。CAN_6_14选择OBD接口的6和14引脚作为CAN通信,6是CANH,14是CANL。CAN_3_11选择OBD接口的3和11引脚作为CAN通信,3是CANH,11是CANL。对于法规协议ISO15765-4协议,CAN通信引脚被固定定义为OBD接口的6和14引脚,所以此处函数NL_OBD_SelectCAN(CAN_6_14)。...

继续阅读完整内容

请查看下方广告以解锁文章剩余内容

广告加载中...
Read 22307 times Last modified on Wednesday, 09 December 2020 10:37
 
Please support our site by viewing this advertisement.

Please support our site by viewing this advertisement

Free Content