的控制以及LIN通信。LIN总线收发器配合L I N控制器完成与各控制模块的总线通信。下面着重对主控单片机和LIN总线收发器的选型予以阐述。 1 主控单片机
按键控制器的设计存在安装空间、线束数量、成本等诸多限制,关键元器件的选型必须综合考虑这些因素,力求性价比最优。飞思卡尔半导体公司基于增强型H C S08核的8位高性能单片机M C9S08S C4 采用16-T S S O P封装,外形尺寸仅仅6.40m m×5.00m m,用于方向盘键盘控制器设计将大幅减少P C B面积。另一方面,M C9S08S C4内部自带一个时钟发生器,校准后能实现全温度和全电压范围内最大误差不超过±2%的精度,足以满足时钟精度要求最高的L I N通信应用。因此,可以直接使用内部数字时钟提供L I N通信和整个系统所需的时钟信号,省去了芯片外部的时钟振荡器,从而达到节省印制板面积和系统成本的目的。
M C9S08S C4内部集成有L I N控制器,对于汽车方向盘按键所要负责的多种控制功能,通过L I N总线可以节省线束成本、减轻重量,也便于功能的升级和裁剪。L I N总线作为一种低成本、高可靠性的汽车总线系统,已在车身电子系统中得到广泛的应用。虽然L I N控制器可以使用普通的串行口控制器U A R T实现,但是M C9S08S C4内部的串行口控制器S C I模块不仅能实现U A R T的功能,而且还集成了与L I N通信相关的某些硬件特性(例如,对于L I N通信中非常特殊的Break域的产生和检测过程)。这种硬件集成的L I N通信的功能,相比使用普通U A R T控制器可帮助用户降低L I N通信软件设计复杂度,加快产品研发周期和上市时间。
在汽车方向盘按键控制系统中,系统掉电之前的一些数据(例如,最后的音量信息或者定速巡航的速度信息)都需要在下一次上电之后恢复。如果采用传统的方法即增加一片E E P R O M来保存相应的数据,则会带来增加印制板面积和成本的双重压力。如果单片机片上的F l a s h能够模拟E E P R O M的操作实现数据的存储,那么将是最理想的解决方式。而MC9S08SC4 内部FLASH控制器自带高压泵支持F L A S H编程和擦除所需要的电压,同时支持较高的重复编程和擦除操作,也可以动态地保存参数到F L A S H中,因此M C9S08S C4内部FLASH存储器能够模拟EEPROM的操作实现数据的存储,省去了EEPROM芯片。 2 LIN总线收发器
L I N总线收发器是L I N控制器和L I N物理总线之间的接口,其选型应从L I N协议版本、静态功耗、成本等方面综合考虑。在本设计中选用的L I N收发器是恩智浦半导体公司的T J A1021。T J A1021支持最新的L I N2.1协议,数据传输速率从1~20k b p s,输入电平兼容3.3V和5V器件,具有极低的电磁发射和高抗电磁干扰性,在睡眠模式下供电电流只有10μ A左右,可实现本地或远程唤醒,L I N总线对电池和地自动短路保护。T J A1021应用电路如图2所示,具有4种工作模式:正常工作模式、睡眠模式、待机模式以及启动模式。当VBAT上电,且控制信号NSLP为低电平,T J A1021即进入启动模式。正常启动以后,若NSLP被置为高电平并超过2μ s,T J A1021则进入正常工作模式。此时,若NSLP被置为低电平并超过2μ s,T J A1021则进入睡眠模式。睡眠模式下,如果R X D信号由悬浮状态变为低电平,则说明检测到唤醒信号(T X D信号输出状态为弱下拉则为本地唤醒,强下拉则为远程唤醒),TJA1021将自动进入待机模式。V15为齐纳二极管,用来抑制汽车电源瞬态过压以保护收发器的正常工作。
按键控制器软件系统设计
在由方向盘按键控制器、收音机功能模块、车载D V D或者C D功能模块、自动巡航控制模块等组成的L I N总线系统中,方向盘按键控制器为主节点,其余为从节点。按键控制器软件主程序是采用循环方式不断扫描按键矩阵,当某个按键状态发生变化时,就调用LIN发送函数,通过LIN总
线输出相应的指令。主程序软件包括协议层软件、接口层软件和应用层软件三部分。协议层软件负责底层通信协议的实现及总线信号的产生,接口层软件提供应用程序接口,应用层软件负责具体功能的控制。
1 协议层软件
协议层是整个系统L I N协议实现的核心,负责物理链路的控制和使用,它接收来自接口层函数的调用,主要完成多字节数据的发送。在本设计中,多字节发送函数为v o i d_s e n d_data(u8 *temp, u8 num),待发送的数据数组通过指针t e m p传递,n u m为要发送的数据字节数,发送程序流程图如图3(a)所示。
2 接口层软件
接口层是协议层与应用层联系的桥梁,负责将应用层的命令转换为协议层的数据格式,然后通过协议层将这些数据发送到总线,在本设计中,接口层多字节发送函数为v o i d_u8_d a t a_wr(d a t a_h a n d l e u u u, u8*ptr),程序流程如图3(b)所示。
应用层软件主要分为3 个基本模块:总线通信模块v o i d _ L I N _s e n d(v o i d)、键盘状态检测模块v o i dk e y_s c a n(v o id)和键盘处理模块v o i dprocess_(void)。程序开始运行时,先对L I N总线进行初始化,初始化完毕就转入键盘状态扫描函数key_scan()。该函数监测键盘状态标志,如果状态改变就调用L I N_s e n d()把对应命令发送到总线上。
试验测试
根据上述方案,设计了一款简易的按键控制器,配置了3个按键来模拟方向盘按键的功能,并进行了通信试验和初步的抗干扰试验,印制电路板(P C B)如图4所示。测试方法如下:
图4 按键控制器PCB图
将按键控制器的L I N线、地线分别和自制的LIN总线测试台LI N线、地线相连,供电电压为直流12V。当任意按键按下时,控制器作为主节点主动向LI N总线发送“#F0”指令,如果LIN总线测试台接收到该命令字就启动蜂鸣器报警,同时发光二极管闪烁。实际测试表明按键控制器LIN通信功能正常。由于汽车电磁环境恶劣,因此L I N通信系统的抗干扰能力尤为重要。按键控制器在B Z-5型汽车电火花干扰试验台上进行了抗干扰试验,试验中LIN通信功能正常,达到了设计目标。