原创 Freescale LIN总线应用开发平台

2009-9-10 17:30 3927 6 6 分类: 汽车电子
 引言
  

       在汽车电子系统中,主要存在如图1所示的几种网络协议juhao.jpgLIN主要应用低速(<20Kb/s)的车身控制环境juhao.jpg


       低速CAN多用于事件驱动的控制环境(125Kb/s),高速CAN(>500Kb/s),Flexray和Byteflight主要应用于时间驱动的同步高速控制环境,而D2B和MOST主要应用于汽车娱乐(图像和语音)的传输和控制juhao.jpg


       就车身控制而言,主要的应用基于CAN/LIN总线协议juhao.jpg基于CAN总线车身控制,在汽车电子上已经有广泛的应用juhao.jpg随着车上总线节点的增加及高性能系统向中低档汽车的发展,CAN总线相对较高的实现成本就成为一种障碍juhao.jpg因此LIN总线随之产生juhao.jpg由于LIN硬件的实现是基于普通的串行通信接口(SCI),甚至在子节点中可以用普通I/O口加上定时器进行模拟,所以其实现成本较低juhao.jpgLIN的目标应用是不需要CAN的性能、带宽及复杂性的低端系统juhao.jpg通常LIN子总线是现有的CAN网络的扩充,与CAN网络一起形成汽车的控制网络(图2)juhao.jpg当然,由于其成本较低,也可以独立用于不是特别复杂的车身控制网络中juhao.jpg
  


      为了加速基于LIN总线控制系统的开发周期,Freescale半导体公司开发了LIN开发平台(LIN DEMO)juhao.jpgLIN DEMO系统提供了完整的软件和硬件,其中,软件包括标准的LIN底层驱动软件和LED显示的应用软件juhao.jpg用户可以在此平台上很快的搭建起LIN控制网络juhao.jpg 



       LIN DEMO应用系统


       DEMO节点
  


       LIN DEMO(图3)由2个主节点(9S12C32和MC68HC908GZ60)和4个从节点(MC68HC908GR60、MC68HC908EY16、MC68HC908QY和MC68HC908QL组成juhao.jpg每个LIN节点上,都提供了调试和编程接口(BDM接口(16位单片机)和CYCLONE/Multilink08接口(8位单片机)),同时每个节点还有1个RS232的串口,可以和PC通信juhao.jpg主节点有两种工作模式,两种模式的切换由1个转换开关来控制juhao.jpg


       LIN总线睡眠模式(此模式下,与主节点相连的所有从节点都处于睡眠模式,主节点不发送任何帧头juhao.jpg


       LIN总线工作模式(此模式下,主节点发送帧头,LED灯用来显示从节点LED的状态juhao.jpg




       LIN总线工作模式下,主节点LED显示LED状态有变化的从节点LED状态juhao.jpg每个从节点有4个LED灯,这些灯的状态可以通过1个单片机的键盘中断引脚来改变juhao.jpg主节点有8个LED灯,其中的右边(低位)4个LED用来显示从节点LED灯的状态,另外的左边(高位)4个LED灯用来从节点的类型和ID号,其中2个用来显示节点类型(GR、EY、QY和QL),另外2用来显示和此从节点类型相匹配的节点ID号最低的两位juhao.jpg
   


       这样主节点上左边(高位)4个LED为i*16的高4位juhao.jpg同时,主节点上右边(低位)4个LED用来显示从节点LED的数值(同样次序的LED灯亮)juhao.jpg
   


       所有的从节点可以在不断电情况下加入或者脱离总线juhao.jpg当监测到有新的从节点加入,主节点从0到7清除主节点的LED,然后把该节点存入主节点LED的显示序列juhao.jpg当监测到有节点脱离总线时候,主节点从7到0清除主节点的LED,然后从主节点LED的显示序列去掉该从节点juhao.jpg PCB设计网
   


       正常工作模式下,复位后,每个从节点响应对于该从节点ID(可以重新配置)的主接点帧头,响应的数据定义为2个字节juhao.jpg按动从节点上的开关,可以增加从节点上LED的值(从1到15,除去全为零的情况)juhao.jpg当从节点上的LED值变化之后,主接点上的LED的右边(低位)4个LED将显示对应从节点上LED的值juhao.jpg
   


       在模式配置模式下,用户可以改变从节点的IDjuhao.jpg从节点的LED用来显示本节点的ID号juhao.jpg从节点上第一位的LED点亮,表示XXXXXX00;第二位的LED点亮,表示XXXXXX01;第三位的LED点亮,表示XXXXXX10;第四位的LED点亮,表示XXXXXX11juhao.jpg
  


       当所有的从节点连接到主节点并且工作正常的时候,通过拨动主节点上的1个开关,我们可以很容易的让从节点进入睡眠状态juhao.jpg拨动此开关到OFF档,5秒钟以后,GR60和EY16就进入了睡眠(QY4不支持此操作)juhao.jpg



DEMO硬件结构


        图4是MC68HC908EY16的基本电路原理图,它包含了LIN节点和3个跳线juhao.jpg值得注意的是,这些跳线只是在对芯片编程和调试的时候用到juhao.jpg对芯片编程和调试时,需要用到Freescale的开发工具(MULTILIN08/12、CYCLONE08),通过这些工具再和PC相连juhao.jpg完整的电路图,还包括一些编程接口和双排接口(连接MCU的引脚到其他的应用中)juhao.jpg
   


        基本的LIN节点电路图比较简单,主要包括MCU,LIN物理层接口和1个5V的电压调节器juhao.jpg本电路中,物理层接口用MC33399,电压调节器用的是LT1121,可以被Freescale一颗新的系统基础芯片(SBC)所替换juhao.jpgMCU允许MC33399控制电压调节器juhao.jpg当LIN总线上没有任何活动时,MC33399控制电压调节器LT1121停止工作,从而使MCU掉电,使LIN从结点进入睡眠状态,整个从节点的静态电流将小于50微安juhao.jpg在从结点的电路板(除去QY4)上,我们可以看到所有的LED灯都关闭了(程序的最初设计,使得当MCU上电后,总是有1个LED灯是亮)juhao.jpg
   


       其他节点得电路图和MC68HC908EY16的差不多juhao.jpg48脚的GR60主要是用于一些高端应用的LIN节点中,但是GR60没有内部时钟,需要外接1个时钟juhao.jpgGZ60和GR60比较接近,但是,GZ60主接点上多出了1个MC33388的CAN接口juhao.jpgC32是16位单片机,和8位单片机相比,它有了BDM模块,相对于8位单片机的MULTILINK接口,调试简单了很多juhao.jpg



                                                               DEMO软件结构
       1.主节点的软件结构






       主节点的软件流程图见图5juhao.jpg在单片机和LIN驱动程序初始化以后,通过主节点PCB板上的1个开关,调整LIN是否被允许工作juhao.jpg如果睡眠,主节点上的LED灯会关闭;如果LIN总线工作,则主函数Main将会周期的发送帧头到从节点juhao.jpg所有的ID号(如表1)在idList[16]中定义juhao.jpg如果函数LIN_MSG_STATUS()显示有对应于帧头的特定ID,从节点有反应,则反馈回来的数据被读取,同时,检查idActiveList[16]判断这是否为新的LIN从节点,如果是,则idActiveList[16]对应的位置1,然后NewNode()函数被执行,节点的LED灯显示有新的节点加入juhao.jpg
  


       如果对应于帧头的特定ID,从节点没有反馈,则检查idActiveList[16]判断对应的位置是否为1,如果为1,则表明有节点被除去juhao.jpg同时,LostNode()函数执行,节点的LED灯显示有节点丢失juhao.jpg


       2.从节点的软件结构
  


       首先,配置寄存器(CONFIG),I/O寄存器和定时器寄存器初始化juhao.jpg初始化完成后,进入主程序While(1)循环juhao.jpg对GR60和EY16,程序中的定时由时间基准模块来实现(TBM)juhao.jpg由于QY4没有时间基准模块(TBM),所以程序中的定时由定时器来实现juhao.jpg由于不同的从节点上,时钟不一样,所以每个从节点执行完1个主程序程序环的时间也不一样juhao.jpg程序中我们用#Define定义了2个时间周期:按一次开关的时间(按下和跳起,60毫秒)和持续按住开关的时间(3秒)juhao.jpg对于第3个定时(LIN总线持续5秒没有活动,则进入睡眠)在文件Slave.cfg中定义juhao.jpg


080122150736306.jpg


       图6是LIN从节点的主软件结构juhao.jpg当完成初始化工作,进入主循环之后,如果LIN总线5秒钟没有活动,则进入睡眠状态;如果由,则查看按键(开关)的类型判断是进入ID节点的配置模式,还是进入正常模式juhao.jpg如果是正常模式,则将数据(DATA)写入LED,若进入ID节点配置模式,则配置ID,然后将ID写入LEDjuhao.jpg


080122150744137.jpg


表1


080122150749218.jpg


表2


080122150754499.jpg


                                                              表3
  


        图7是按键软件流程图juhao.jpg首先判断按键有没有被按下,如果有则计算按键被按下的时间juhao.jpg如果按键按下的时间超过3秒,则进入节点ID配置模式(从0到4,然后再到0,反复进行);如果按键按下的时间为60毫秒,则数据(DATA)加1,然后用这个数据给LED显示,同时反馈给主节点(主节用LED显示此数据)juhao.jpg


       3.LIN底层驱动软件
   


       前面的两个小节我们讲到了应用软件juhao.jpg本小节将对LIN底层的驱动函数作一个介绍juhao.jpg首先是数据类型(表2),主要的数据类型是无符号8位数,惟一的一个16位数,用来给地址变量(指针)juhao.jpg在驱动函数中,主要用到的常量有两种,一种用来标示LIN总线的驱动状态(表3),一种用来表示LIN传输过程中消息帧的状态(表4)juhao.jpg由于篇幅有限,与作者联系可获得免费的软件源程序juhao.jpg


      总结
   


       Freescale的LIN节点通信演示平台,提供了一个很好的LIN控制开发平台juhao.jpg用户可以基于此LIN控制开发平台的软件(驱动程序)和硬件非常简单的编写自己的应用程序(利用CODEWARRIOR集成开发环境),然后利用此平台的底层驱动软件和硬件环境,利用与PC相连的通信接口,烧写程序,并进行调试juhao.jpg


      参考文献


     1 Motorola Inc.,MC68HC908EY/D,09/2003.
     2 Motorola Inc.,MC68HC908QY/D,09/2003.
     3 Motorola Inc.,MC68HC908GZ/D,09/2003.
     4 Motorola Inc.,MC68HC908GR/D,09/2003.
     5 Motorola Inc.,MC9S12C32,2003.
     6 LIN Protocol 1.3.
     7 AN2573/D,2003.
     8 AN2396/D,2003.

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条