一文梳理LIN协议与应用

2024-03-04 12:44
文章标签 应用 协议 梳理 一文 lin

本文主要是介绍一文梳理LIN协议与应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、LIN是什么?有什么用?
  • 二、LIN概要描述
    • 2.1 特点
      • 2.1.1 低成本
      • 2.1.2 易扩展
      • 2.1.3 速率一般,不高
    • 2.2 网络形态
    • 2.3 架构分层
  • 三、应用层 4 大功能
    • 3.1 配置
    • 3.2 识别(查询功能)
    • 3.3 信号处理
    • 3.4 诊断
  • 四、协议层介绍
    • 4.1 帧的结构
    • 4.2 帧的类型
      • 4.2.1 信号携带帧——无条件帧(Unconditional Frame)
      • 4.2.2 信号携带帧——事件触发帧(Event Triggered Frame)
        • 4.2.2.1 与“事件触发帧”相关联的无条件帧:
        • 4.2.2.2 事件触发帧发生冲突时,如何解决?
      • 4.2.3 信号携带帧——偶发帧(Sporadic Frame)
      • 4.2.4 诊断帧(Diagnostic Frame)
      • 4.2.5 保留帧(Reserved Frame)
    • 4.3 调度表
  • 五、硬件
    • 5.1 物理介质
    • 5.2 EMI 控制

一、LIN是什么?有什么用?

LIN 是Local Interconnect Network 的缩写,意为本地互联网络,就是通信用的。可用于大多数嵌入式开发的行业领域中,如汽车、家电、工业自动化等。

在车载领域,LIN通常做为CAN网络的一个子网络的形式存在。(CAN网络是什么,不在本文讨论范围内)

从应用层来说,LIN主要有两个作用:信号处理 和 消息分发
在协议层,信号和消息位于帧中的数据段,是节点向其他节点传达的实质信息。
信号被包含在“信号携带帧”中,消息被包含在“诊断帧”中。会在LIN的帧类型处介绍。

二、LIN概要描述

2.1 特点

2.1.1 低成本

LIN是一个低成本的通信协议,因为在物理层LIN总线使用一根线做为介质,且实际使用中通常为一根铜线。与CAN或I2C协议的两根线相比,减少了线的长度与重量。

2.1.2 易扩展

基于UART/SCI(Universal Asynchronous Receiver-Transmitter /
Serial Communication Interface,通用异步收发器/串行通信接口),所以支持了大部分的半导体零件,从硬件角度讲,LIN网络的扩展,基本没有额外成本。

2.1.3 速率一般,不高

最高位速率限制在20kbps,物理层受电磁干扰的影响,速率不能太快。

2.2 网络形态

在这里插入图片描述
LIN通信以主从模式设计。
车载开发中,主机节点一般就是MCU了,从机节点例如:车门、氛围灯、雨刷器、大灯等。
在这里插入图片描述
主机节点包含主机任务、从机任务。从机节点只包含从机任务。

2.3 架构分层

在这里插入图片描述
简单画了个图,严格来说不是太准确哈,不过也够用,先简单这么理解吧,有个印象就行。
学过OSI七层网络模型的,这个就比较简单了,不想赘述。

三、应用层 4 大功能

1. 配置
2. 识别
3. 信号处理
4. 诊断

3.1 配置

LIN网络使用主从模式,通信时无外乎三种场景:
主 --> 从
从 --> 主
从1 --> 从2
不论是哪种,先要解决一个问题,当前信息持有者想发数据出去,要发给谁呢?对方怎么知道这个数据是发给它的?
简单理解,配置就是给各个节点打个标记,如下:
在这里插入图片描述
各个节点有了身份证以后,数据的收发就能知道目标了。
用LIN规范的话来说,上面的标号叫 NAD,也叫逻辑节点。
应用层NAD 会对应协议层的 PID(1对1或1对多)。这个关系,表示当前的NAD节点可以处理哪些信号。PID是啥后面会讲。

