LIN接口
LIN接口
- 前言
- LIN接口
- 简介
- 帧格式
- 同步间隔段 (Break Field)
- 同步段 (Sync Byte Field)
- 受保护ID段 (Protected Identifier Field)
- 数据段 (Data Field)
- 校验和段 (Checksum Field)
- 帧在总线上的传输波形
- 帧类型
- 无条件帧
- 事件触发帧
- 偶发帧
- 诊断帧
- 保留帧
- 错误类型
- IP 设计
- 结构框图
- 接口设计
- 上板验证
前言
本文参考标准《LIN Specification Package-Revision 2.2A》。
LIN接口
简介
LIN是一种基于UART/SCI传输协议的总线标准,作为一种串行通信协议,其具有低成本的特点,常用于传输速度要求不高的场合中。
LIN总线的主要特点如下:
- LIN总线的工作模式为单主多从模式,工作时无需仲栽机制;
- LIN 协议基于UART/SCI接口标准,兼容多数微控制器,具有成本低的特点;
- 为单总线结构,物理层建设成本极低,符合ISO9141国际标准;
- 总线电平分为显性和隐性,其中‘0’为显性电平,“1’为隐性电平;
- 总线最大的传送速率为20Kbps。
帧格式
LIN总线上的电平分为显性和隐形,显性表示为‘0’,隐性表示为‘1’,信号在总线上传输的过程中进行“线与”逻辑,即只要有节点发送显性电平,总线电平就表现为显性;只有当所有节点均不发送信息或者均发送隐性电平时,总线才表现为隐性。
一个完整的帧包括同步间隔段、同步段、受保护的ID段、数据段和校验和段五部分。其中,同步间隔段、同步段和受保护的ID段共同构成了帧头,数据段和校验和段构成了应答。完整的帧结构如图1所示,其中,在帧与帧之间以及帧内部分布的空闲隐性电平称为帧间隔、应答间隔、字节间间隔。
同步间隔段 (Break Field)
同步间隔段是由连续的至少13位显性电平构成的同步间隔和至少为1位隐性的同步间隔间隔段组成。由于总线空闲期间和帧中的所有间隔均为隐性电平,帧的其他段中不会发送出超过连续的9个显性电平,所以当出现连续13位的显性电平即标志帧的传输开始。
同步段 (Sync Byte Field)
除同步间隔段以外,帧中其他段都是以字节域的形式进行传输的。一个字节域包括显性的起始位、8位数据位和隐性的停止位。在数据位的传输过程中,都是先发送最低有效位(LSB),最后发送最高有效位(MSB)。
LIN的同步段的内容是固定的字节0x55,即二进制01010101。自同步功能在同步段中实现。
在LIN通信中,传输波特率由主机节点进行控制,因此从机节点不需要采用高精度的时钟,可大幅降低组网成本。主机节点和从机节点存在的时钟偏差可由同步段来进行调整,具体方式为以主机节点为基准,从机节点调整自身的时钟分频值。调整方法为,从机节点接收到主机节点发送的同步段之后,通过计算主机节点传输1位比特所需的时间调整自身位速率。计算公式如下:
1位时间 - (第7位的下降时刻起始位的下降时刻) / 8
通过计算,可得出主机节点传输1位比特所需的时间,即位速率。
受保护ID段 (Protected Identifier Field)
受保护的I段由6位帧ID和2位奇偶校验位组成,ID0~ID5为帧ID,ID6和ID7为奇偶校验位。
帧ID共6位,所以帧ID的个数为2^6=64,其地址范围为0x00~0x3F。帧的类别和接收目标都是在帧ID中规定的。从机任务只有对帧头中的I进行判断后才能决定下一步是接收帧响应还是发送帧响应,亦或者是忽略帧头不作响应。奇偶校验位是通过6位用户配置的帧ID计算出来的,计算方法如下所示:
P0 = ID0 ^ ID1 ^ ID2 ^ ID4
P1=~ (ID1 ^ ID3 ^ ID4 ^ ID5)
其中ID0~ID3表示节点的地址,所有LIN 网络中最多含有2^4=16个节点。ID4 和ID5用于控制数据的字节数,数据长度和ID4、ID5的对应关系如下表所示:
ID5 | ID4 | 数据长度/字节 |
---|---|---|
0 | 0 | 2 |
0 | 1 | 2 |
1 | 0 | 4 |
1 | 1 | 8 |
ID0~ID3表示帧类型,帧类型详细说明见帧类型章节。
数据段 (Data Field)
数据段一般包括2、4、8三种字节长度,最先发送的字节为 data0,后发送字节编号依次递加。数据字节之间具有一定长度的时间间隔。
校验和段 (Checksum Field)
在 LIN 协议中,校验和分为标准型校验(LIN1.x版本)和增强型校验和(LIN2.x版本)。
- 标准型校验和只校验数据段各字节;
- 增强型校验和校验数据段的字节和受保护的ID段。
校验和的原理是发送方将各字节进行二进制累加运算,累加和始终为8位二进制数,若有进位,则将进位加至最低位,然后再进行下一字节的累加,最后将累加和按位取反作为校验和。
校验和计算方法举例:
帧在总线上的传输波形
帧在总线上的传输分为两种情况:
- 主机节点作为发布节点,发送帧头和帧响应;
- 从机节点作为发布节点,即帧头由主机节点发送,帧响应由从机节点发送。
两种传输方式下总线上的传输波形如下图所示。
帧类型
LIN协议中规定了以下几种帧类型:
- 无条件帧(Unconditional Frame)
- 事件触发帧(Event Triggered Frame)
- 偶发帧(Sporadic Frame)
- 诊断帧(Diagnostic Frame)
- 保留帧(Reserved Frame)
无条件帧
无条件帧的特点是发布节点的帧头发送出去后,无论接收帧头的节点自身状态是否发生变化,必须无条件的对帧头发送应答。无条件帧的ID范围为0x00~0x3B。下图演示了一种无条件帧的传输过程。图中举例所用的ID是随机的,协议中并没有强制的要求。
- ID=0x30:从节点1向主节点发布信息,常用于从节点向主节点报告自身状态。
- ID=0x31:主节点向从节点1和2发布信息,常用于主节点向从节点广播。
- ID=0x32:从节点2向从节点1发布信息,常用于从节点间的通信。
事件触发帧
事件触发帧用于主机节点查询从机节点的状态是否发生变化,当多个从机发生变化需要发布信息时,需要通过进度表来进行仲裁。
当主机任务频繁的去轮询各从机节点时,会占用较大的带宽,所以引入了事件触发帧的概念。事件触发帧允许只有帧头而没有帧响应,也就是无从机任务进行响应;同时也允许多个节点对帧头作出响应,这种情况不应视为错误,此时主机节点需要重新进行轮询。典型的引用是用于检测车门的开关状态。下图描述了事件触发帧的几种情况。
偶发帧
偶发帧是主节点处理“时间”信息的一种方法,偶发帧的帧响应只能够由主机节点发送。主机节点是否发送偶发帧是根据与之关联的无条件帧的状态决定的:当所有的帧信号都没有变化时,则在该帧时隙内无响应;当主机节点探测到某一个帧内的信号发生了变化,则主机节点发送偶发帧;当多个帧中的数据发生了改变,则根据事先规定好的优先级进行仲裁后依次发送偶发帧。偶发帧大大增加了通信的灵活性。
诊断帧
诊断帧使用特定的标识符,包括主机请求帧和从机应答帧两种,主机请求帧的帧ID为0x3C,从机应答帧的帧I为0x3D。诊断帧的作用包括配置、识别和诊断。诊断帧的帧响应中数据字节长度为8,校验和为标准型校验和。
保留帧
ID等于0x3E 和 0x3F的两个帧称为保留帧,用作以后扩展。
错误类型
- ID奇偶校验错误、未知ID;
- 数据校验和错误;
- 从机响应超时;
- 发送与回读的数据不同。
IP 设计
结构框图
接口设计
上板验证
相关文章:
LIN接口
LIN接口 前言LIN接口简介帧格式同步间隔段 (Break Field)同步段 (Sync Byte Field)受保护ID段 (Protected Identifier Field)数据段 (Data Field)校验和段 (Checksum Field) 帧在总线上的传输波形帧类型无条件帧事件触发帧偶发帧诊断帧保留帧 错误类型 IP 设计结构框图接口设计…...
【蓝桥杯每日一题】3.16
🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 目录 3.9 高精度算法 一、高精度加法 题目链接: 题目描述: 解题思路: 解题代码: 二、高精度减法 题目链接: 题目描述&…...
prometheus-helm的使用
1、部署Prometheus监控平台 1、下载安装Prometheus (当前集群版本1.26.3) git clone https://github.com/prometheus-operator/kube-prometheus.git -b release-0.12 安装: cd kube-prometheus/ 创建命名空间和crd: kubectl …...
时间序列分析的军火库:AutoTS、Darts、Kats、PaddleTS、tfts 和 FancyTS解析
引言:时间序列分析的现代挑战 时间序列分析在多个领域中扮演着关键角色,包括工程、金融、气象、工业预测等。随着开源工具的快速发展,开发者可以通过多种库快速实现时间序列预测与分析。本文将对 AutoTS、Darts、Kats、PaddleTS、tfts 和 FancyTS 六大主流库进行详细解析,…...
TLSR8355F128芯片特色解析
TLSR8355F128 是泰凌微推出的一款高性能、低功耗的无线物联网芯片,具有以下特色: 丰富的协议支持:支持 2.4GHz 私有协议。这使得该芯片能够广泛应用于各种特殊的物联网场景,实现不同设备之间的互联互通。强大的处理能力ÿ…...
基于分类算法的学习失败预警(上)
文章目录 前言1.数据预处理1.1数据探索1.2数值化处理1.3空值填充1.4添加标签1.5特征筛选1.6数据集类别平衡1.7划分数据集1.8训练集类平衡1.9标准化 2.模型选择2.1建立模型2.2模型调参2.2.1遍历调参2.2.2网格搜索 结语 前言 本次案例通过对现有数据分析,采用如下图所…...
首页性能优化
首页性能提升是前端优化中的核心任务之一,因为首页是用户访问的第一入口,其加载速度和交互体验直接影响用户的留存率和转化率。 1. 性能瓶颈分析 在优化之前,首先需要通过工具分析首页的性能瓶颈。常用的工具包括: Chrome DevTo…...
整形在内存中的存储(例题逐个解析)
目录 一.相关知识点 1.截断: 2.整形提升: 3.如何 截断,整型提升? (1)负数 (2)正数 (3)无符号整型,高位补0 注意:提升后得到的…...
python中多重继承和泛型 作为模板让子类实现具体业务逻辑
示例代码: T TypeVar("T", bound"NoSQLBaseDocument")# 与 MongoDB 数据库交互的基础文档类 class NoSQLBaseDocument(BaseModel, Generic[T], ABC):id: UUID4 Field(default_factoryuuid.uuid4)def __eq__(self, value: object) -> bool…...
2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会
自 2023 年首届香港 Web3 嘉年华成功举办以来,这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日,第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…...
ERC-6909 最小多代币标准
ERC-6909 Token标准是 ERC-1155 Token标准的一种简化替代方案。 ERC-1155 标准引入了一种多Token接口,使得单个智能合约能够结合可替代的和不可替代的Token(即,ERC20 和 ERC721)。 ERC-1155 解决了多个挑战,例如降…...
07-单链表-单链表基本操作
题目 来源 826. 单链表 - AcWing题库 思路 详见代码,主要思想就是用数组来模拟链表的创建。数组其实跟静态链表等价,由于动态链表动态new对于大数据太过于耗时,因此采用数组的方式。那数组如何起到链表的效果?用下标来索引。 …...
FFMPEG录制远程监控摄像头MP4
手绘效果图 上图是录制功能的HTML前端页面,录制功能和解码视频放在一起。录制功能关键是录制(开始录制按钮)、停止录像按钮。当点击“录制”的时候则会开始录制MP4文件, 当点击停止的时候就会停止录制MP4。经过录制后,则会生成MP4,并放到我的RV1126的/tm…...
Spring Boot 的自动装配
Spring Boot 的自动装配(Auto Configuration)是其核心特性之一,通过智能化的条件判断和配置加载机制,极大简化了传统 Spring 应用的配置复杂度。其原理和实现过程可概括为以下几个关键点: 一、核心触发机制:…...
Python中的“泛型”和“多重继承”
“泛型”和“多重继承”属于 Python 的语法规则。 1. 泛型(Generic[T]) 通俗解释 泛型允许你在定义类或函数时,不指定具体的类型,而是使用一个“占位符”(通常命名为 T)。这就像你制作一个盒子࿰…...
【C++】多参数构造函数使用explict的情形
在 C 中,“无非默认值” 指的是:构造函数的参数没有设置默认值(即所有参数都必须显式传递)。这个说法通常出现在讨论多参数构造函数是否需要使用 explicit 关键字时。 具体解释 多参数构造函数: • 如果一个构造函数有…...
C# Unity 唐老狮 No.10 模拟面试题
本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho C# 1. 内存中,堆和…...
使用DeepSeek,优化斐波那契数函数,效果相当不错
下面这段代码定义了一个递归函数 fibonacci,用于计算第 n 个斐波那契数。 def fibonacci(n):if n < 1:return nelse:return fibonacci(n - 1) fibonacci(n - 2)虽然代码逻辑正确,但其性能较差,尤其是对于较大的 n 值,其复杂度…...
【GPT入门】第22课 langchain LCEL介绍
【GPT入门】第22课 langchain LCEL介绍 1. LCEL介绍与特点2. 原生API与LCEL的对比2. 简单demo 1. LCEL介绍与特点 LCEL 即 LangChain Expression Language,是 LangChain 推出的一种声明式语言,用于简化和优化在 LangChain 框架内构建复杂链和应用的过程…...
市场监管总局升级12315平台 专项整治四大市场顽疾保障消费安全
大湾区经济网湾区财经讯,在今天下午举行的国务院新闻办新闻发布会上,市场监管总局负责人表示,将开展食品非法添加、假冒伪劣、价格欺诈、虚假宣传四大领域专项整治行动,并强化缺陷产品召回监管,全面保障消费者“安全消…...
FineBI6.x进阶篇-可视化专题
参考 参考:https://edu.fanruan.com/video/526 如何选择合适的图表:https://help.fanruan.com/dvg/doc-view-3.html 参考:https://help.fanruan.com/finebi/ 什么是GLAD原则:https://help.fanruan.com/dvg/doc-view-81.html …...
一对一交友App源码开发新趋势:精准匹配与多元盈利模式解析
一、 营商环境分析:机遇与挑战并存 近年来,随着移动互联网的普及和用户需求的不断升级,一对一交友App市场呈现出蓬勃发展的态势。然而,机遇与挑战并存,开发者需要审时度势,才能在激烈的市场竞争中脱颖而出…...
算法基础篇(蓝桥杯常考点)
算法基础篇 前言 算法内容还有搜索,数据结构(进阶),动态规划和图论 数学那个的话大家也知道比较难,放在最后讲 这期包含的内容可以看目录 模拟那个算法的话就是题说什么写什么,就不再分入目录中了 注意事…...
【Pandas】pandas Series cat
# Pandas2.2 Series ## Accessors |方法|描述| |-|:-------| |Series.str|对 Series 中的字符串元素进行矢量化字符串操作| |Series.cat|用于处理分类数据(Categorical Data)的属性| ### pandas.Series.cat pandas.Series.cat 是用于处理分类数据&am…...
Python的类和对象(3)
1、类的继承 父类:被继承 子类:继承者 – 可以使用父类的所有属性和方法、大大简化代码。 语法:在类名字后加上(继承的类名字) # 定义类 -- 父类 class Car:# 定义类属性wheel "有车轮"engine "有引…...
C语言修饰符汇总详解
在C语言中,修饰符(或称类型限定符)是用于修饰数据类型的关键字,可以改变变量或类型的性质和行为。它们通常用来控制存储类型、符号、大小、对齐、访问权限等。C语言中的修饰符主要可以分为以下几类: 类型修饰符存储类别修饰符常量和易变修饰符以下是C语言中所有修饰符的详…...
猎豹移动(Cheetah Mobile)
本文来自腾讯元宝 公司背景与发展历程 成立与早期定位 猎豹移动成立于2010年11月,由金山安全与可牛影像合并而成,初期以移动安全工具和清理软件为核心业务。其明星产品包括《猎豹清理大师》(Clean Master)和《猎豹浏览器》&…...
VLN 论文精读(二)VL-Nav: Real-time Vision-Language Navigation with Spatial Reasoning
这篇笔记用来描述2025年发表在arxiv上的一篇有关VLN领域的论文,由纽约州立大学布法罗分校和卡耐基梅隆联合发布。其主要创新点在于:像素级的视觉-语意特征、低算力移动设备部署、30Hz控制实时性、VLM模型的zero-shot ; 整个导航流程大概如下…...
优选算法系列(2.滑动窗口 _ 上)
目录 解法⼀(暴力求解)(不会超时,可以通过):一.长度最小的子数组(medium) 题目链接209. 长度最小的子数组 - 力扣(LeetCode) 解法: 代码&#…...
RK3568 android11 基于PN7160的NXP NFC移植
一,概述 1. 模块概述 PN7160专为在各种系统实现快速集成而设计,支持所有符合NFC Forum的模式,包括Android和Linux驱动程序,并支持实时操作系统和无操作系统的应用(PN7160不符合EMVCo)。嵌入式NFC固件减少了对主机交互的需求,并最大限度缩小了代码尺寸,使设计更轻松。…...
【网工第6版】第1章 计算机网络概论
目录 1计算机网络形成和发展 ■计算机网络 ■我国互联网发展 ■计算机网路分类 ■计算机网络应用 2 OSI和TCP/IP参考模型 ■网络分层的意义 ■OSI参考模型 ■TCP/IP参考模型 ■TCP/IP参考模型协议 3 数据封装与解封过程 ■封装 ■解封 1计算机网络形成和发展 ■计…...
【嵌入式】keil5安装(同时兼容C51和STM32)
最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。 1、下载安装包 Keil P…...
每日一题--进程与协程的区别
进程是什么? 进程(Process) 是操作系统进行 资源分配和调度的基本单位,代表一个正在执行的程序实例。每个进程拥有独立的虚拟地址空间、代码、数据和系统资源(如文件句柄、网络端口等)。进程之间通过 IPC&…...
网络安全运维应急响应与溯源分析实战案例
在日常运维过程中,网络安全事件时有发生,快速响应和精准溯源是保障业务稳定运行的关键。本文将通过一个实际案例,详细解析从发现问题到溯源定位,再到最终解决的完整流程。 目录 一、事件背景 二、事件发现 1. 监控告警触发 2…...
leetcode29. 两数相除-medium
1 题目:两数相除 官方标定难度:中 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。…...
深海300米的低温环境中的BMS优化方法
在深海300米的低温环境中,采用扩展卡尔曼滤波(EKF)结合温度补偿模型实现电池管理系统(BMS)的荷电状态(SOC)精确估计,需通过以下步骤实现: 1. 低温电池模型建立 1.1 电池…...
高主频GPU+RTX4090:AI生图性能优化超150%
概述:消费级高主频CPU搭配 RTX 4090显卡可以显著提高AI生图的性能,相比于企业级CPU具有更大的吞吐量和更优的成本效益。 引言:在AI图像生成过程中,CPU与GPU的协同效应对系统的整体性能至关重要。测试表明,与RTX 4090显…...
OpenCV 图像双线性插值
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 双线性插值是一种 二维插值方法,用于计算 栅格(Grid) 或 像素点 之间的插值值。它主要用于 图像缩放、旋转、变换 等操作,以在新像素位置估算灰度值或颜色值。 如上图所示,假设存在一个二维离散函数(如图像)…...
OpenCV计算摄影学(23)艺术化风格化处理函数stylization()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 风格化的目的是生成不以照片写实为目标的多种多样数字图像效果。边缘感知滤波器是风格化处理的理想选择,因为它们能够弱化低对比度区…...
《我的Python觉醒之路》之转型Python(十五)——控制流
[今天是2025年3月17日,继续复习第一章节、第二章节的内容 ] 《我的Python觉醒之路》之转型Python(十四)——控制流...
内存管理
一.什么是内存管理呢? 我们可以来看一下这个图,我们来了解一下这些地方都存的是什么。 数据段就是存放全局和静态变量的,代码段是存放常量的。 栈 局部变量:在函数内部定义的变量,其存储空间在栈上分配。当函数被调用时…...
学习threejs,使用MeshLambertMaterial漫反射材质
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshLambertMaterial…...
P41-指针进阶1、2
1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.指针和数组面试题的解析 指针的主题,我们在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念 1.指针就是个…...
旅游类小程序界面设计
产品概述 艾啦游是一款互联网旅游类小程序,致力于国内精品旅游,以及拥有自由行、专属热榜单、出行攻略等诸多功能,汇聚了许多国内的人气景点,与诸多城市的酒店也保持合作,打造一体式旅行服务,更有不断上新…...
探索具身多模态大模型:开发、数据集和未来方向(下)
25年2月来自广东人工智能和数字经济实验室、深圳大学、巴黎理工学院和巴黎高等师范学院、中山大学的论文“Exploring Embodied Multimodal Large Models: Development, Datasets, and Future Directions”。 近年来,具身多模态大模型 (EMLM) 因其在复杂的现实环境中…...
14 结构体
结构体 结构体是什么? 在前面我们学习过基础的数据类型int float char 等,都只能用来表示基础的数据类型,那么要怎么来表示复杂的数据类型呢? 比如学生信息: 学号姓名性别年龄总分数100maye男18666101椰汁女19555 …...
如何配置 Docker 以实现无需 sudo 使用
1. 背景知识:为什么需要 sudo? Docker 是一个容器化平台,其核心组件包括: Docker 守护进程(dockerd):负责管理容器的创建、运行和销毁。Docker CLI:用户通过命令行工具(…...
嵌入式开发之STM32学习笔记day06
基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格…...
openocd C#桌面工具
文章目录 简介一、主界面二、文件列表三、rtl介绍四、虚拟示波器1、画线2、画点3、合并显示4、测试代码简介 基于廉价9.9包邮的DAP-Link,在IAR和Keil中下载和调试都没毛病。 可是不能单独使用。单独烧录固件用不了,也不能同jlink一样打印日志和显示波形。 openocd开源工具能…...
goland小问题报错及解决
报错信息: cannot use rw (variable of type *populateResponse) as ResponseWriter value in argument to t.fh.ServeHTTP: *populateResponse does not implement ResponseWriter (missing method Fprintf) cannot use rw (variable of type *http2responseWrite…...