汽车电子系统总线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所示。
汽车电子系统总线LIN通信协议精要_第1张图片

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

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

汽车电子系统总线LIN通信协议精要_第2张图片

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

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

LIN信号的物理层

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

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

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

汽车电子系统总线LIN通信协议精要_第3张图片

图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所示。

汽车电子系统总线LIN通信协议精要_第4张图片

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

LIN通信协议

LIN的主机和从机

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

  • 帧头总是由主机任务发出。帧头包括:一个帧间隔段、一个同步段,以及一个帧标识号
  • 从机任务接收帧头,作出解析,决定:发送应答数据?接收来自主机或别的从机的应答数据?不回复?
    汽车电子系统总线LIN通信协议精要_第5张图片
图x LIN主机和从机的交互

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

LIN报文帧结构

LIN报文分为帧头和应答两个阶段,其中,由主机发送的帧头内部包含:同步间隔段、同步段和受保护ID段;主机发送或者从机发送的应答段内部包含:最多8个字节的数据段和校验和。
汽车电子系统总线LIN通信协议精要_第6张图片

图x LIN通信帧结构

还需要注意的是,帧头和应答中间是允许有一定的时间间隔的,用于给从机任务捕获和解析帧头,并准备应答数据留足的时间。如图x所示。
汽车电子系统总线LIN通信协议精要_第7张图片

图x LIN通信帧的响应延迟

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

同步间隔段(Break field)

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

汽车电子系统总线LIN通信协议精要_第8张图片

图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的字节。
汽车电子系统总线LIN通信协议精要_第9张图片

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

受保护的帧ID中包含两部分:6个比特的ID编号和2比特的奇偶校验位。
汽车电子系统总线LIN通信协议精要_第10张图片

图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个字节。
汽车电子系统总线LIN通信协议精要_第11张图片

图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总线的波形

汽车电子系统总线LIN通信协议精要_第12张图片

图x LIN总线上的波形

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

参考文献

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

你可能感兴趣的:(YTM32,嵌入式系统,单片机,汽车电子,LIN协议)