文章目录

  • 前言
  • 1.LIN版本更迭
  • 2.LDF简介
    • 2.1 LIN2.1版本LDF
    • 2.1.1 全局定义
    • 2.1.2 节点定义
    • 2.1.3 信号定义
      • 2.1.3.1 标准信号定义
      • 2.1.3.2 诊断信号定义(可选)
    • 2.1.4 帧定义
      • 2.1.4.1 无条件帧定义
      • 2.1.4.2 事件触发帧定义(可选)
      • 2.1.4.3 零星帧定义(可选)
      • 2.1.4.4 诊断帧定义(可选)
    • 2.1.5 节点属性定义
    • 2.1.6 调度表
    • 2.2 J2602版本LDF
    • 2.3 LIN2.2/2.2A版本LDF
  • 3. LIN Stack介绍
    • 3.1 S08/S12/KEA的LIN Stack
    • 3.2 S32K1xx的LIN Stack
    • 3.3 两个LIN stack配置工具的冲突
  • 4.常见导入错误类型
    • 4.1 缺少参数
    • 4.2 参数格式错误
  • 5.参考资料

前言

目前汽车尾灯上面使用LIN总线已经是司空见惯的了,有些预算高的甚至会上CAN总线。然而有些车灯客户的电子工程师对LIN总线未曾深入了解,在实际做项目时遇到LIN相关的问题会不知所措。建议大家阅读瑞萨的《LIN总线入门.pdf》或者笔者之前整理的《LIN总线介绍PPT》
目前笔者支持的车灯客户遇到最多的是和LDF文件相关的问题。当车厂甩过来一个LDF文件,客户使用开发工具导入该LDF时会弹出很多错误,由于对LDF文件不够熟悉,无法确定问题出在哪里,使得开发的进度受阻。
下文将介绍不同版本的LDF文件,以及一些常见的LDF文件导入错误的解决办法。

1.LIN版本更迭

lin的版本更迭如下图:

版本 发布时间 备注
LIN1.0 1999-07-01 LIN规范的初始版本
LIN1.1 2000-03-06 增加协议规范,配置语言规范和API规范
LIN1.2 2000-11-17
LIN1.3 2002-12-13 主要对物理层进行修改,提高了节点之间的兼容性
LIN2.0 2003-09-16 大的版本变动,支持配置,增加诊断规范,规定了节点性能文件
LIN2.1 2006-11-24 澄清LIN2.0,增加节点配置规范,传输层和诊断独立成章
LIN2.2 2010-12-31 弱化位采样规范,移除起始位的采样规范
LIN2.2A 2010-12-31 更正了第 2.6.2 章中的唤醒信号定义

2.LDF简介

从LIN2.0版本开始已经有了节点性能文件的规范,从LIN规范中的工作流(如下图)可以看出,LIN子网设计工具会收集节点性能文件的信息,自动生产LIN描述文件,即LDF。

一般的LDF编辑查看工具可选的版本有5个,如下所示。

  • LIN1.3
  • LIN2.0
  • J2602
  • LIN2.1
  • LIN2.2/LIN2.2A

LDF版本虽然很多,但是调用LDF配置的LIN协议栈使用的API就两个版本,LIN2.1的API和J2602的API。
目前国内车厂用的比较多的是LIN2.1和LIN2.2版本的LDF,北美车厂用的比较多的是J2602版本的LDF。下面介绍下这三个版本的LDF。

2.1 LIN2.1版本LDF

LIN2.1的出现主要是为了澄清LIN2.0,同时增加了节点配置规范,传输层和诊断独立成章。
LIN2.1规范中对LDF的定义如下:

下面针对上图划分的六部分结合示例进行说明。
示例LDF选择S32DS for ARM2.2(安装在D盘)自带的LIN例程使用的LDF,地址如下:
D:\NXP\S32DS_ARM_v2.2\S32DS\software\S32SDK_S32K1xx_RTM_3.0.0\examples\S32K144\demo_apps\lin_master\Sources\LIN21.ldf

2.1.1 全局定义

