用于汽车网络地LIN协议分析.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用于汽车网络地LIN协议分析

用于汽车网络的LIN协议分析 LIN协议适用于汽车内进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应。本文详细分析了LIN总线协议的特性、消息协议的组成、检错机制等,并介绍如何基于PICmicro器件来实现LIN总线从节点。 ? ? LIN协议是由欧洲车辆制造商协会开发用来进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应,因此通信事件是在百毫秒以上时间内发生,而不像引擎管理等其它速度快得多的汽车应用。此协议支持在单根线上进行双向通信,使用由RC振荡器驱动的低成本微控制器,这样可以省去晶振或陶瓷振荡器的成本。另外,此协议实际上是以时间和软件上的代价换取硬件上成本的节约。LIN协议的每一条消息都包含自动波特率步进的数据,最高可以支持波特率为20k,同时低功耗睡眠模式可以关断总线,以避免产生不必要的功耗。总线可以由任意一个节点提供电源。 ? ? LIN总线特性 ? ? ? ? 图1:典型的LIN协议配置。 ? ? LIN总线融合了I2C和RS232的特性:像I2C总线那样,LIN总线通过一个电阻上拉到高电平,而每一个节点又都可以通过集电极开路驱动器将总线拉低;像RS232那样通过起始位和停止位标识出每一个字节,每一位在时钟上异步传输。 ? ? 图1给出了典型的LIN协议配置。当任意一个节点将总线拉低时,总线处于低电平,标识着总线进入占用状态;而当所有节点都使总线浮空时总线处于电池的电压(9-18V),则意味着总线处于非占用状态(Recessive state);在空闲状态下浮空的总线通过电阻被上拉到高电平。 ? ? 总线工作在9到18伏的电压下,但所有连接到总线上的器件必须能承受40V的电压。一般情况下,微控制器通过线路驱动器或接收器与总线隔离。总线在每一个节点上被端接到Vbat,主节点通过一个1kΩ的电阻端接而从节点则通过一个20kΩ到47kΩ的电阻端接。总线最大长度为40米。 ? ? 总线上传输的每一个字节都是与起始位和停止位一起组成帧。起始位的状态与空闲状态相反(即为0),而停止位则与空闲状态同为1。在每个字节中,首先传输的是最低有效位。 ? ? 消息协议 ? ? 主节点控制总线的方式是轮询各个从节点并与总线上其余部分共享从节点的数据。从节点仅在接到主节点的命令时才进行数据传输,这样就可以进行双向传输并且无需进一步的仲裁。消息传输是以主节点发出一次同步中断开始,紧接着是消息的同步字段和消息字段。通过在每条消息的起始处传送的同步字段还设定了整个总线的时钟,每个从节点用该字节来调整其波特率。 ? ? 同步中断使总线进入占用状态,该状态保持时间为13位数据的传输时间,紧接着是一个停止位(非占用状态),这告知从节点即将有消息传输。主节点与从节点的时钟漂移最大允许在15%,因此从节点接收的同步中断可能只有11位或长达15位数据位的传输时间。 ? ? 每一条消息的第二个字节是标示字节,用来告知总线在该字节后面传输的是什么数据和哪一个节点应该应答,以及应答的长度(标示字段如图2所示)。一条命令仅会有一个从节点对其进行响应,从节点仅在主节点的指示下才发送数据。数据只要出现在总线上,每一个节点都可以接收到。因此,无须主节点专门控制从节点之间的通信。 ? ? ? ? 图2:标示字段组成。 ? ? 由于设计中采用廉价的RC振荡器,从节点必须在每一次传输时检测主节点的波特率并调整其自身当前的波特率。因此,每一次通信都由一个由交替的“0”和“1”组成的同步字节开始。标识字段紧跟在同步字段的后面,它告知总线后面传输的内容是什么。标识字段又分为三个子字段,最低4位(0-3位)是寻址总线上的器件,中间两位(4-5位)是后面传输的消息的长度,最高两位(6-7)用作奇偶校验位。 ? ? 除了睡眠命令,LIN协议并没有定义每一条消息的内容。其它命令是由具体应用来定义的。 ? ? 检错机制 ? ? 下面描述的错误必须被检测出,并且在每个节点内进行计数。 ? ? 位错误-传输节点必须将它认为应该传输的数据位与总线上实际出现的数据位进行比较。由于总线需要响应时间,控制器必须在检测数据位之前等待足够长的时间。假设最小的电压翻转速率为1V/μs,而总线最高电压为18V,则发送器必须等待18μs才能检测总线上的数据位是否正确。 ? ? 校验和错误-每一条消息的内容都是由校验和字节进行保护。 ? ? 奇偶校验错-命令字节的6个数据位由两个奇偶校验位进行保护,需要重新进行计算这些位并比较。如果错误出现,应当忽略当前命令并且记录下错误。LIN协议中没有直接的错误报告机制,但每一个从节点应当跟踪其自身的错误,主节点可以要求从节点将错误状态作为正常消息协议的一部分来传输。 ? ? L

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档