新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > 一种实用的LIN协议驱动器的设计与实现

一种实用的LIN协议驱动器的设计与实现

作者:马建辉 王知学 李小伟 王冬雪时间:2011-12-28来源:电子产品世界

  引言

本文引用地址:http://www.eepw.com.cn/article/127529.htm

  LIN总线作为的有效补充,在低端车身电子领域替代,既能满足功能要求,又能节约成本,在对成本更加敏感的国产车上得到大规模应用。不同于有专门的协议驱动器,用户不用管理底层的而直接进行应用程序的编写[1],LIN总线没有专门的协议驱动器,一般需要在SCI模块的基础上用软件实现其底层,笔者为某国产车设计了一款LIN主节点产品,结合LIN 2.0规范,首先介绍下的功能,然后从数据链路层、应用层两个方面介绍协议驱动器的关键设计技术。

  驱动器功能

  LIN规范定义了数据格式、报文格式以及基于时间片的调度机制,作为LIN主节点,需要实现的功能包括:

  1、报文的封装和发送、接收和解析,根据报文格式填充/提取ID和数据;

  2、通信管理,以调度表的方式控制时间片的轮转和相应帧的发送;

  3、网络管理,休眠和唤醒;

  LIN总线采取8N1的SCI数据格式,协议驱动器在SCI的基础上以软件的形式实现。软件就是“数据+操作”[2],作为一个可复用、移植性强的软件模块,其数据结构和API函数的设计是软件模块设计的两个重要组成部分,下面从数据链路层和应用层两个方面介绍下协议驱动器的数据结构设计和API函数设计。

  数据链路层

  数据链路层主要实现LIN报文的发送及接收,报文格式如图1所示。

  LIN报文由报文头+响应组成,报文头包括同步间隔、同步字段和标识符三个部分,其中同步间隔为10 bit 0,同步场为0x55,标识符唯一标识该报文;响应包括数据和校验两个部分,报文数据长度由应用层设计指定,也可以认为由标识符唯一指定,校验和包括经典校验和和增强型校验和两种方式,均采用带进位加法进行计算,不同之处在于经典校验和只对数据做校验,而增强型校验和的校验数据中含有标识符,诊断报文采用经典校验和,其它报文采用增强型校验和。

  由于LIN物理层为单线通信,且采取一种多从的时间片轮转方式,不存在CAN总线的竞争总线问题[3],所以LIN节点发送数据可以回读到同样的数据,其报文的发送和接收可以统一在SCI的接收中断中,以状态机的形式实现[4],状态对应报文的各个组成部分,状态机跳转条件便是数据接收中断。根据LIN报文结构,设计如下形式的结构体:



评论

技术专区

关闭