LIN Bus

概述


 

随着汽车内电子设备的增多,市场上对于成本低于 CAN 的总线的需求日益强烈,不同的车厂相继开发各自的串行通信(UART/SCI)协议,以在低速和对性能要求不高的场合取代CAN。由于不同车厂定义的协议兼容性的问题,在 1998 年由欧洲五大车厂(BMW, Volkswagen Group, Audi Group, Volvo Cars, Mercedes-Benz)成立联合工作组,由 Volcano Automotive Group 和 Motorola 提供技术支持,开发一种定位于车身电子领域传感器(Sensors)和执行器(Actuators)组网的串行通信总线,要求该总线系统的协议和时序控制尽可能简单,即使低端MCU没有专用通信单元也可以实现基于该总线的通信。这种总线即为本文所介绍的 LIN 总线。

LIN(Local Interconnect Network)总线是在汽车内广泛应用的串行通信协议,它的第一个完整版本 V1.3 发布于 2002 年,在 2016 年LIN总线被正式列为国际标准(ISO 17987)。LIN,顾名(Local)思义,指总线上所有设备基本处于相的物理空间(例如车门),由LIN总线构建的区域子系统(Cluster)再经由ECU(网关等)接入到上层的CAN总线。

LIN适用于节点数目小于等于 16 个,数据速率 20Kbps 以内的应用场合。通过LIN总线可以简单而快速地组网,总线上节点设备分为一个主机和多个从机,主机通常为接入到上层网络的 ECU ,而从机为执行器、智能传感器或包括LIN硬件接口的开关等。主机控制LIN总线上的整个通信过程,在通信过程中从机时钟必须与主机时钟同步。LIN总线拓扑通常为线型,即所有节电设备均通过单线连在一起。

LIN总线作为低成本的串行通信方案,适合汽车内远距离节点间的低速通信,它同样也适用于工业控制等场合。LINCAN 总线功能/成本互补,综合运用两者,可构造汽车内层次分级的网络架构。简言之,LIN总线相当于汽车上可靠性较高的串口。

 

标准化


 ↵

历史沿革

1998/10,在德国召开的汽车电子会议上 LIN 总线的设想首次提出;
1999/07V1.0 初版发行;
2002/12V1.3 发布,主要对物理层进行修改,提高了节点之间的兼容性;
2003/09V2.0 发布,支持配置和诊断的标准化,规定了节点性能文件等;
2006/11V2.1 发布,澄清了部分内容,修正了配置部分,将传输层和诊断部分独立成章;
2010/12V2.2 发布,修正部分内容,弱化位采样规范;
2010/12V2.2A 发布,修正唤醒信号定义;
2016/08,升级为国际标准 ISO 17987 Part 1-7

另,SAE J2602 标准为基于 LIN V2.0 的美国版本。

 ↵

标准文本

 ↵

2016 年发布的 ISO 17987 Part 1-7 标准中,其各部分内容如下:

  • ISO/CD 17987-1 General information and use case definition
  • ISO/CD 17987-2 Transport protocol and network layer services
  • ISO/CD 17987-3 Protocol specification
  • ISO/CD 17987-4 Electrical Physical Layer (EPL) specification 12V/24V
  • ISO/CD 17987-5 Application Programmers Interface (API)
  • ISO/CD 17987-6 Protocol conformance test specification
  • ISO/CD 17987-7 Electrical Physical Layer (EPL) conformance test specification

LIN供应商 ID 的分配任务已由先前的 CiA(CAN in Automation),转由 SAE(Society of Automotive Engineers)负责管理。

 ↵

开发流程

 ↵

LIN协议不但定义总线通信的标准,还定义统一的开发流程(Workflow)以简单快速地组建网络。如图1所示,在此开发流程中的核心组件为描述网络特征的 LDFLIN Description File),LDF定义LIN网络的所有通信特征,通信主机基于LDF可以自动生成通信过程的所有软件组件。同时,LDF可以为测试测量工具提供分析LIN网络所必须的信息。

