0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初学者如何快速学习LIN 总线(应用/分类/LIN报文/帧结构)

454398 来源:面包板社区 作者: 心机之花 2020-10-22 12:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

LIN总线是目前常见的一种A类网络协议。LIN的全称为Local Interconnect Network。LIN主要功能是为CAN总线网络提供辅助功能,应用场合有智能传感节点、自动车窗节点等。目前最新的LIN协议是LIN2.2,制定于2010年。LIN的一大优点是成本低,但其最大传输速率为20Kbps。建议的通信速率如下,低速2400bps,中速9600bps,高速19200bps。根据OSI参考模型,LIN总线仅规范了数据链路层和物理层。

LIN的部分应用LIN的特点如下:

1.采用单主多从的组网方式,无CAN总线那样的仲裁机制,最多可连接16个节点(1主15从)。

2.对硬件要求简单,仅需UART/SCI 接口,辅以简单驱动程序便可实现 LIN 协议。故几乎所有的MCU均支持LIN。

3.不需要单独的晶振,便能完成主、从节点的同步,硬件成本大幅降低。

4.仅使用一根信号线便可完成信息的传输,即所谓的单总线设备。

5.传输速率最高可达20Kbps,符合A类网络标准,满足车身控制需要。

6.LIN 网络中新节点的加入,对网络中其他原有节点的软硬件设计不会造成影响。

LIN网络主从节点的功能

LIN网络中的节点任务分为主机任务和从机任务两类。其中,主机任务只在主机节点上运行,而从机任务在主机节点和从机节点上均可运行。也就是说,主机节点可以实现主机任务和从机任务。

A.主机任务主要执行以下功能:

1.定义总线上的通信速率。(同步场?待考)

2.发送报文帧头,包含同步间隔场、同步场和标识符场三个部分。

3.监控总线通信,通过校验和确定数据正确性与否。

4.使从机进入唤醒或睡眠状态,并响应从机的唤醒要求。

B.从机任务既可运行于主机又可运行于从机,它主要完成以下功能:

1.等待主机任务发送的同步间隔,使从机与主机于同步场中获得同步。

2.分析标识符场,若与自己相关,则接收或发送数据,若与自己无关则什么都不做。

3.检查和发送校验和。

4.接受主机任务的唤醒和睡眠请求。

综上,主机报文的标识符能触发与之对应的不同从机之间的通信。

LIN报文的帧结构

LIN 总线上具有“显性”和“隐性”两种互补的逻辑电平。其中,显性电平(参考地电压)是逻辑 0,隐性电平(电源电压)是逻辑1。

LIN在总线上以具有固定格式的报文进行传递,但是这种报文数据段的长度是可以调整的。LIN网络中的所有节点(包括主机节点)都具有从机任务,当接到主机任务的报文信息时,它们中的某一个要对报文做出响应。

报文头仅可以由主机节点发出

LIN总线的一帧主要由两部分组成,即报文头(Header)和报文响应(Response)。其中,报文头是由一个主机节点的主机任务发出的,而报文响应(以下简称响应)是由一个主机节点或从机节点的从机任务发出的。其中报文头由同步间隔场(最小13个显性位)、同步场(1个字节,数据不变,0x55)、和PID场(1个字节)三部分组成;报文响应由2/4/8个字节的数据场、校验和场(1个字节)所组成。报文头和响应之间有一个帧内空间分隔,最小空间为0。

LIN的帧结构(英文版)

LIN的帧结构(彩图版)

LIN的帧结构

示波器采出来的LIN波形,能看出0x00和0x55

LIN 的字节场格式就是通常的“SCI”或“UART”串行数据格式(N81编码)。即每个字节场的长度是10个位定时(BIT TIME):1bit起始位+8bits数据位+1bit停止位。

起始位(START BIT)是一个“显性”位,它标志着字节场的开始。接着是8个数据位,首先发送最低位。停止位(STOP BIT)是一个“隐性”位,它标志着字节场的结束。LIN报文帧中的同步场、标识符场、数据场、校验和场的格式都符合上述字节场的格式。

下面对几个重要的部分详细说明。

同步间隔场

间隔场是唯一一个不符合字节场格式的场。从节点需要检测到至少连续11个显性位才认为是间隔信号。

同步场

一个字节,即0x55。

LIN的被保护标识符场(PID场)

PID场定义了报文的内容和长度。如图,PID场分为6个标识符位和2个ID奇偶校验位。6个标识符位我们称之为ID。如果加上2个奇偶校验位就变成PID了,即Protected ID。6个标识符位中,标识符后两位为数据长度控制位。总的来看,ID的范围是0-0x3F。注意是ID,不是PID。要区分开。这一段要讲的是我们需要将LIN的ID与PID分清楚,不能混淆。