配置功能是指LIN 的主机节点能自动地给所有逻辑节点选择配置项,消除NAD 和PID 分配中存在的冲突,使网络正常工作。配置功能是确保各节点协调运作的内部功能,包含分配NAD、分配PID 等服务。

分配NAD、分配PID 等,使用 LIN 产品代号做为标识,判断是给哪个节点配置。
配置的目的是:给某个节点配置,它所能够处理哪种信号(哪种帧),业务分角色承担。

3.2 识别(查询功能)

识别是主机向从机查询信息用的。默认定义了两个:
识别ID = 0时,查从机的LIN产品ID
识别ID = 1时,查从机的序列号
识别ID = 32-63,用户可以自定义。

3.3 信号处理

信号处理是不经过传输层的,也就是上面说的架构图不准确的地方。
应用层直接与协议层交互,信号通过协议层的“信号携带帧”通信。

3.4 诊断

诊断功能是LIN 网络作为一个整体对外呈现的可配置、可访问的属性。应用于汽车维修,查找故障的场景。
在这里插入图片描述

四、协议层介绍

4.1 帧的结构

帧在总线上的传输
在这里插入图片描述
Header由主机任务发出,Response由从机任务回复。

Break:标识一帧的开始
Synch:调整从机节点的数据位速率与主机节点一致。主机的时钟需要高精度,从机节点时钟不需要高精度。
Protected identifier:受保护的ID段(8位) = 帧ID(6位) + 校验位(2位),就是上面提到的PID。
PID 标识了帧的类别和目的地。
在这里插入图片描述
Data1~DataN:一个Data块 占一个字节,包括两种数据类型:信号和诊断消息。
一个PID对应的数据可能包含一个或多个信号。
Checksum:校验用

4.2 帧的类型

4.2.1 信号携带帧——无条件帧(Unconditional Frame)

发送方:主机任务,单一发送节点
发送时机:帧时隙
应答方:从机任务
总线上一旦有帧头发送出去,必须有从机任务作应答(即无条件发送应答),这个无条件更多的是指从机状态是否变化。无论从机状态变没变,只要收到了无条件帧就要回复。

4.2.2 信号携带帧——事件触发帧(Event Triggered Frame)

使用场景:主机节点查询各从机节点的状态是否发生变化时使用
事件触发帧,与无条帧不同的是:当从机节点状态没有发生变化时,不用回复帧。只有在状态发生变化时,才回复。降低了总线的负载。
举例:当前4个车门全是关闭状态,想检测哪个车门开了。需要轮询四个车门,查询开关状态:

  1. 如果使用无条件帧的话,主机节点下发一次查询,即使当前4个车门全部都是关的,每个车门都要回复一下,总线上就跑了4帧回复数据。如果4个车门一直没有变化,这种情况将持续下去。
  2. 如果使用事件触发帧,主机节点下发一次查询,当前4个车门全部都是关的,无变化,那么就不会回复。事件触发帧允许一帧中只有帧头无应答;,此时总线只有一帧主机节点下发的事件触发帧,还只有帧头。这样在轮询过程中,此种场景下,将大大减少总线的负载。

适用的场景:从机节点状态变化频率低,主机节点需要查询状态变化时。

当多个从机节点,同时回复时,会产生冲突,为了解决冲突,引用了【与“事件触发帧”相关联的无条件帧】这个概念:

4.2.2.1 与“事件触发帧”相关联的无条件帧:

比如,原来用一个无条件帧A 来询问前左车门的开关状态,
现在,主机使用一个事件触发帧B 来查询前左车门车门状态。
那么,对于前左车门来说,原来用于回复无条件帧A的那段数据,和现在用于回复这个事件触发帧B的数据,它们是一样的。(即事件触发帧的应答部分是与其关联的无条件帧所提供的应答的。)
此时我们称这个“无条件帧A”,是与B关联的无条件帧。

