我是靠谱客的博主 发嗲毛巾,最近开发中收集的这篇文章主要介绍LIN通信协议以及概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     1 LIN基本概念

 LIN(Local Interconnect Network) 总线是针对汽车分布式电子系统而定义的一种低成本的串行通讯网络,是对控制器区域网络 (CAN) 等其它汽车多路网络的一种补充,适用于对网络的带宽、性能或容错功能没有过高要求的应用。 LIN 总线是基于 SCI(UART) 数据格式,采用单主控制器 / 多从设备的模式,是 UART 中的一种特殊情况。
 使用一根 12V 信号总线和一个无固定时间基准的节点同步时钟线。
2 通信特点(单线通信,传输速率较低)
 LIN 线在物理上是一个上拉到 12V 的集电极开漏总线,多个节点可以并联到同一根线上,与 IIC SDA 类似,但其没有独立的时钟线,靠通信双方约定的波特率进行通信,与 UART 类似,但由于 UART 之处在于,其可以通过同步场进行时钟同步,使传输变得更可靠。这样与 CAN 总线的一对差分双绞线不同,其抗干扰能力大大减弱,通信速率最高只能 20Kbps, CAN 可达 1Mbps
3 通信结构( 主从结构,中心化拓扑
  LIN 线拓扑结构是主从结构的星型模型,所有传输都是 master 发起, slave 不可以主动发起请求。这个其实与 modbus 更类似。也可以把 slave 看做消息的发布者, master 看成消息的订阅者,想要获取某个变量值,就需要不断轮询读应节点对应的报文。这个结构就决定了 LIN 线传输的消息不可能太多,以保证消息更新的实时性,通常一条 LIN 线上定义的消息要比一条 CAN 线上定义的消息少一个数量级。当然,如果中心节点出现了问题,整个网络也就挂掉了。
4 通信协议解析

LIN总线的帧格式如上图所示。可以看出,一个典型的LIN数据帧主要包含header、header response以及response域。LIN一帧数据最大可以传8bytesLIN2.x规定可以传输的LIN字节数可选是2,4,8并不是1-8内任意一个数字。一般而言,车内会选择一个统一字节数,最常用比如每帧都传8个字节。       

         Header场中包含break,synch以及受保护的id。其实break就是告诉总线传输开始,然后用synch同步始终,然后使用受保护id来寻址,如果有LIN slave节点可以提供这个id的服务,那在master发出protected id后,就他就会插入一个应答,与IIC从机在sda上给出类似应答类似。值得注意的是,这个protected id并不是slave从机地址,而是想要订阅的报文id,换个说法,一个slave从机可以提供多个报文id的服务,比如一个车灯控制ECU,可以提供灯控制、状态、故障码、软硬件版本信息等多个LIN ID服务。而slave从机地址是隐性的与其所提供的报文ID是有个对应关系的。     

        与CAN总线的CRC校验不同,LIN的提供奇偶校验以及checksum方式,对header中的protected id进行奇偶校验,也会对data进行checksum校验,有classic以及enhanced区分  LIN总线的主从结构决定了master节点要周期性的去slave读取数据,也可以去设置一个报文。一条LIN总线上有多个slave节点,每个slave要发布多个ID报文时,就需要master在兼顾实时行的条件下,顺序的读取或这设置每个slave的每个ID报文。对于每个slave可以提供哪些报文,有ldf文件统一描述,与CANdbc文件不同。Ldf文件全称为LIN Configuration Description File,描述了一条LIN bus完整的主从节点信息,以及报文格式,调度信息。根据ldf文件可以得到schedule tables,这个调度表给master设置了读取slave节点报文id的时间间隔,比如10ms100ms。这个调度表可以由专门的生成工具由ldf文件来生成。

最后

以上就是发嗲毛巾为你收集整理的LIN通信协议以及概念的全部内容,希望文章能够帮你解决LIN通信协议以及概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部