学生联盟网为您提供优质参考范文! 体会工作报告法律咨询精彩演讲各类材料
当前位置: 学生联盟网 > 人文社科 > 文学研究 > 用于汽车网络的LIN协议分析

用于汽车网络的LIN协议分析

时间:2021-07-22 13:23:41 来源:学生联盟网

用于汽车网络的LIN协议分析1 / 13LIN协议适用于汽车内进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应。本文详细分析了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,则发送器必须等待18s才能检测总线上的数据位是否正确。

  校验和错误-每一条消息的内容都是由校验和字节进行保护。

  奇偶校验错-命令字节的6个数据位由两个奇偶校验位进行保护,需要重新进行计算这些位并比较。如果错误出现,应当忽略当前命令并且记录下错误。LIN协议中没有直接的错误报告机制,但每一个从节点应当跟踪其自身的错误,主节点可以要求从节点将错误状态作为正常消息协议的一部分来传输。

  LIN总线与CAN总线 LIN协议并不直接与CAN总线兼容,但人们期望两者进行相互操作。CAN总线可能用在整个汽车内来实现通信,而LIN总线仅用在汽车的局部电路内,如车门。为了连接两种总线,需要采用CAN-LIN协议接口节点,该节点从LIN总线节点收集信息然后传送到CAN总线上。

  低功耗睡眠模式 主节点通过发送标识码0 x80指示所有节点进入睡眠模式,睡眠命令后面跟随的数据字节的内容没有定义。收到睡眠命令的从节点应当对本身进行设置,以便当总线发生改变时能唤醒,并关闭自身的电压以使电流消耗最低。当处于睡眠模式时总线将处于高电平并且不消耗电流。

  任意一个节点都可以通过发送唤醒信号来唤醒总线。当收到唤醒信号后,一般情况下所有的节点应当激活并等待主节点开始总线轮询。

  硬件示例 图3采用LIN协议的示例硬件。

  图3给出了有两个按钮和三个LED组成的硬件示例。每按动十下按钮1 LED1改变一次状态。同样,每按动十下按钮2,LED2改变一次状态。作为标识为ID1的响应,按钮的按动次数被传送到总线上。作为标识为ID4的响应,按钮的按动次数的刷新被传送到总线上。

  软件操作 LIN协议程序工作在由RB0触发的中断下以实现总线的睡眠/唤醒。在触发中断时,程序对低电平数据位的长度进行计数,然后读同步字节并确定数据位时间,最后再将其与最初的数据位时间进行比较,以确定最初的低电平时间是否大于10个数据位的时间,大于10为同步中断,小于10为唤醒信号。如果是唤醒信号,程序退出并继续等待同步中断;如果是同步中断,程序就读取命令字节,检查奇偶位并检查动作表action table来确定接下来的动作。动作表定义了总线上数据的来源或目的地。

  为了初始化LIN协议的从节点句柄Slavehandler,用户必须调用InitLinSlave程序,这个程序初始化RB0中断引脚和TMR0寄存器。TMR0寄存器用来测量数据位的长度并生成波特率。初始化完成之后,用户可以执行自己的程序。一旦检测到RB0引脚上的下降沿,用户程序就将被中断。当检测到下降沿时,程序就跳转到中断服务程序。必须禁止除了TMR0和RB0中断之外所有的中断源,以便对同步字段进行精确测量。计算出波特率之后,中断服务程序就退出执行。

  在下一次RB0中断发生时,LIN协议Slavehandler自动进入接收模式,以接收标识字段或数据字节。如果检测到标识字段的起始位,就对标识字段进行接收和解码。然后,根据收到的标识执行相应的代码,例如存储数据或点亮LED。总线上一个帧传输完成之后,标志FCOMPLETE被置位。这个标志指示所有的数据都已正确接收完毕并可以进行后续的处理。此标志由用户固件清除。

  LIN协议从节点句柄Slavehandler最高可以工作在20K的波特率下,需要420字的程序存储空间以及23字节的数据存储空间。

  由于其低成本,LIN协议具有在汽车应用中广泛采用的潜力。可以使用内置的RC振荡器并且运行在4MHz的时钟频率下的诸如Microchip的各种器件的微处理器,使得设计师们能以最低的可能成本设计应用系统。旅程电脑应用ON BOARD COMPUTERBCV功能键说明 1.数字键1000,100,10,1,提供键入数字功能.例如要键入2315的数字时,应如下操作键入 按1000键2次。

  按100键3次。

  按10键1次。

  按1键5次。

  数字键可提供09或0090,或00090,或00009000的键入,因此数字 键可从0000到9999范围。

  如果按住任何一个数字键,时间超过0.75秒以上时,数字会自动从0到9,以 每0.5秒进一位。

  该四个数字键在此功能设定时1000这个键功能不存在。2.设定重设定键SETRES提供设 全入完结后,按此键确认功能,或重新设定。3.检查键CHECK提供系统自我诊断,该功能键具有如仪表板资讯区以文字模式显 示一般故障指示或具有CHECK CONTROL功能,如果系统正常,按下CHECK键后,会显示“CHECK CONTROL OK”。4.报时键MEM提供设定报时声响,平时未设定时,会在每个小时前15秒的声响,告知驾 驶人一个小时又到了。设定程序如下 W710GBl 按下MEM键三少后,大显示幕会出现MEMO字幕,在小显示幕会出现00,可利用10与1键去设发钟报时,如你要每个小时45分钟前15秒即报时,可按10键4下,按1键5下,再按SETRES键确认即可。

  如此每到45分钟前15秒即会有报时声响。

  5.外部温度指示键A-TEMP可指示车外温度在3以下温度时,会有专程警示。

  6.平均耗油量值键CONSUM或VERBR,当按此键可显示该车辆平均耗油量指示,可利用 SETRES键去归零。

  r___O c 7.平均车速键“SPEED或GESCHW可计算从甲地到乙地目前所行驶之平均车速。

  8.范围键RANG或REICHW可显示目前油箱中之油量还可行驶多远距离之公里数。

  9.预定到达键IST在出发前先键入甲地到乙地时间或还有多少距离。

  10.限速键IMIT当车速超过速线时即会有警告,提高速即警告之程序 将车辆行驶到所要警告的车速,再按一下LIMIT键即可。

  只要车速超过此速度即会有警告声响。11.计时器键TIMER只要按下此键即进入跑马表计时器功能,再按一下即停止计时。

  12.密码功能键CODE防盗码键入设定作用时,引擎无法发动。

  防盗程序点火开关KEYON。

  按CODE键一下。

  利用数字键键入一组你记得住的防盗码。

  按SETRES键一下。

  点火开关KEYOFF。

  即进入防盗功能。解除防盗程序 方法一点火开关KEYON。

  键入你原键入之防盗码。

  发动引擎即完成。

  方法二拆开电瓶线5分钟以上。

  装回电瓶线,将点火开关KEYON。

  防盗会叫约15秒钟后停止。

  。

  等待15分钟后,即可发动引擎完成解除13.公英制切换键KMMLS按下此键切换公里英里单位。

  14.日期键DAT按此键显示目前日期,可利用SETRES键及数字健去重新键入日期。15.时钟键UHR按此键显示目前时间,可利用SETRES键及数字键去重新键入时间。

  旅程电脑功能测试程序 同时按1000及10键,直到大显示幕出现“TEST NO”字幕。

  _ 可键入1到21数字,以SETRES键确认。测试项目1到21项功能 键入1显示幕测试。(大、小显示幕所有字全显示 键入2显示目前耗油量以公制显示公升100公里。键入3显示目前耗油量以公制显示公升小时。

  键入4显示平均耗油量可再行驶之里程数。

  键入5显示目前油箱油量可再行驶之里程数。

  键入6蜇无功能没有使用 键入7显示目前油箱油量 键入8显示目前车速。公里小时 键入9显示IGN电源电压。伏特 键入10读出该车之国别码及设定。

  键入11读出及设 AMPM。上午下午 键入12计算平均车速及到达目的地时间。

  键入13计算预计到达目的地时间。

  键入14设定软体时间。BC IV才有 键入15制造单位测试用。

  键入16制造单位测试用。

  键入17显示该车特殊资料。全车 键入18改声响持续或间歇。

  键入19此测试功能锁住或开放 键入20耗油量修正值。

  键入21软体重新设定利用SETRES键操作。

  -温馨提示如不慎侵犯了您的权益,可联系文库删除处理,感谢您的关注