汽车电子系统总线LIN通信协议精要

汽车电子系统总线LIN通信协议精要

文章目录

  • 汽车电子系统总线LIN通信协议精要
    • 简介
    • LIN信号的物理层
      • LIN总线收发器
    • LIN通信协议
      • LIN的主机和从机
      • LIN报文帧结构
        • 同步间隔段(Break field)
        • 同步段(Sync field)
        • 受保护的帧ID(Protected Identifier field)
        • 应答数据段(Data field)
        • 校验和段(Checksum field)
      • LIN总线的波形
    • 参考文献

简介

本地互联网络 LIN(Local Interconnect Network)总线协议,是基于UART/SCI(Universal Asynchronous Receiver-Transmitter/SerialCommunication Interface通用异步收发器/串行通信接口)的低成本串行通信协议。在车载电子系统中,相对于CAN总线而言,LIN总线协议较为简单,对单片机的要求也并不高,基本的串口就可以实现,成本较低,可作为CAN总线的辅助总线。LIN总线广泛应用于车门、车窗、车灯以及中控锁等车身控制领域。

表x LIN总线协议大事记
时间事件
1998年10月在德国 Baden Baden 召开的汽车电子会议上,LIN 总线的设想首次被提出。
1999年LIN 联盟成立。最初的成员有:奥迪、宝马、克莱斯勒、摩托罗拉、博世、大众和沃尔沃。
2000年LIN 联盟开始接收第一批成员。
2001年第一辆使用 LIN 总线汽车下线。
2002年LIN 规范 V.1.3 版本发布。
2003年LIN 规范 V.2.0 版本发布。
2004年LIN 总线一致性测试规范发布。
2006年LIN 标准规范 V.2.1 版发布。
2010年LIN 规范包Specification Package Revision 2.2A 发布。

最新的标准:

  • ISO 17897-2016/2019
  • SAE J2602-1_202110: LIN Network for Vehicle Applications - SAE International
    • ISO 17987-1,Part1: General information and use case definition
    • ISO 17987-2,Part2: Transport protocol and network layer services
    • ISO 17987-3,Part3: Protocol specification
    • ISO 17987-4,Part4: Electrical Physical Layer (EPL) specification 12V/24V
    • ISO 17987-5,Part5: Application Programmers Interface (API)
    • ISO 17987-6,Part6: Protocol conformance test specification
    • ISO 17987-7,Part7: Electrical Physical Layer (EPL) conformance test specification
    • ISO 17987-8,Part 8: Electrical physical layer (EPL) specification: LIN over DC powerline (DC-LIN)

LIN总线有如下特点:

  1. 单主机同多从机通信,无需仲裁机制,所有通信过程由主机主导;
  2. 低成本,基于通用UART接口,几乎所有的微控制器都具备LIN必需的硬件;
  3. 单线信号传输,通信协议简单;
  4. LIN具有可预测的电磁兼容性能,为了限制EMC的强度,LIN协议规定了最大传输速率为20kbps;
  5. LIN总线提供信号的配置、处理、识别和诊断功能。

LIN总线在汽车中一般不独立存在,通常与上层CAN网络相连,形成CAN-LIN网关节点,通常汽车电子中整车厂会规定该“网关节点”的控制器归属。如图x所示。
在这里插入图片描述

图x CAN-LIN节点在CAN网络中的角色

LIN网络内部包括LIN Master Node(主机节点)和LIN Slave Node(从机节点),其中,主机节点可以运行一个主机任务和一个从机任务,而从机节点上仅能运行一个从机任务。整个网络中,必须包含一个主机节点,和最多15个从机节点。如图x所示。

在这里插入图片描述

图x LIN网络中的主机和从机