上图中的ID4和ID5为数据长度控制位(ID4是低位)。值为00或10时,数据长度为2个字节。值为01时,数据长度为4个字节。值为11时,数据长度为8个字节。在实际应用中,我并没有发现ID4和ID5与真实的数据长度有什么关系。接触到的LIN报文均为8个字节的数据。

P0和P1为奇偶校验位,算法如下:

#include #include int main(){ short p0=0,p1=0; short LIN_ID=0x22,PID=0x00; p0 = (LIN_ID & 0x01) ^ ((LIN_ID & 0x02) >> 1) ^ ((LIN_ID & 0x04) >> 2) ^ ((LIN_ID & 0x10) >> 4); //按位异或 p0 = p0 & 0x01; p1 = ~(((LIN_ID & 0x02) >> 1) ^ ((LIN_ID & 0x08) >> 3) ^ ((LIN_ID & 0x10) >> 4) ^ ((LIN_ID & 0x20) >> 5)); p1 = p1 & 0x01; PID = (p1 << 7) | (p0 << 6) | LIN_ID;        printf("p0=%#x,p1=%#x,PID=%#X\n",p0,p1,PID);        system("pause");        return 0;}

所谓奇偶校验就是在发送的每一个字节后都加上一位,使得每个字节中1的个数为奇数个或偶数个。接收方通过计算数据中1的个数是否满足奇偶性来确定数据是否有错。这个不用背,用的时候可以查表。

数据场

数据场主要需注意每个字节先传输的是最低位。即如果某一信号长度超过1个字节,采用低位在前的方式发送(小端)。

校验和场(checksum)

校验和场是数据场所有字节的和的反码。所有数据字节的和的补码,与校验和字节相加所得的和必须是0xFF。

算法(Classical):累加所有字节。对每次加和进行判断,如果和大于0xFF,那么就把高八位的1,与低八位相加,其实就是低八位加1(翻转八位和)。得到最后的结果后,取其反码,我们就得到了最后的校验和。参照下图理解一下。

如何算出LIN的校验和场

讲解一下上面的图,0x4A+0x55 = 0x9F这个没有疑问,再加0x93 = 0x132,很明显,超过了0xFF,分解为0x1和0x32,突出的高8位删除,加到低8位中,0x1+0x32=0x33。再加0xE5 = 0x118,又超了,0x1+0x18=0x19。取反(Not),0xE6。

练习:下图是一些LIN总线数据,以最后一组为例,2个0xFF之和为0x1FE,处理后仍然为0xFF。故8个0xFF加和之后仍为0xFF,取反码为0x00。

一组LIN报文校验和场的两种类型

校验和场通常会有两种不同的类型,英文简称为CST(Checksum Type)。一种是classic checksum(LIN 1.3),一种是enhanced checksum(LIN 2.0及以上)。上文讲到的校验和场算法实际上是classic的,即只对Data(数据场)进行校验和的计算。Enhanced Checksum在计算时需要把PID也加入到计算队列中。

9600波特率下,ChecksumType为classic

下图是CST(校验和类型)为Enhanced时的报文形态。此时校验和的计算需要包含前面的PID字节。举例,下图中第一帧报文,ID为0x02,PID通过查表(参考文献5)可得到对应的PID是0x42,0x42的反码是0xBD。原理上一样,只不过计算校验和的时候,需要把PID也放进去。

PLIN-USB收到的LIN报文,很详细

这里有个知识点一定要注意:标识符为0x3C和0x3D的帧只能使用经典校验,这两组帧是LIN的诊断帧。即LIN 2.0及以上才有的诊断帧,需要使用经典校验,不能将PID也加入到校验计算序列。自己写LIN驱动的小伙伴要格外注意。

用Kvaser收到的第一个LIN报文

LIN总线的布线组网

LIN网络的节点数量不应超过16个,否则节点增加将减少网络阻抗,会导致环境条件变差,从而不能进行正常的无错误通讯。BOSCH汽车电气与电子中这样描述,“LIN总线规范中没有规定总线允许的最大节点数。......但实际应用中,为了保证数据传输的可靠性,总线允许的最大节点数为16个。“

实验证明(该实验需要考证),每增加一个节点,就会减少约3%的阻抗;网络中的通讯导线长度应小于或等于40m;主机节点的总线端电阻典型值是1kΩ,从机节点是30 kΩ。

LIN总线的应用

LIN总线上可以传输的两类数据,信号报文和诊断报文。

