LIN总线作为使用广泛的CAN通讯网络的辅助,它基于主从结构,使用单线通讯,减少了大量线束的重量和费用。其目标应用是不需要CAN的性能、带宽及复杂性的低速系统,如开关类负载或位置型系统,包括车的后视镜、车锁、车座椅、车窗等的控制。
LIN总线特点
低成本的单线12V数据传输,线的驱动和接收特性符合改进的ISO 9141单线标准; 传输速率可达20Kbit/s; 单主/多从的结构,不需要总线仲裁,由主节点来控制总线的访问; 基于通用UART/SCI的硬件接口,使用成本低的半导体工艺实现,几乎所有的微控制器都有LIN 必需的硬件; 从节点不需要晶振或陶瓷振荡器就可实现自同步,从而减少了从节点硬件成本; 保证在最差状况下信号传送的等待时间,避免总线访问冲突。
LIN的数据帧格式和通讯协议
LIN网络由一个主节点和多个从节点构成。所有的节点都包括一个从任务,从任务又分发送和接收任务,主节点还包括一个主任务。 LIN的数据帧由帧头和响应信息组成。帧头包括同步间隔、同步场和信息识别符。帧头由主任务发出,主任务在发出同步间隔后发送同步场(0x55),从节点利用同步场将它的波特率调整到传送来的信号的波特率。在发送同步场之后,发送一字节的信息识别符,其中0~3位表示信息类别,4~5位表示信息长度,7~8位是奇偶校验。信息识别符表示的是信息的内容,而不是信息的目的地址。这样定义可使多个节点收到同样的信息,并且数据能够以多种方式交换。从任务通过该字节判断数据是否与自己有关,并确定自己如何处理该数据。响应信息是由从任务发出的,由2个、4个或8个字节长度的数据和1个字节的和校验构成。和校验表示数据帧结束,它是通过计算数据的全部字节而得到的(不包括识别字节及同步场)。 LIN 总线的另一个帧是睡眠帧,由主任务发出,它的作用是让总线和节点进入低功耗状态。除睡眠帧的识别字段包含数值 0x80之外,其它与数据帧相似。当收到唤醒信号时,总线睡眠状态便中止。唤醒信号由从任务发出。 在LIN网络中所有通讯都是由主任务发起的。主任务控制数据帧的发送时序和优先级。
中央控制模块的硬件原理图
LIN车身控制应用方案
LIN的应用方案介绍 电控模块与汽车驱动系统分开有利于保证驱动系统的实时性,这也是汽车内通讯网络分级的一个原因。车身控制系统的中央控制模块也是一个网关,它将CAN网络和LIN网络连接起来。
本文选取中央控制模块和灯光控制模块来说明LIN总线的应用。中央控制模块位于驾驶室内,主要检测驾驶室内控制开关的状态,并根据这些控制开关的状态实现相应的控制策略,然后将控制命令通过LIN总线发送给向各子模块。同时通过CAN总线接收上层CAN网络的某些信息。中央控制模块的MCU选用Motorola公司的MC68HC908GZ16,该芯片是一款可靠性高、抗干扰能力强的汽车专用芯片,其内部集成了CAN的控制器并有SCI模块,从而方便了CAN和LIN的开发。中央控制模块硬件原理图如图2所示。其中CAN/LIN接口芯片分别采用Motorola公司的MC33388和MC33399。中央控制模块的POWER单元的作用是将车内24V电压转换成5V供给MCU。DETECT单元作用是采集开关量的状态,将并行的数据转换成串行数据送给MCU。中央控制模块还可以根据不同需求增加驱动单元。在本例中,中央控制模块还完成了驱动车内的内饰灯和雨刷电机的工作,驱动芯片分别选取Motorola公司的MC33286和MC33289。 灯光控制模块有两块,主要控制前部和后部的车灯。其中MCU采用Motorola公司低成本单片机MC68HC908EY4,驱动芯片根据车灯所需功率来选取,本设计选取了MC33288和MC33286。
LIN的硬件实现
在模块中LIN的硬件电路非常简单,主要是LIN的接口芯片MC33399和MCU的连接。
LIN的软件编程
LIN的应用软件由两部分组成:LIN的软件驱动和用户的应用程序。软件驱动的任务是接收、发送和过滤信息,连接LIN接点到LIN总线上,以及总线超时检测、帧监测、ID场计算、数据长度提取、校验和的计算和LIN消息的调度等。本系统的应用程序建立在Motorola提供的LIN的软件驱动之上。下面简单介绍一下用户如何根据设计要求来修改LIN的软件驱动从而实现LIN总线的通讯。
LIN初始化
要实现LIN总线的通信,首先要完成LIN初始化的工作,主要包括对节点类型、端口、寄存器和中断的设置。 节点类型:节点有主从之分,所以在初始化时要先声明该节点的类型。 端口:LIN总线的通信用到了PTE0和PTE1两个端口,需要设置端口方向。PTE0设为输出,PTE1设为输入。 寄存器:LIN通信中用到了MCU中的串行通讯接口模块和定时器模块,需要对其相应的寄存器进行配置。通过配置串行通讯波特率寄存器(SCBR)可以得到不同的通讯速率(详见MCU的手册),本设计中以8MHz的外部时钟得到9.6K的通讯速率,设置如下: #define LIN_BAUDRATE 0x30 SCBR= LIN_BAUDRATE; LIN通信中使用定时器模块来完成位定时,所以需要在主节点设置定时器的时钟速率。 中断:LIN通信中用到以下中断:SCI接收中断、SCI错误中断、SCI 发送中断和定时器1通道0中断,其中后两种中断仅主节点使用。用到的中断向量需要在中断向量表中声明。
配置 ID
LIN总线规定了64个ID(0~63),其中61~63被保留,其它ID供用户使用。在本设计中车身控制系统共有5个子节点,两种数据类型。这两种数据均为两字节。 以灯光控制模块为例,说明通过LIN总线如何发送和接收数据。LIN_PutMsg(ID,send_buffer) 和LIN_GetMsg(ID,receive_ buffer)分别为Motorola LIN API中定义的发送和接收数据的函数。参数ID表示发送和接收数据的ID,send_buffer和receive_buffer分别是用户定义的发送和接收数据的缓存单元。LIN_Request(ID)用来发送帧头,仅主任务使用,其他函数定义参见Motorola LIN 驱动软件。中央控制模块将控制命令发送给灯光控制模块,灯光控制模块将负载的状态反馈给中央控制模块的过程的软件程序详见本刊网站。
结语
在车身控制系统中应用LIN总线降低了低端通讯网络的成本,同时增加了设计的灵活性,提高了系统的可靠性,有利于分布式车身控制系统的开发。因此LIN总线在汽车领域有着良好的应用前景,此外LIN总线作为一种开放协议,还可用在工业和家电领域,实现对速度要求不高、短距离连接的设备间的通讯。
共0条 [查看全部] 网友评论