LIN Configuration Language Specification 定义了创建LDF的过程,创建语法相当简单,既可以手动或通过软件工具自动生成LDF。自 LIN V2.0 规范起,增补的节点统一描述语言可以清晰地说明商用节点(Off-the-Shelf Nodes)设备的通信特征,通过这种 LIN Node Capability Language 描述的节点特征文件称 NCFNode Capability File),而LIN子网(Cluster)中所有节点NCF正是创建系统LDF的必要条件。

lin_workflow

图1. LIN 开发流程

 

应用特点


 ↵

LIN总线的特征包括:

  • 基于 UART/SCI 的半双工通信,低成本硬件接口;
  • 单主机,多达 15 个从机,主机和从机数量遵循LIN协议推荐,以达到符合兼容性的响应;
  • 典型的LIN总线中节点数目小于等于 12 个;在非标准设计中,节点数目可以大于 16 个;
  • SNPD(Slave Node Position Detection)允许在上电后分配节点设备的地址;
  • 通信速度 19.2Kbps @40m,在LIN v2.2中通信速度达 20Kbps(与EMC性能权衡的结果,在非标准设计中,速度到 100Kbps 也不成问题喔);
  • 传输介质为非屏蔽单根电子线;
  • 确定性时延(Guarantee Lateny Time);
  • 短消息传输,数据长度可选1, 2, 4, 8 字节;
  • 基于时钟同步的广播接收,从机无需晶振或陶瓷谐振器;
  • 数据校验和错误检测功能;
  • 可侦测错误节点;
  • 信号电压参考电池电压,在 12V 左右

综上,总结出LIN总线的优点如下:

  • 方便使用,市场上有标准接口的模块;
  • 相比 CAN 总线(及其它总线)设备成本低;
  • 线束更加精简;
  • 足够可靠的通信机制;
  • 应用扩展简单;
  • 不需要授权费用

在低速对带宽要求不高的场合,LIN具有较高的成本优势,是比CAN更好的替代选择,但LIN并不能完全取代CAN总线(速度+可靠性)。一般地,LIN总线主要应用在汽车内对安全和整车性能影响不大的子系统,比如车门窗控制、雨刮器、空调、座椅调整、照明灯等。图2示例LIN总线在车顶/雨刮区域的应用,在本应用中 Central ECU 是主机,包括车后视镜、车门开启器、雨/光传感器和刮雨器四个从机。主机同时作为 Gateway 模块接入到底盘CAN、车身CAN和诊断CAN。

lin_application

图2. LIN总线主机和从机节点举例

 ↵

通信机制


 ↵

网络拓扑

 ↵

LIN总线的拓扑为单线总线,总线上包括单个主机和多个从机,主机包括主机任务(Master Task)和从机任务(Slave Task),从机节点只包括从机任务,如图3所示。

lin_top

图3. LIN总线拓扑图

主机/从机

 ↵

LIN总线是基于主从模式的通信系统。在LIN总线上仅允许有一个主机,主机控制总线上所有通信过程,从机只有在主机许可的下才能向总线上发送消息。主机通过向总线上发送请求(帧头,Frame Header),相关的从机或主机本身据此帧头发送应答(Response),请求和应答构成LIN总线的帧(Frame),如下图4所示。

lin_master_slave_task

图4. LIN主机任务 & 从机任务

在LIN总线上,主机控制子网内每条消息的传输过程,这种总线访问方式称为授权令牌(Delegated Token)。授权令牌方式的优点是它可以避免消息传输过程的冲突竞争,因为完全由主机协调控制每条消息的应答请求。LIN总线主机可以根据预设好的进度表(Schedule)规划总线上的数据传输。授权令牌总线访问方式因此被归类为确定性总线访问方式。授权令牌访问方式的缺点有点:首先,如果主机失效,则整个总线通信随即失效,因此该方式不适合安全要求高的应用;其次,由于每次通信过程均由主机控制,该方式不适合事件驱动型(Event-driven)通信,从机无法自动获取总线访问权以发送数据。为弥补这点缺憾,LIN协议中增补额外的帧类型可以不按授权令牌方式发送消息。LIN总线共有种帧类型:无条件帧、事件触发帧、偶发帧和诊断帧。