如上图所示,这一段首先定义该文件为LDF,然后选择LIN协议版本和语言版本,最后确定LIN波特率。
注意:通道名称是可选项,当同一个主节点连接了多个LIN集群,即使用多个LDF,将通道名称作为后缀用以区分。一般情况用不上。

2.1.2 节点定义

如上图所示,这一段分别定义主节点和从节点:

  • 主节点:名称,时基,抖动
  • 从节点:每个从节点的名称

2.1.3 信号定义

信号原本有三类,标准信号,诊断信号和信号组,但是信号组只在LIN1.3中使用,LIN2.x版本不再使用。

2.1.3.1 标准信号定义

标准信号编码类型有两种,一种是标量信号(scalar signal),长度范围为1bit~16bit;一种是数组信号(array signal),长度为8bit的倍数且最大64bit。

如上图所示,该段用于编写标准信号,包含信号名称,长度,初始值,发布节点和收听节点,array signals的初始值用数组表示,数组的元素个数N = Size / 8bit。
特别说明:每个从节点都需要预先定义一个长度为1bit的响应错误信号,这个在节点属性定义时需要用到

2.1.3.2 诊断信号定义(可选)

如上图所示,由于诊断信号不需要定义发布者和接收者,所以需要和标准信号分开定义。

2.1.4 帧定义

帧一共有五类,分为无条件帧,事件触发帧,零星帧,诊断帧和保留帧。保留帧(帧ID为0x3E和0x3F)在LIN2.x版本不使用。

2.1.4.1 无条件帧定义

无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。无条件帧的帧ID范围为0~0x3B。

如上图所示,这一段主要定义了帧名称,帧ID,发布节点,数据段字节数以及包含的信号名称和偏移量。

2.1.4.2 事件触发帧定义(可选)

事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。帧ID范围同上。

如上图所示(由于示例LDF没有定义这部分,截取的LIN2.1规范的例程),主要包含了帧名称,冲突解决进度表,帧ID,关联的无条件帧。

2.1.4.3 零星帧定义(可选)

零星帧帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。帧ID范围同上。

如上图所示,这一段主要定义帧名称以及选择关联的无条件帧,关联的无条件帧的发布节点必须是主节点。

2.1.4.4 诊断帧定义(可选)

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。

如上图所示,这一段用于配置主机请求帧(帧ID为0x3C)和从机应答帧(帧ID为0x3D),数据段规定为8个字节,一律采用标准型校验和。

2.1.5 节点属性定义

这一段主要定义从节点的属性,包含从节点名称,LIN协议版本,NAD配置值,NAD初始值,产品ID(供应商ID,功能ID,变量),选择响应错误信号,P2_min,ST_min,N_As_timeout,,N_Cr_timout,可配置的帧列表。

2.1.6 调度表

调度表的功能有很多,包含调度帧,分配NAD,保存配置等。这个例程只使用了调度帧的功能。

最后一段进行调度表的定义,包含调度表名称,帧名称,帧时隙。

2.2 J2602版本LDF

SAE J2602的目标是通过解决LIN2.0的模糊、矛盾或可选的要求来提高网络中不同LIN设备之间的可互操作性和可交互能力。
LIN2602的LDF和LIN2.1的LDF主要区别如下:
【全局定义部分】:

  • 波特率固定在10.417Kbps。

【帧定义部分】:

  • 从节点发布的帧消息第一个字节必须是状态字节,由5bit的应用信息字段(低5位)和3bit的错误字段(高3位)组成。如下图所示:

  • 不允许使用事件触发帧 。

【节点属性定义部分】:

  • 节点属性不需要N_As_timeout和N_Cr_timeout;
  • NAD的值范围为96到110;
  • 错误响应(Response error)为3bit。

2.3 LIN2.2/2.2A版本LDF

上图是S32K1xx的LIN协议栈的介绍,结合LIN2.2A规范的变更介绍可知(1.1.7.6章节),LIN2.2/2.2A只是在LIN2.1的基础上进行了一些拼写修正和澄清。LIN2.2/2.2A版本的LDF文件相比LIN2.1版本的LDF并没有什么区别。

3. LIN Stack介绍