注意:LIN协议对任务进行建模,约定主机任务仅为发送帧首,从机节点处理应答数据(发送或接收)。所以,从机节点仅实现发送数据和接收数据的操作,故仅运行从机任务;主机节点的主机任务发送帧首后,还可交由主机节点的从机任务发送或者接收应答任务。其中,主机任务发送的帧ID,就包含了数据应由哪个节点发送上线、哪个节点捕获数据的约定。由此,还可以设想一种只有主机任务的主机节点,但此时意义不大,主机任务协调网络中的各节点,最终都是为了将本机的数据部署至网络节点或从网络节点中取数,如果将主机节点的主机任务同自己的从机任务分类,就需要这两个任务做好同步,如此,还不如放在同一个节点上方便管理。

LIN信号的物理层

LIN总线仅使用一根信号线,信号线上传输逻辑电平信号,其中“0”为显性电平、“1”为隐性电平(显隐性与CAN总线是相同的)。传输信号在总线上实行“线-与”:

  • 当总线有至少一个节点发送显性电平时,总线呈现显性电平;
  • 所有节点均发送隐性电平或者不发送信息时,总线呈隐性电平,即显性电平起着主导作用。

实际上,在使用LIN总线时,相对于微控制器上集成的LIN协议控制器(LIN通信引擎外设,例如LINFlexD),还需要搭配一个LIN收发器芯片,将LIN协议控制器的Tx和Rx信号,同LIN总线上的显性信号和隐形信号进行转换。如图x所示。

在这里插入图片描述

图x LIN协议控制器和和LIN收发器
### LIN协议控制器

协议控制器主体是一个基于UART/SCI的通信控制器,以半双工方式工作。协议控制器既可以使用专用模块实现,也可以用“UART/SCI+定时器”实现:

  • 发送数据时,LIN协议控制器把数据以UART的数据格式(8数据位,1停止位,无校验位)送往LIN总线收发器;
  • 接收数据时,LIN总线收发器捕获来自总线的串行信号流(显性隐性数据),转换成UART的数据格式,送回LIN协议控制器。

LIN协议控制器需要产生和识别帧的同步间隔段。同步间隔段包含一段长度至少为13位的低电平,再加上一段长度至少为1位的高电平的同步间隔隔离段。产生和识别同步间隔段的机制,虽然增加了硬件设计的复杂度,但是从接收方的角度看,这样做能把同步间隔段与普通的数据字节区别开,确保了同步信息的准确性。

协议控制器需要能够发送和捕获唤醒信号:

  • 协议控制器要能执行本地唤醒(Local Wakeup)。当需要唤醒总线时,协议控制器通过总线收发器向 LIN 总线送出唤醒信号。
  • 协议控制器要能识别总线唤醒(Bus Wakeup)。当收到来自 LIN 总线的唤醒信号时,协议控制器能够正确动作,进入规定的通信状态。

LIN总线收发器

总线收发器的主体是一个双向工作的电平转换器,完成协议控制器的高-低电平与LIN总线的隐性-显性电平之间的转换。

LIN规范规定:LIN总线的电平,以总线收发器的供电作为参考电平。为了克服电源波动和参考点漂移的影响,LIN规范要求总线收发器要能承受±11.5%的电源波动和参考点电平波动,并且能承受电源和参考点之间8%的电位差波动。收发双方的电平鉴别门限也设置了较大的冗余度。

总线收发器还包括一些附加的功能,例如总线阻抗匹配、压摆率(Slew-rate)控制等。

此外,LIN规范要求总线收发器具备这样一种特性:本地节点掉电或工作异常时,不能影响总线上其他节点工作。

一个典型的总线收发器应用电路,如图x所示。

在这里插入图片描述

图x EVB-YTM32B1M-Q144开发板上的LIN收发器电路

LIN通信协议

LIN的主机和从机

LIN报文帧由帧头(Hearder)与应答(Response)两部分组成。如下图所示,传输过程中:

  • 帧头总是由主机任务发出。帧头包括:一个帧间隔段、一个同步段,以及一个帧标识号
  • 从机任务接收帧头,作出解析,决定:发送应答数据?接收来自主机或别的从机的应答数据?不回复?
    在这里插入图片描述