主机任务包括:

  • 调度总线上帧的传输次序
  • 监测数据,处理错误
  • 提供总线上标准参考时钟
  • 接收从机节点发出的总线唤醒命令

从机任务包括:

  • 发送应答
  • 接收应答
  • 忽略应答

 ↵

通信调度

 ↵

由于没有通信控制器,LIN总线协议在微控制器以软件组件形式实现的。主机和从机分别对应主机任务和从机任务,以实现总线通信的过程。简言之,总线上所有节点均包括接受和发送消息的从机任务,而主机则包括额外的主机任务来协调总线上消息发送和总线访问权限。

在总线开始工作时,主机随即启动主机任务,周期性地执行进度表(Schedule)规定的消息发送程序。表1示意LIN总线进度表的内容,在进度表中包括各项进程的消息 PID(Message Header)和启动时间。从机任务是总线上的节点根据 LDF 定义的特性,响应帧头规定的任务,任务包括发送应答、接收应答或忽略应答。

lin_schedule

表1. LIN总线进度表

在消息调度中,协议为单条消息定义 Slot 的概念,Slot持续的时间必须大于帧头(Frame Header)和消息应答(Response)的时间以保证消息传送完毕。单个帧总是在同一个Slot内传输完的。考虑到收发器性能的影响,LIN协议规定单个消息传输时间有  40% 裕量,即帧的最小持续时间为其典型持续时间的 1.4 倍,如图5所示。

 

lin_sch_timing
图5. LIN总线进度时序

 

帧结构


 ↵

如前文所述,LIN总线的帧包括帧头和应答两部分。主机任务负责发送帧头;从机任务接收帧头并对帧头所包含信息进行解析,而后决定是发送应答,还是接收应答,或不作任何反应。帧头包括同步间隔段、同步段以及受保护ID(PID, Protected Identifier)段;应答段包括数据段和校验和(Checksum)段。图6示意LIN总线的帧结构。

lin_fram_structure
图6. LIN总线的帧结构

帧头

 ↵

同步间隔段(Sync Break Field)由同步间隔(Sync Break, tSYNBRK)和同步间隔段间隔符(Break Delimiter, tDEL)构成,如图7所示。同步间隔是至少持续 13 位(以主机节点的位速率为准)的显性(低)电平,由于帧中的所有间隔或总线空闲时都应保持隐性(高)电平,并且帧中的任何其它字段都不会发出大于 9 位的显性电平,因此同步间隔可以标志一个帧的开始。同步间隔段的间隔符是至少持续 1 位的隐性电平。从机任务接收帧头的同步间隔段时,以该从机任务所在节点的位速率为准,当检测总线上出现持续 11 位的显性电平时,认为是帧的开始。当从机节点使用精度较高的时钟时,识别阈值可以选择 9.5 位。

lin_fram_header图7. LIN总线帧头

在介绍同步段(Sync Field)之前,先介绍一下字节域(Byte Field)的概念,字节域共 10 位,包括 1 位起始位(Start Bit,显性)+ 8 位数据位 + 1 位停止位(Stop Bit,隐性),它是一种标准 UART 数据传输格式,如图8左所示。在LIN 帧中, 除了同步间隔段,后面的各段都是通过字节域的格式传输的。在 LIN 帧中,数据传输都是先发送 LSB(Least Significant Bit,最低有效位),最后发送 MSB(Most Significant Bit,最高有效位)。

LIN 同步段以下降沿为判断标志,采用字节 0x55(二进制: 01010101b)。同步段的字节域如图8右所示。从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机节点时钟产生的偏差,需要通过同步段进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同步段用于同步的基准时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速率,根据计算结果对自身的位速率重新作调整。主机节点的位速率由同步段的第一个和最后一个下降沿的时间差除以 8 计算得出。