诊断报文的输送是在具有两个保留标识符的帧里面完成的。数据场的判读取决于数据场本身以及通讯节点的状态。

LIN具有调度表机制。调度表负责调度网络各报文发送的顺序。调度表在网络系统设计阶段确定。调度表使得LIN通信具有可预测性。主任务可以拥有多个调度表,并在不同的调度表之间切换。

LIN的描述文件叫做LDF文件,可以设置报文帧,信号和调度表等。

LIN帧的分类

LIN帧按照帧类型来分类可以分为普通帧、事件触发帧、零星帧、诊断帧、用户自定义帧和保留帧。

普通帧的标识符(ID)为0到0x3B。主任务发出报文头,一个任务响应,一个或多个任务接收。

事件触发帧的标识符为0到0x3B。事件触发帧必须有一个独立的ID,该ID可以与多个普通帧相关联。在事件触发帧时隙内发送帧头,只有当相关联的无条件帧内有信号被更新时,才发送帧响应。帧响应的第一个数据字节等于标识符,即响应最多可以传输7个字节的数据;如果没有帧响应,帧头被忽略。帧响应可由多个节点发送,发生冲突时切换到“冲突解决调度表”,之后再切换回到原来的调度表。

零星帧表示共用一个时隙、在需要时才被发送的一组普通帧。标识符为0到0x3B。

诊断帧用来传输诊断或配置信息,一般包含8个字节数据。0x3C为主请求帧,0x3D为从响应帧(注意校验方式是classic!)。诊断响应基于ISO15765-2传输层和ISO14229应用层。

诊断帧

用户自定义帧标识符为0x3E,可以传输任何用户自定义的信息。

保留帧的标识符为0x3F。略。

关于LIN的版本

LIN2.0新增加了下列属性:“增强校验和(Enhanced)”、“重新配置和诊断”、“波特率自动探测”、“响应错误状态监控”。LIN2.0从机节点无法与LIN1.3主机节点操作。

关于睡眠

主节点可以发送一帧ID为0x3c,第一个字节为零的主请求帧来使处于工作状态的从节点进入睡眠。这帧报文称为睡眠指令。

从节点在接到睡眠指令之后,也可以选择不进入睡眠状态而继续工作,这根据应用层协议而定。

当总线空闲4到10秒的时候,所有从节点必须进入睡眠状态。(注:空闲的定义是没有显性位和隐性位之间的转换。)

关于唤醒

在一个处于睡眠状态的LIN网络中,任何一个节点都可以发送唤醒信号。

唤醒信号是一个250us到5ms的显性电平。

问题:这里的唤醒信号可否按照恒润的教程理解为在20Kbit/s波特率下的0x0F,或在1Kbit/s波特率下的0x0F?

当从节点发出唤醒信号之后150ms,主节点仍未发送报头时,从节点可以再次发送唤醒信号。当连续发送了3次唤醒信号之后如果主节点仍未发送报头,从节点要等待1.5秒以后才可以再次发送唤醒信号。

关于LIN的基础知识先介绍到这里。推荐一个帖子:《白话LIN总线》,很生动形象!

白话 LIN总线, 晚会开始啦 - 汽车电子 - 电子工程世界-论坛

www.LIN-SUBBUS.org上的消息显示称,LIN2.2A为最后一版非ISO的LIN总线标准。