图x LIN主机和从机的交互

注意,图x中描述的是主机任务和从机任务,而不是节点。通常情况下,从机节点中仅执行从机任务,根据主机任务发出的帧头做出响应,发送数据和接收数据。但主机节点是包含主机任务和从机任务,主机节点把发送帧头的工作归到主机任务上,把数据通信的工作归到从机任务上。即,当主机节点向从机节点送数时,先由主机节点的主机任务发出帧头,再由主机节点的从机任务送出数据;当主机节点从从机节点要数时,先由主机节点的主机任务发出帧头,再由主机节点的从机任务从总线上捕获数据。由此,也可以将主机任务别称为“帧头任务”,对应从机任务为“数据任务”。

LIN报文帧结构

LIN报文分为帧头和应答两个阶段,其中,由主机发送的帧头内部包含:同步间隔段、同步段和受保护ID段;主机发送或者从机发送的应答段内部包含:最多8个字节的数据段和校验和。
在这里插入图片描述

图x LIN通信帧结构

还需要注意的是,帧头和应答中间是允许有一定的时间间隔的,用于给从机任务捕获和解析帧头,并准备应答数据留足的时间。如图x所示。
在这里插入图片描述

图x LIN通信帧的响应延迟

在LINFlexD引擎中,还可以由软件配置从帧头结束到应答开始中间的间隔时间容限,判定超时事件。

同步间隔段(Break field)

注意 图x LIN通信帧结构 中,帧的所有间隙均为隐性电平“1”,总线空闲时,也是保持隐性电平“1”的状态,并且LIN通信帧中,除了同步间隔段外,任何其它字段都不会出现多于9位的显性电平。同步间隔段由至少13位(通常选择13位或14位)显性电平组成,用于将不同的通信帧相互分隔开来。同步间隔段就用来表示一帧的开始。另外,同步间隔段的间隔符(Break Delimiter) 至少为1位隐性电平。如图x所示。

在这里插入图片描述

图x 同步间隔段与同步间隔段隔离符
同步段(Sync field)

在介绍同步段之前,先介绍一下字节段结构(Byte Field Structure)的概念,字节段结构包括:1位起始位(Start Bit,显性)+ 8位数据位 + 1位停止位(Stop Bit,隐性),这是一种标准UART数据传输格式。在 LIN 的一帧当中,除了同步间隔段,后面的各段都是通过字节域的格式传输的。 LIN 帧中的数据传输都是先发送LSB(Least Significant Bit,最低有效位),最后发送 MSB(Most Significant Bit,最高有效位)。LIN总线使用字节0x55(01010101b)进行同步,在从机节点上可以采用非高精度时钟,如果存在偏差,可以通过同步段来调整。同步段中的就是一个值为0x55的字节。
在这里插入图片描述

图x LIN通信帧中的同步段
受保护的帧ID(Protected Identifier field)

受保护的帧ID中包含两部分:6个比特的ID编号和2比特的奇偶校验位。
在这里插入图片描述

图x LIN通信帧中的PID段

其中,帧ID的取值范围为0x00~0x3F,共64个,帧ID标识了帧的类别,从机任务会根据帧头ID作出反应(接收/发送/忽略应答)。其中,校验位P0和P1的计算方式如下:

P0 =       ID0 xor ID1 xor ID2 xor ID4
P1 = not ( ID1 xor ID3 xor ID4 xor ID5 )

特别注意,LIN总线的ID同CAN总线相似,标识的是消息的类型,并不是从机节点的地址(例如I2C总线)。LIN总线根据帧ID的不同,将报文分为信号携带帧诊断帧保留帧。此为应用层的约定,此处暂不展开。

应答数据段(Data field)

数据段包含1-8个字节。LIN2.x规定,可传输的LIN字节数为2,4,8,并不是1-8内任意一个数字。一般而言,车内会选择统一字节数,最常用的是每帧传递8个字节。
在这里插入图片描述