目前笔者用过的LIN Stack就两种,一个是S32DS自带的S32K1xx_LIN_Stack,一个NXP官网推荐的S12_LIN_Stack。两个LIN Stack对比情况如下:

LIN Stack S32K1xx_LIN_Stack S12_LIN_Stack
支持的版本 LIN1.3,LIN2.0,J2602,LIN2.1,LIN2.2、2.2A LIN2.0,J2602,LIN2.1
LDF源文件 不支持高亮显示和编辑 支持高亮显示,可以编辑
LDF图形配置 查错效果更好,但是编辑功能体验较差 支持查错和编辑
协议栈源码 开放 开放

查看LDF文件是否有格式错误时,建议使用Processor Expert的LIN组件;如果需要编辑LDF,建议使用S12_LIN_Stack自带的NCF Tools。主要原因是Processor Expert的LIN组件修改LDF的参数时经常卡死,使用体验较差。

3.1 S08/S12/KEA的LIN Stack

S12_LIN_Stack支持S08/S12/KEA三个平台,详细介绍参考文章《如何使用S32DS开发KEA系列的LIN功能(一)》

3.2 S32K1xx的LIN Stack

S32K1xx的开发环境自带LIN Stack,Processor Expert中有配套的LIN组件(如下图),和S12_LIN_Stack自带的NCF Tool差不多,参考NCF Tool即可。

3.3 两个LIN stack配置工具的冲突

在使用上述两款工具时,发现两款工具对LDF文件某些参数的处理有些冲突,下面简单介绍下笔者已经发现的冲突。为了描述方便,Processor Expert中配套的LIN组件简称LIN组件,S12_LIN_Stack自带的NCF Tool简称NCF工具

  1. Message ID:
    LIN组件加载J2602版本的LDF时,会要求加上message ID,NCF工具不需要添加。奇怪的是LIN组件在Message ID文字下面显示“只有LIN2.0支持Message ID”,查阅J2602-1规范中文版,里面又有信息标识符的描述,但是没有LIN2.0描述清晰。
  2. 状态字节:
    LIN组件会检查J2602版本LDF的无条件帧(从节点发布)的第一个字节是否是状态字节,但是NCF工具不会进行检查。查阅J2602-1规范中文版,5.8.6章节描述的要求和LIN工具一致。个人建议编写J2620的LDF时遵循规范。
  3. 产品ID:
    LIN工具对Product ID中的Supplier ID和Function ID的范围定义分别为0 ~ 0x7FFE和0 ~ 0xFFFE,但是LIN工具对其定义的范围都是0 ~ 0xFFFF。查阅LIN2.0规范中文版,2.2.2章节描述的要求和LIN工具一致;查阅LIN2.1和LIN2.2A规范,4.2.1.1章节给出的通配符值分别为0x7FFF和0xFFFF。
  4. 位宽和容忍度:
    LIN工具在J2602版本LDF的主节点定义部分,不需要定义Bit length和Tolerant,但是NCF工具需要定义。查阅J2602-1规范中文版,没有找到这两个参数的定义。

4.常见导入错误类型

下面简单介绍一些在支持客户时常见的问题。

4.1 缺少参数

1.需要使用NCF工具加载J2602的LDF,但是没有添加Bit length和Tolerant:

2.节点定义部分没有进行可配置的帧的定义:

3.LDF更改导致原来的主节点变成从节点,忘记加上响应错误信号:

4.2 参数格式错误

1.使用J2602版本的LDF时,状态字节的格式错误:

5.参考资料

  • LIN规范包 版本2.0;
  • SAE J2602-1 2005年9月修订;
  • SAE J2602-2 Issued SEP2005;
  • 瑞萨的《LIN总线入门.pdf》;
  • LIN Specification Package Revision 2.1;
  • LIN Specification Package Revision 2.2A;