LIN总线最新的specification(规范)将会是ISO 17987 Part 1-7 中的一部分。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    146

    文章

    2050

    浏览量

    135492
  • LIN总线
    +关注

    关注

    19

    文章

    118

    浏览量

    29070
  • 网络协议
    +关注

    关注

    3

    文章

    276

    浏览量

    22845
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    虹科分享 | 如何精准判断LIN总线从节点是否在线?

    今天给大家分享一个比较实用的方法:如何精准地判断LIN总线上的从节点是否与主节点通讯。也许这时你会觉得奇怪:“我直接用诊断电脑读取故障码不就知道了?LIN总线的从节点当前如果不能通讯,
    的头像 发表于 04-16 11:40 89次阅读
    虹科分享 | 如何精准判断<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>从节点是否在线?

    工业级 LIN 收发器、LIN 模块优选:德国 Lipowsky LIN 线产品介绍

    本文将全面解析 Lipowsky 的 LIN 线产品,深入介绍虹科 Baby-LIN 系列 LIN 收发器与 LIN 模块的技术特点、型号选型及行业应用,为汽车电子研发、测试人员提供专
    的头像 发表于 02-10 17:09 254次阅读
    工业级 <b class='flag-5'>LIN</b> 收发器、<b class='flag-5'>LIN</b> 模块优选:德国 Lipowsky <b class='flag-5'>LIN</b> 线产品介绍

    探索TJA1028:集成稳压器的LIN收发器的卓越性能与应用

    探索TJA1028:集成稳压器的LIN收发器的卓越性能与应用 在汽车电子和工业控制领域,Local Interconnect Network (LIN) 总线系统以其低成本、简单易用的特点,成为
    的头像 发表于 12-24 17:05 589次阅读

    LIN总线相关知识

    )包含主任务和从任务; (3)从节点(slave)只包含从任务; (4)主任务(master)决定总线上的报文,从任务发送数据; (5)LIN网络中的所有节点(包括主机节点)都具有从机任务,当接到主机任务的
    发表于 12-10 08:14

    LIN协议电平以及结构

    1、LIN电平 (1)LIN 总线上具有“显性”和“隐性”两种互补的逻辑电平。显性电平(参考地电压)是逻辑 0,隐性电平(电源电压)是逻辑1。 (2)隐形电平和显性电平的收发时,通过预先设定压差
    发表于 12-10 07:05

    瑞萨RL78F24系列微控制器中的LIN总线主机配置方法

    在汽车电子领域,LIN总线是RL78F24系列微控制器的核心外设之一。为简化LIN通信的配置流程,瑞萨电子提供了专用的RLIN3配置工具,该工具能够高效定义LIN信号
    的头像 发表于 12-09 17:48 3337次阅读
    瑞萨RL78F24系列微控制器中的<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>主机配置方法

    FPGA初学者求助

    Vivado2025.1配置MIG时出现报错 大家好,我是一名研一的学生,同时也是一名FPGA初学者,最近在使用vivado2025.1配置MIG的时候遇到了问题,具体问题如下: 我这个mig的配置
    发表于 12-07 11:43

    创新!匹配任意现场供电的LIN测试工具

    。国产主控8通道以太网转CANFD接口卡CANFDNET-800H在汽车电子、工厂自动化等领域的设备测试与开发中,LIN总线因其低成本、低速率、主从架构的特点,被
    的头像 发表于 12-04 11:45 417次阅读
    创新!匹配任意现场供电的<b class='flag-5'>LIN</b>测试工具

    瑞萨RL78F24系列微控制器中的LIN总线从机配置方法

    在汽车电子领域,LIN总线是RL78F24系列微控制器的核心外设之一。为简化LIN通信的配置流程,瑞萨电子提供了专用的RLIN3配置工具,该工具能够高效定义LIN信号
    的头像 发表于 12-02 14:11 5284次阅读
    瑞萨RL78F24系列微控制器中的<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>从机配置方法

    为什么LIN总线端口必须选用ESD二极管?

    LIN总线端口浪涌静电防护,东沃FAE工程师推荐型号:DWESD1LINLIN总线专用,AEC-Q101认证,低电容(典型30pF),防护
    的头像 发表于 09-19 11:51 691次阅读
    为什么<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>端口必须选用ESD二极管?

    LIN总线端口ESD二极管核心选型要点

    LIN总线是一种低成本、单线结构的车载网络,主要用于与传感器、执行器等设备的通信。
    的头像 发表于 09-08 15:44 3.4w次阅读
    <b class='flag-5'>LIN</b><b class='flag-5'>总线</b>端口ESD二极管核心选型要点

    虹科技术分享 | LIN总线译码功能与LIN控制交流发电机(二)

    上一期,我们详细分享了LIN总线结构、译码方法、休眠与唤醒过程。那如何借助串行译码分析总线故障?我们能否从译码结果中,进一步提取LIN线发
    的头像 发表于 08-07 11:28 1086次阅读
    虹科技术分享 | <b class='flag-5'>LIN</b><b class='flag-5'>总线</b>译码功能与<b class='flag-5'>LIN</b>控制交流发电机(二)

    LIN协议:汽车电子中的隐形功臣

    率的串行通信总线,属于局部互联网。LIN由汽车行业开发,用作经济高效的子总线系统,其属于CAN的下层网络,是SAE规范的汽车A类网络,适用于对总线性能要求不高的车
    的头像 发表于 07-01 11:40 2087次阅读
    <b class='flag-5'>LIN</b>协议:汽车电子中的隐形功臣

    告别摸索!TSMaster官方最全学习路径整理

    与测试。但对于初学者来说,面对TSMaster丰富的功能模块,往往不知从何入手。本文将为您梳理一条清晰的TSMaster学习路线,帮助您系统掌握这一工具。1认识TSM
    的头像 发表于 06-13 20:06 1464次阅读
    告别摸索!TSMaster官方最全<b class='flag-5'>学习</b>路径整理