图x LIN通信帧中的数据段

与CAN总线(包括DLC字段)不同,LIN协议中并没有规定数据长度的信息,数据内容和长度均由应用系统的设计者根据帧ID提前设计。总线上的数据以广播形式发出,任何节点都可收到,但并非对每个节点有用。具体到发布与接听是由哪个节点完成,这取决于应用层的配置。通常情况下,帧的应答,总线上只存在一个发布节点,否则会出现错误。(事件触发帧例外,它可能出现0,1和多个发布节点。)

校验和段(Checksum field)

效验和段是为了对帧传输的内容进行效验。校验和段的1个字节的值,是将本帧数据段和PID段的值按照8位求和,再取反得到的。

效验分为标准型效验与增强型效验:

  • 经典款校验和(Classical Checksum)仅计算数据段的部分,适用于LIN v1.3及更早期的版本。
  • 增强型校验和(Enhanced Checksum)计算数据段和PID部分,适用于LIN v2.0及以后的版本。

采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种效验和。

在YTM32B1ME微控制器的手册中描述LINFlexD发送帧头时,可以在寄存器LINFlexD_BIDR[CCS]中选择,将发送或者检测增强型校验和还是经典款校验和。

LIN总线的波形

在这里插入图片描述

图x LIN总线上的波形

上图展示了LIN总线的通讯方式,可以看出,无论什么时候帧头都是由主机节点发布,当主机节点要发布数据时,整个帧全部由主机节点发送。当从机节点要发布数据时,帧头部分由主机节点发布,应答部分由从机节点发布,这样,其余节点都能收到完整的报文。所以,LIN总线的通讯都是由主机节点发起,只要合理的规定好每个节点的配置,这样就不会存在总线冲突的情况(事件触发帧冲突时采用冲突解决进度表)。

参考文献

  • 《一文看懂LIN总线》,https://zhuanlan.zhihu.com/p/357967013,Demu,发布于 2021-03-18 09:38
  • YTM32B1ME0x_RM.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uview组件库的安装

更多的请查看官方文档uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 (uviewui.com) // 如果您的根目录没有package.json文件的话,请先执行如下命令: // npm init -y 安装 npm install uview-ui2.0.36 // 更新 // npm update uvie…

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI快速处理图片 1 IntelliJ IDEA 之API插件介绍 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供…

Ubuntu20.04安装Nvidia显卡驱动、CUDA11.3、CUDNN、TensorRT、Anaconda、ROS/ROS2

1.更换国内源 打开终端,输入指令: wget http://fishros.com/install -O fishros && . fishros 选择【5】更换系统源,后面还有一个要输入的选项,选择【0】退出,就会自动换源。 2.安装NVIDIA驱动 这一步最痛心…

MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、字符…

9.20号作业实现钟表

1.widget.h #include <QPainter> //画家 #include <QTimerEvent> #include <QTime> #include<QTimer> //定时器类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Wid…

iOS 使用陀螺仪实现裸眼3d效果

直接上完整代码 // // BannerView.m // Test // // Created by liubo on 2023/7/20. //#import "LB3DBannerView.h" #import <Masonry/Masonry.h> #import <CoreMotion/CoreMotion.h>interface LB3DBannerView (){CGFloat maxOffset;CGFloat lastGra…

基于GBDT+Tkinter+穷举法按排队时间预测最优路径的智能导航推荐系统——机器学习算法应用(含Python工程源码)+数据集(四)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境Scikit-learnt 模块实现1. 数据预处理2. 客流预测3. 百度地图API调用4. GUI界面设计5. 路径规划6. 智能推荐 系统测试1. 训练准确率2. 测试效果3. 程序应用 相关其它博客工程源代码下载其它资料下载 …

eslint代码校验及修复(Vue项目快速上手)