lin_byte_field_sync_field

图8. 字节域的概念及LIN帧的同步段

紧接着同步段的是受保护ID(PID, Protected Identifier)段,PID的前 6 位称为帧 ID ,它依据节点 LDF 生成,标识帧的类别和目的地,从机任务对于帧头作出的反应(接收/发送/忽略应答)都是基于帧 ID 判断的。如果帧 ID 传输错误,将会导致信号无法正确到达目的地,帧 ID 相当重要,因此对其引入 2 位奇偶校验,由6位帧ID和2位奇偶校验组成受PID段。

帧ID的范围为0 ~ 63,根据帧ID不同将帧分类如下:

  • 无条件帧(ID 0 ~ 59
    • 每个帧头都对应一个消息应答
    • 在主机分配给它的固定帧时隙(Reserved Frame Slot)中传输
  • 诊断帧(ID 60, 61
    • 主机请求帧 ID = 60, ID = 0x3C
    • 从机应答帧 ID = 61, ID = 0x3D
  • 保留帧(ID 62, 63
    • 用户自定义 ID = 62, ID = 0x3E
    • 未来扩展 ID = 63, ID = 0x3F

PID的奇偶校验位的产生规则为:

  • P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4
  • P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)

由公式可以看出, PID 不会出现全 0 或全 1 的情况,因此,如果从机节点收到了 “0xFF” 或 “0x00” ,可判断为传输错误。

 ↵

应答

 ↵

节点发送的数据位于数据段(Data Field),包含 1 ~ 8 个字节,先发送编号最低的字节 DATA1,编号依次增加。数据段包含了两种数据类型,信号(Signal)和诊断消息(Diagnostic messages)。

信号(Signal)由信号携带帧传递,一个帧 ID 对应的数据段可能包含一个或多个信号。信号更新时要保证其完整性,不能只更新一部分。一个信号通常由一个固定的节点发出,此节点称为该信号的发布节点(Publisher); 其余的一个或多个节点接收,它们称为信号的收听节点(Subscriber)。

诊断消息(Diagnostic message)由诊断帧传递,对消息内容的解析由数据自身和节点状态决定。

注意:

  • 协议没有规定帧中的哪一部分显示数据长度码的信息,数据的内容和长度是由系统设计者根据帧 ID 事先约定好的
  • 总线上的数据是以广播形式被发送到总线上的,任何节点均能接收,但并非所有信号对每个节点都有用。收听节点接收帧的应答是因为该节点的应用层会使用这些信号,而对于其余节点,由于用不到这些信号,所以没有必要作接收处理,将忽略帧的应答部分。发布和收听由哪个节点进行完全根据应用层的需要由软件或配置工具实现。一般情况下,对于一个帧中的应答,总线上只存在一个发布节点,否则就会出现错误。事件触发帧例外,可能存在零个、一个或多个发布节点

lin_response

图9. LIN总线帧应答

校验和(Checksum)段是对帧中所传输的内容进行校验,校验和分为标准型校验和(Classic Checksum)及增强型校验和(Enhanced Checksum)。采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧 ID 来判断采用哪种校验和。标准校验和只保护数据段,增强型校验和同时保护数据段和帧ID段。LIN 1.X 的节点只支持标准型校验和,LIN 2.X开始支持增强型校验和。另外,帧ID为 60/61 的诊断帧亦只支持标准校验和。

lin_checksum

图10. LIN总线帧的校验和

帧传输时间

 ↵

LIN总线的帧由帧头和应答组成,其中帧头包括同步段、帧ID段和两位奇偶校验,应答的数据段最长8 Byte,如图11所示。LIN的信息传输是基于 SCI 接口的,每个字节域包括 8 bit 数据、1 bit 起始位和 1 bit停止位。若同步间隔段是 13 bit 显性位 + 1 bit 隐性位,则帧头计 34 bit;应答包括数据段和校验和段,根据数据段长度的不同,应答最短为 20 bit(数据段 1 Byte),应答最长为 90 bit(数据段 8 Byte)。综上,LIN总线的帧最长为 124 bit(数据段 8 Byte),最短为 54 bit(数据段 1 Byte)。帧的额定传输时间计算公式如下:

lin_fram_timing_calc
其中:n 为数据段的字节数,tBit 为波特率的倒数,例如 (19.2 kBit/s)^-1 = 52.1 us

lin_frame_timing1

图11. LIN总线帧的额定传输时间

LIN协议规定帧的最大传输时间为额定传输时间的 1.4 倍,即为帧传输预留 40% 的裕量。该特性是考虑到总线上节点设备性能参差不齐,允许节点不必收到指令后立即执行。也就是说,协议允许节点推迟下一个 UART 字符的发送,但推迟的总时间不能超出额定值的40%。延迟时间包括两类:Interbyte SpaceResponse Space。它们在帧中的位置如图12所示。帧的最大传输时间计算公式如下:

lin_fram_timing_calc_max

 ↵

lin_fram_timing_max

图12. LIN总线帧的最大传输时间

综上,在设置总线进度表(图5)时,需要考虑到帧传输时间的因素,确保每个步骤都有足够的时间裕量。

 ↵

帧信号波形

 ↵

图13为使用 Tektronix 示波器 捕获LIN总线帧信号波形的示例,更多调试手段见链接

lin_wave

图13. LIN总线的帧波形举例

 

帧种类


 ↵

LIN总线上数据传输包括 4 种不同的帧,分别为无条件帧、事件触发帧、偶发帧、诊断帧(保留帧咱就保留不提了……)。

 ↵

无条件帧

 ↵

帧ID 0 ~ 59。无条件帧(Unconditional Frame)是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。无条件帧在主机任务分配给它的固定的帧时隙中传输。总线上一旦有帧头发送出去,必须有从机任务作应答(即无条件发送应答)。

 ↵

事件触发帧

 ↵

帧ID 0 ~ 59。事件触发帧(Event-triggered Frame)是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化(事件)时使用的帧,当存在多个发布节点时,通过冲突解决进度表(Collision Resolving Schedule)来解决冲突。当从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。同一个 PID 的事件触发帧进和无条件帧对应的第一个字节数据是相同的,从机只有在自身数据变化时才发送应答,当总线上没有任何从机应答时,该帧的应答部分为空。如果总线上有超过一个从机应答,则发生冲突,主机则通过发送无条件帧轮询所有从机,解决冲突的问题。

图14示例事件触发帧的进度表。图上半部分表示无冲突时的情况,主机发送事件触发帧,只有从机 1 信号发生变化,因此在总线上发送应答(Event A);图下半部分表示有冲突时的情况,主机发送事件触发帧,从机 2 和从机 4 信号都发生变化,因此都向总线上发送应答,从而产生冲突,这时候主机执行冲突解决进度表,通过发送无条件帧轮询所有从机,从而依次读取从机 2Event B 和从机 4Event D

lin_event_trig_frame

图14. 事件触发帧

事件触发帧的典型应用就是轮询四个车门的开关情况。与其利用无条件帧每个车门轮询一遍,不如同时对四个车门进行询问,如果其中一个车门打开(事件发生),该车门要对询问作应答,即事件触发。这样做可以减小带宽,但同时会导致两种现象,其一就是没有车门被打开,即无节点应答——事件触发帧允许一帧中只有帧头无应答;另外一种情况就是冲突,即同时有大于等于两个车门被打开,对于同时应答的问题——事件触发帧允许两个以上的节点对帧头作应答而不视为错误。当发生冲突时,主机节点重新轮询,这样会增加一些响应时间,但由于事件触发帧本身就用来处理低概率事件,总的来说还是节省了带宽。

 ↵

偶发帧

 ↵

帧ID 0 ~ 59。偶发帧(Sporadic Frame)是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。偶发帧主要用于主机发送不经常变化的信息,可以理解为主机用的事件触发帧。与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。

偶发帧的传输可能出现 3 种状况:

  1. 当关联的无条件帧没有信号发生变化时,该时隙保持沉默,主机节点连帧头都不需要发送;
  2. 当其中一个关联的无条件帧包含的信号发生了变化, 则发送该关联的无条件帧的应答部分,如图15上半部分所示;
  3. 如果有两个或以上关联的无条件帧包含的信号发生了变化,则按照事先规定好的优先级,优先级较高的关联的无条件帧获得发送权,优先级较低的要等到下一个偶发帧的帧头到来时才能发送应答。由于主机节点是唯一的发布节点,所以主机节点事先就知道各个关联信号的优先级别,这样在传输时不会产生冲突,如图15下半部分所示

引入偶发帧和事件触发帧是为了让LIN总线的通信机制更加灵活,只在信号变化或未变化时传输消息可有效提高总线的通信效率。

lin_sporadic_frame

 

图15. 偶发帧

诊断帧

 ↵

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断。诊断基于 ISO 15765-2 传输标准和 ISO 14229 UDSUniform Diagnostic Services)标准。主机请求帧的帧 ID = 0x3C,应答部分的发布节点为主机节点,一般用于诊断请求或配置从机;从机应答帧的帧 ID = 0x3D, 应答部分的发布节点为从机节点,一般为诊断应答。数据段规定为 8 个字节,一律采用标准型校验和。诊断帧的帧头和应答方向如图16所示。

lin_diag_frame

图16. 诊断帧

状态管理


 ↵

LIN总线的状态管理主要指网络的休眠和唤醒。协议规定从机 4 种状态:关机、初始化、运行和休眠。各个状态的切换关系如图17所示,在系统上电时从机在 100ms 以内完成初始化,随后从机自行进入运行状态。主机可以通过主机请求帧(帧ID = 0x3C)的 Go-to-Sleep 命令从机进入休眠状态(DAT0 = 0x00, DAT1-7 = 0xFF)。从机也可以在总线上没有活动后的 4 ~ 10s 内进入休眠状态。

lin_state_machine

图17. LIN总线状态机

主机和从机都可以唤醒整个网络,唤醒为持续时间 250us ~ 5ms 的显性信号,所有节点在检测到唤醒信号后旋即退出休眠状态,进行初始化,最长在 100ms 后进入运行状态。如果节点发送出唤醒信号后,在 150 ~ 250ms 内没有接收到总线上的任何命令(帧头),则可以重新发送一次唤醒。唤醒信号最多可以发送 3 次, 3 次之后,必须等待至少 1.5s 之后才可以再次发送唤醒。图18示意LIN总线的唤醒流程。

lin_wake_up

图18. LIN唤醒流程

硬件电路


 ↵

供电 & 信号电平

 ↵

LIN总线要求所有节点的信号电压相同,信号电压参考收发器供电电压 VSUP,低于VSUP的 40% 视为显性电平(Dominant),即为“0”,高于VSUP的 60% 视为隐性电平(Recessive),即为“1”。此处显性/隐性的含义与 CAN 总线的定义相同,即总线上实行“线与”逻辑:当总线上有大于等于一个节点发送显性电平时,总线呈显性电平;所有的节点都发送隐性电平或不发送信息(发送任何信息时总线默认呈隐性电平)时,总线才呈现隐性电平,即显性电平起主导作用。

考虑到传输线路上的压降,LIN协议要求驱动器的低电平要低于VSUP的 20% ,高电平要高于VSUP的 80% ,以保证接收器在判断高低电平时有足够裕量。

lin_voltage

图19. LIN总线电平

VSUP 指总线收发器的电源电压,注意它并不等同于蓄电池电压(VBAT)。考虑将电池引入到ECU单元在电源滤波(二极管等)电路上的压降,VSUP要低于电池电压VBAT,如图20所示。

vbat_vsup

图20. 外部供电VBAT和内部供电VSUP的区别

收发器

 ↵

LIN总线收发器本质上是个双向工作的电平转换器,LIN 规范要求总线收发器要能承受 ±11.5% 的电源波动和参考点电平波动,并且能承受电源和参考点之间 8% 的电位差波动。在要求不高的场合,可采用简单的收发器电路如图21所示。

lin_xcrvs_simplified

图21. 简易的 LIN 收发器电路

端接电阻

 ↵

为实现“线与”特性,LIN协议规定了主机和从机节点的端接电阻,端接电阻一端连LIN总线,另一端通过串接二极管。主机端接电阻 1K(范围:0.9 ~ 1.1K),从机端接电阻 30K(范围:20 ~ 60K)。如图22所示,图中串接二极管是必须的,当ECU电源断路时,它可以防止LIN总线上电源倒灌。

lin_terminate_res

图22. LIN总线端接电阻

LIN所有节点并联在一起,构成图23所示的等效电路。其中,总线负载电阻等于各节点端接电阻的 并联等效电阻,总线负载电容等于各节点输入电容和总线分布电容的并联等效电容。总线电阻决定了总线收发器驱动级的功率和通信期间的功耗;总线电容可以吸收周围环境的噪声干扰。总线电阻和总线电容构成的 RC 滤波器还有助于控制压摆率。

为确保最恶劣情况下正常通信的需要, LIN 规范除了限制节点的端接电阻、电容和时间常数。协议规定主机/从机端接电容典型值为 220pF ,根据具体应用调整主机/从机端接电容满足 EME/EMI 性能,从机端接电容可调范围不大,主要通过调整主机电容实现。有的 收发器 规定主机 1nF,从机 220pF,具体参考收发器应用手册。协议还规定 LIN 总线长度不超过 40 米,一个 LIN 网络的最大节点数目不超过 16。由于端接电阻连接着电源和 LIN 总线,当出现 LIN 总线对地短路时,如果不采取保护措施,会有较大的电流流过端接电阻,产生显著的功耗。

lin_equ_sche

图23. 总线等效电路

比较


本章列举LIN与市场上常见的其它通信总线 CANUARTI2C 的特性对比,如下表2所示。

lin_cmp

表2. LIN与其它通信总线的特性比较

 

参考资料


 ↵

  1. LIN入门 -Renesas

  2. Local_Interconnect_Network -Wikipedia

  3. E-Learning: LIN Introduction -Vector

  4. LIN Webinar -Vector

  5. Bosch Automotive Electrics and Automotive Electronics Systems

 

Bookmark the permalink.

About Xiaomin

“Real generosity towards the future lies in giving all to the present.” ― Albert Camus

3 Responses to LIN Bus

  1. Charle He says:

    最近在做从机开发,就是关于触发和偶发,主机需要判断从机是否发生变化,那从机是怎么定义信号发生变化,主机是怎么识别的?主机是怎么判断总线或者从机点发送数据发生冲突了,如果事件触发帧发送后确实发生2个以上从机点都想发送数据,即产生事件冲突。
    我的理解是, 定义了事件触发帧,这个帧可以绑定多个无条件帧。 当调度表里运行到这个触发帧, 各个从机节点会判断是否发生更新(是否这个表明从机节点需要有自我是否发生信号更新的判断功能,即MCU 需要收到事件触发帧后,判断内部无条件帧对应的信号是否发生变化), 如果有发生更新,则从机会尝试发送无条件帧FID ,然后发送数据。
    现在问题是如果多个从机节点收到触发帧后都判断自己无条件帧发生信号更新,都想往总线发送数据(FID帧头), 那总线主机是怎么知道这个时候发生冲突了

  2. Eric says:

    图8的“同步段”是不是画错了,同步段的数据格式是固定的0x55,如果按您的图解释的话,同步段的数据便成了0xAA

    • joker says:

      您可能忽略了:在 LIN 帧中,数据传输都是先发送 LSB(Least Significant Bit,最低有效位),最后发送 MSB(Most Significant Bit,最高有效位)。所以您要倒着看那个波形就是0x55了。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.