S32DS导入外部LDF文件出错处理办法相关推荐

  1. Struts2中导入外部xml文件出现Included file cannot be found错误!

    Struts.xml 文件中导入外部xml文件,需要在Struts.xml文件中加入include元素. ch3.xml文件位于ch3目录中.ch3.xml是一个标准的Struts2配置文件 路径千万 ...

  2. 关于Asp.Net开发中导入外部JavaScript文件的问题

    一直认为在html元素应用的时候,每个元素大都这样子(<hr />或者<script />)格式就对的,但今天就发现了,其实在不同的开发中是不一样的,这次遇到的就是导入外部Js ...

  3. 2021-05-11sql server导入外部mdf文件发生报错

    sql server导入外部mdf文件发生报错 消息 5120,级别 16,状态 101,第 1 行 无法打开物理文件"D:\Download\AdventureWorks2012_Data ...

  4. 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]

    1.表相关的SQL语句 操作表相关的SQL 必须先使用某个数据库 create database mydb1; show create database mydb1; use mydb1; 如果默认不 ...

  5. IDEA导入外部Module步骤

    IDEA导入外部Module步骤 本文描述的是将一个Web类型的Module导入IDEA项目中的步骤. 1.新建一个空项目 1.1左上角File->New->Project 1.2选择Em ...

  6. MySQL导入外部数据集

     导入外部 .sql 文件的两个方法 第二个方法搬运自下面的链接https://www.csdn.net/tags/MtjaAg1sOTMyODAtYmxvZwO0O0OO0O0O.htmlhttps ...

  7. 搞定使用MySQL导入外部的SQL文件执行

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 搞定使用 ...

  8. 服务器mdf ldf文件,sqlserver2008如何导入mdf,ldf文件

    网上找了很多解决sql server导入其他电脑拷过来的mdf文件,多数是不全,遇到的解决方法不一样等问题,下边是找到的解决问题的最全面方法! 将mdf, ldf文件导入到sql server 200 ...

  9. python导入外部文件-如何导入其他Python文件?

    导入python文件的方法很多,都有各自的优缺点. 不要仓促地选择对您有用的第一个导入策略,否则,当您发现代码基不能满足您的需要时,您将不得不重写代码基. 我将首先解释最简单的示例#1,然后我将转向最 ...

最新文章

  1. Ext JS 4预览:重构和规范渲染过程()
  2. go ssh 执行多个命令_每天一个 Linux 命令(92): dirname 命令
  3. 2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(下)
  4. python怎么启动mne_mne-python学习之一 入门介绍
  5. 教你8个高级cmd运行命令,让人一看你就是个电脑高手!
  6. 单元测试 - mock异常
  7. 吴恩达机器学习(十一)K-means(无监督学习、聚类算法)
  8. 制作全功能系统维护U盘 PE Linux BT3 DOS
  9. python绘制降水色斑图
  10. 视频教程:小型登陆系统(完)
  11. 办公室计算机打印机共享,办公室共享连接打印机全攻略,办公人必会操作技能...
  12. 计算机屏幕截图按什么键,电脑上截图按哪个键_电脑截图快捷键是什么
  13. 伊利诺伊大学厄本那 香槟分校计算机科学,美国伊利诺伊大学厄本那香槟分校专业设置...
  14. “菜鸟”程序员和“大神”程序员的差别竟然这么大...
  15. Java通过快递鸟-查询物流
  16. 【观察】跨入5G新时代,维谛技术(Vertiv)的行与思
  17. python宣传视频 抖音_Python生成抖音字符视频,技术流!
  18. Translate Aticle
  19. 史上最牛逼的导航网站(很全很详细)
  20. 无代码开发平台为什么能火?它是如何收费的

热门文章

  1. Python入门教程出炉:Day21-30_Web前端概述
  2. 小米躺枪,联发科被曝芯片漏洞:全球37%安卓用户被监听
  3. 开发基于以太坊的区块链底层平台,秘猿科技想做共识数据时代的Oracle
  4. 【2021年新书推荐】Red Hat RHCSA 8 Cert Guide: EX200
  5. 生成8-20位随机密码(大小写字母、数字、特殊字符)
  6. 互联神州2008年十一superCCNA
  7. C语言一个简单的商店管理系统
  8. 重磅消息!「人工智能训练师」国家职业技能标准发布:共有五大级别,你是第几级?...
  9. 信道编码Huffman编码信息论与编码
  10. 小丑2019_“小丑规则”