项目中配置eslint校验 文章目录 项目中配置eslint校验前言1. webpack5搭建 Vue项目如下🔗(可以查看)2. eslint+prettier Vue项目如下🔗(暂时未更新)一、什么是 ESLint?二、为什么要使用 ESLint?三、如何在 Vue 项目中集成 ESLint?3.1.安装依赖代码如下:如下图所示3…

PASCAL VOC2012数据集详细介绍

PASCAL VOC2012数据集详细介绍 0、数据集介绍2、Pascal VOC数据集目标类别3、 数据集下载与目录结构4、目标检测任务5、语义分割任务6、实例分割任务7、类别索引与名称对应关系 0、数据集介绍 2、Pascal VOC数据集目标类别 在Pascal VOC数据集中主要包含20个目标类别&#xff…

STM32 OLED屏幕显示详解

目录 1.OLED介绍 2.OLED如何显示一个点&#xff1f; 内存管理​编辑​编辑 页地址模式 水平地址模式​编辑 垂直地址模式 ​编辑 3.OLED显示图片 用到的库函数&#xff1a; 向OLED写命令的封装&#xff1a; 显示图片代码示例&#xff1a; 1.OLED介绍 OLED是有机发光…

代码随想录算法训练营第三十六天| 435. 无重叠区间 763.划分字母区间 56. 合并区间

今天的三道题目&#xff0c;都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01; 还是属于那种&#xff0c;做过了也就会了&#xff0c;没做过就很难想出来。 不过大…

macos (M2芯片)搭建flutter环境

安装的版本3.13.4、电脑上没有安装过android studio、安装过brew 1.在终端运行sudo softwareupdate --install-rosetta --agree-to-license&#xff0c;下图展示安装成功的效果 2.下载以下安装包来获取最新的 stable Flutter SDK 3.解压&#xff0c;⚠️注意下载安装sdk的包名…

利用fiddler正向代理前端请求到本地后端

前景&#xff1a;在实际开发测试环境中&#xff0c;&#xff08;前后端均已上线到测试服务器或前端以上线而后端还在开发中)。在测试过程中&#xff08;前端页面点击&#xff0c;功能测试&#xff09;发现了bug或异常点。 正常排查问题可能是先利用浏览器检查工具查看接口的返回…

Redis 面试题

Redis 面试题 Q:Redis有哪些优势&#xff1f; 速度快&#xff0c;因为数据存在内存中支持丰富数据类型&#xff0c;支持string&#xff0c;list&#xff0c;set&#xff0c;sorted set&#xff0c;hash支持事务&#xff0c;操作都是原子性&#xff0c;所谓的原子性就是对数据…

交换机端口镜像详解

交换机端口镜像是一种网络监控技术&#xff0c;它允许将一个或多个交换机端口的网络流量复制并重定向到另一个端口上&#xff0c;以便进行流量监测、分析和记录。通过端口镜像&#xff0c;管理员可以实时查看特定端口上的流量&#xff0c;以进行网络故障排查、安全审计和性能优…

Vue.js vs React:哪一个更适合你的项目?

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

[NLP] LLM---<训练中文LLama2(五)>对SFT后的LLama2进行DPO训练

当前关于LLM的共识 大型语言模型&#xff08;LLM&#xff09;使 NLP 中微调模型的过程变得更加复杂。最初&#xff0c;当 ChatGPT 等模型首次出现时&#xff0c;最主要的方法是先训练奖励模型&#xff0c;然后优化 LLM 策略。从人类反馈中强化学习&#xff08;RLHF&#xff09…

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理 package com.example.demo.controller;import com.example.demo.service.IDemoService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w…

【JAVA】idea初步使用+JDK详细配置

1、官方下载idea 官网&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE (1)、下载教程 我下载没截屏&#xff0c;详细教程请看 原文&#xff1a;手把手教你JDKIDEA的安装和环境配置_idea配置jdk_快到锅里来呀的博客-CSDN博客 2、启动项目时候需要配置J…

Spring事件机制之ApplicationEvent

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…