4.2.2.2 事件触发帧发生冲突时,如何解决?

考虑场景:主机发送一事件触发帧查询4个车门的开关情况,此时左前和右前两个从机都开门了,信号发生变化,同时应答,发生冲突了。
此时,LIN启用冲突解决调度表,按序给4个车门发送【与“事件触发帧”相关联的无条件帧】,4个车门再依次重新进行应答(类似轮询)。

可能存在疑问,这不就退回为无条件帧的轮询了吗?

不一样。原因如下:

  • 一、事件触发帧的针对场景是,从机节点发生变化频率较低时,也意味着 事件触发帧发生冲突的概率是比较低的。
  • 二、通过使用冲突解决调度表来处理冲突,LIN协议能够在保持简单性的同时,提供一定的可靠性和鲁棒性。
  • 三、可能会牺牲一点点效率,以确保数据的正确传输。但是它只进行一次对与冲突相关的节点的轮询,当解决了此次的冲突后,就会恢复正常工作。与无条件帧轮询方案相比,这点小牺牲可以忽略不计了。

需要轮询的从机节点越多时,从机节点变化的频率越低,事件触发帧的优势越明显。

4.2.3 信号携带帧——偶发帧(Sporadic Frame)

发送方:只能主机节点
发送时机:同一帧时隙,自身发生变化时
当主机有多个因素,或状态发生变化时,按照事先定义好的优先级进行发送应答(使用主机的从机任务)。优先级高的先发送应答,优先级低的,在下一个偶发帧的帧头到来时,才能发送。

事件触发帧主要侧重于从机节点的变化信息发送,当从机节点发生某种特定事件时,会触发帧的发送,以传递该事件的相关信息。而偶发帧则主要侧重于主机节点的变化,当主机节点状态发生变化时,会发送偶发帧来通知其他节点。

4.2.4 诊断帧(Diagnostic Frame)

包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(Master Request Frame,
MRF),帧ID = 0x3C,应答部分的发布节点为主机节点;从机应答帧(Slave Response Frame,SRF),帧ID = 0x3D,
应答部分的发布节点为从机节点。

4.2.5 保留帧(Reserved Frame)

备用

4.3 调度表

在这里插入图片描述

五、硬件

5.1 物理介质

总线介质:市场上主流使用铜线。
总线收发器也是针对铜线的。

全双工:两根线,同时收发数据
半双工:一根线,同一时刻只能收或发,同一时刻是单向的
单工:一根线,一直是单向的,只能收或发。

协议控制器是基于UART/SCI 的通信控制器,工作方式是半双工(LIN一根线)

5.2 EMI 控制

EMI 指电磁干扰

压摆率(Slew Rate),也称为转换速率,是衡量放大器对信号变化速度适应能力的参数。它指的是运算放大器输出电压的转换速率,单位通常有V/s、V/ms和V/μs三种。压摆率的大小反映了放大器对信号变化速度的快慢,即放大器在单位时间内输出电压的变化量。

在处理高速信号时,压摆率是一个非常重要的指标。如果放大器的压摆率不够高,那么当输入信号变化速度较快时,放大器可能无法及时跟随输入信号的变化,导致输出信号失真。因此,对于需要处理高速信号的放大器,压摆率是一个需要特别关注的参数。

位速率、压摆率越高,EMI越显著。
LIN协议可以控制EMI:协议控制器可以控制位速率,总线收发器可以控制压摆率。
20Kbps的最高位速率限制,是数据速率与EMI 权衡的结果。

ESD(Electrostatic Discharge)指静电危害


缩写全称解释
LDFLIN Description FileLIN描述文件
NCFNode Capability File节点性能文件

本文完。


觉得有用的话,动动你发财的小手,点个赞,^(∩_∩)^ 谢谢~

这篇关于一文梳理LIN协议与应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773210

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景