低成本LIN总线协议在汽车网络中的应用
发布时间:2008/5/27 0:00:00 访问次数:595
    
    
    当前汽车应用开发人员正面临着众多设计挑战,由于现代汽车增加了更多电子功能,对低功耗和更小印刷电路板的需求也越来越强烈,所有这些都表明在诸如车身控制和传动系统等应用领域中这样的特性将日益重要。
    
    如今汽车中的绝大多数电子控制单元互相之间都有连接,但汽车制造商对不同的应用使用了不同的总线系统。例如传动系统和制动系统多数通过控制器局域网络(can)来联系,而通讯不太密集的应用(如车窗升降电机和控制车镜的按键)则可能使用局域互联网络(lin)协议。本文将论述怎样利用lin总线来满足汽车业所需要的新增电子功能,并同时确保低功耗以及使用较小面积的pcb。
    
    
    
    图1:lin在汽车上的典型应用领域。
    
    lin协议
    
    lin协议由欧洲汽车制造商协会设计,是一种低成本短距离低速网络。它旨在传送开关设置和传感器输入等状态的变化,并对这类变化做出响应,因此可用于传送发生时间约为几分之一秒的事件,并不适用于汽车应用中的高速事件(如引擎管理)。lin的另一个目的是利用该协议的简单性降低系统成本,以便能够方便地在质优价廉的8位单片机中实现。lin总线协议的最新版本是v2.0,可以在lin联盟的网站(www.lin-subbus.de)上得到。
    
    lin支持单线双向通讯,采用廉价的由rc振荡器驱动的单片机,可省掉晶体振荡器或陶瓷振荡器的费用。虽然lin降低了系统总成本,但在时间和软件上却要付出代价,每条报文都必须经过一个自动确定波特率的过程。lin协议支持最高20kbps传输速率,以及一个低功耗休眠模式,此时总线将被关闭,不再消耗汽车电池。采用8位单片机并结合外部或内部rc有助于降低系统成本,并减少pcb实际的面积。
    
    图1显示了lin在汽车中的典型应用。总线上的地电位信号为显性状态,只要任何节点将总线电压拉低,就会出现这一状态。当总线处于电池电压且所有节点都使总线处于悬空状态时,会出现隐性状态。在空闲状态下,总线通过上拉电阻悬空为高电平。
    
    lin总线的工作电压范围为9~18v,但总线上所有部件都必须能够承受40v电压。通常,单片机通过线路驱动器/接收器与总线隔离,这种方案下总线每个节点都端接为vbat电平,主节点通过1kω电阻端接,从节点则通过20-47kω的电阻端接。总线最大设计长度为40米。
    
    每个字节都利用起始位和停止位作为头尾标志位。起始位与空闲状态相反,为0,而停止位则等同空闲状态(即1)。在每个字节内,数据从最低位(lsb)开始传送。
    
    报文协议
    
    
    
    图2:lin网络在车镜控制上的应用。
    
    主节点用于控制lin总线,它通过对从节点进行查询,将数据发布到总线上。从节点仅在主节点的命令下发送数据,从而在无需仲裁的情况下实现双向通讯。报文的传送是在主节点发出一个同步间隔脉冲后开始的,然后跟随的是同步字段和报文字段。主节点通过在每个报文的开始处发送同步字段可设定整个总线时钟。
    
    每条报文的第二字节是一个标识符字节,它告诉lin总线随后将发送的是什么数据,并指明哪个节点应该应答及应答的长度是多少。对于给定的命令,只有一个从节点可以应答。
    
    从节点仅在主节点的控制下在lin总线上发送数据。一旦数据发布到总线上,任何节点都可以接收该数据。因此,一个从节点向其它从节点发送数据无需主节点干预。
    
    由于lin协议使用低成本rc振荡器,因此从节点必须检测主节点每次发送的波特率,并调整为当前速率,所以每次通讯都以同步字段开始,它是一个0、1交替出现的字节。
    
    同步字段之后是标识符字段,它告诉lin总线接着出现的内容。该字段进一步分为三个子字段:4位(0-3)用于对总
    
    
    当前汽车应用开发人员正面临着众多设计挑战,由于现代汽车增加了更多电子功能,对低功耗和更小印刷电路板的需求也越来越强烈,所有这些都表明在诸如车身控制和传动系统等应用领域中这样的特性将日益重要。
    
    如今汽车中的绝大多数电子控制单元互相之间都有连接,但汽车制造商对不同的应用使用了不同的总线系统。例如传动系统和制动系统多数通过控制器局域网络(can)来联系,而通讯不太密集的应用(如车窗升降电机和控制车镜的按键)则可能使用局域互联网络(lin)协议。本文将论述怎样利用lin总线来满足汽车业所需要的新增电子功能,并同时确保低功耗以及使用较小面积的pcb。
    
    
    
    图1:lin在汽车上的典型应用领域。
    
    lin协议
    
    lin协议由欧洲汽车制造商协会设计,是一种低成本短距离低速网络。它旨在传送开关设置和传感器输入等状态的变化,并对这类变化做出响应,因此可用于传送发生时间约为几分之一秒的事件,并不适用于汽车应用中的高速事件(如引擎管理)。lin的另一个目的是利用该协议的简单性降低系统成本,以便能够方便地在质优价廉的8位单片机中实现。lin总线协议的最新版本是v2.0,可以在lin联盟的网站(www.lin-subbus.de)上得到。
    
    lin支持单线双向通讯,采用廉价的由rc振荡器驱动的单片机,可省掉晶体振荡器或陶瓷振荡器的费用。虽然lin降低了系统总成本,但在时间和软件上却要付出代价,每条报文都必须经过一个自动确定波特率的过程。lin协议支持最高20kbps传输速率,以及一个低功耗休眠模式,此时总线将被关闭,不再消耗汽车电池。采用8位单片机并结合外部或内部rc有助于降低系统成本,并减少pcb实际的面积。
    
    图1显示了lin在汽车中的典型应用。总线上的地电位信号为显性状态,只要任何节点将总线电压拉低,就会出现这一状态。当总线处于电池电压且所有节点都使总线处于悬空状态时,会出现隐性状态。在空闲状态下,总线通过上拉电阻悬空为高电平。
    
    lin总线的工作电压范围为9~18v,但总线上所有部件都必须能够承受40v电压。通常,单片机通过线路驱动器/接收器与总线隔离,这种方案下总线每个节点都端接为vbat电平,主节点通过1kω电阻端接,从节点则通过20-47kω的电阻端接。总线最大设计长度为40米。
    
    每个字节都利用起始位和停止位作为头尾标志位。起始位与空闲状态相反,为0,而停止位则等同空闲状态(即1)。在每个字节内,数据从最低位(lsb)开始传送。
    
    报文协议
    
    
    
    图2:lin网络在车镜控制上的应用。
    
    主节点用于控制lin总线,它通过对从节点进行查询,将数据发布到总线上。从节点仅在主节点的命令下发送数据,从而在无需仲裁的情况下实现双向通讯。报文的传送是在主节点发出一个同步间隔脉冲后开始的,然后跟随的是同步字段和报文字段。主节点通过在每个报文的开始处发送同步字段可设定整个总线时钟。
    
    每条报文的第二字节是一个标识符字节,它告诉lin总线随后将发送的是什么数据,并指明哪个节点应该应答及应答的长度是多少。对于给定的命令,只有一个从节点可以应答。
    
    从节点仅在主节点的控制下在lin总线上发送数据。一旦数据发布到总线上,任何节点都可以接收该数据。因此,一个从节点向其它从节点发送数据无需主节点干预。
    
    由于lin协议使用低成本rc振荡器,因此从节点必须检测主节点每次发送的波特率,并调整为当前速率,所以每次通讯都以同步字段开始,它是一个0、1交替出现的字节。
    
    同步字段之后是标识符字段,它告诉lin总线接着出现的内容。该字段进一步分为三个子字段:4位(0-3)用于对总