新闻中心

EEPW首页>嵌入式系统>设计应用> LIN总线技术在汽车智能灯控系统中的应用

LIN总线技术在汽车智能灯控系统中的应用

作者: 时间:2012-03-29 来源:网络 收藏

下面对灯控模块控制思想及在其中的做出具体分析:在启动并进行初始化以后,子模块1开始启动一个定时器,实现周期性地对数字量诊断输出的车灯和模拟电流传感器诊断输出的车灯进行检测(检测不同开关向微控制器反馈的数字和模拟故障信号),对于出现故障的车灯信息,通过传输到子模块2。传输信息包括故障车灯的名称、故障车灯所在的诊断组(数字量诊断组或模拟量诊断组)和故障状态(断路或短路等)。子模块1同时亦接收来自于子模块2的仪表盘的车灯按钮扫描信息,该信息包含了驾驶员对于车灯状态的要求(开通或关断)。然后结合诊断结果及仪表盘的扫描结果,决定是否打开车灯或关闭车灯。子模块2通过接收子模块1传输过来的车灯的故障诊断信息,周期性的通过LCD进行显示。同时亦周期性的扫描仪表盘的按钮状态,并通过LIN总线传输到子模块1。

灯光控制模块作为车身低端网络,传输数据量小,对传输快速性要求不高,20kBaud完全可以满足对传输速率的要求。相比于具有更多优良性能而价格也更高昂的CAN总线,LIN总线成本较低,容易在UART中实现,并具有较好的容故障能力和传输可靠性。在综合考虑总线的硬件与软件成本和总线的可靠性之后,选择LIN总线实现灯控模块内部两个子模块间的数据传输,而CAN总线则用于灯控模块与车身内部其他ECU之间的通信。

3.1 LIN总线硬件接口电路

LIN总线硬件接口电路如图5所示,该模块分为主节点和从节点两个单元。供电电源电路采用英飞凌TLE4278电压调节器实现,输入Vi为12V,输出Vq为5V。收发器采用英飞凌TLE 6258系列LIN总线收发器。从安全角度考虑,主节点电路在电源引脚和总线间以及总线和参考地之间分别连接1kΩ电阻和1nF电容,以保证总线信号在显性电平和隐性电平间切换时有合适的时间延迟。

TLE 6258是单线收发器,适用于LIN协议,与LIN规范1.2兼容,发送速率可达20kbps,功率消耗低,且具有短路保护和过温保护等功能,特别适于作为和工业,且可用于标准的ISO9141。为了减小电流损耗,TLE 6258提供了一种空闲模式。在空闲模式下,TLE 6258退出总线活动,既不接收也不发送数据,电流降到最低,从而达到减小电流损耗的目的。TLE 6258在正常工作模式和空闲模式之间的切换过程如图6所示,在正常工作模式下,通过对ENN置1进入空闲模式。在空闲模式下,通过在总线上发送唤醒帧,可把主机或从机从空闲模式唤醒,返回到正常工作模式。进入正常工作模式后,ENN变为0,释放RxD为传输数据状态。

3.2 LIN总线通讯软件设计

LIN软件基于几个状态机制和功能块,状态机制通过串行接口的中断调用,在程序中用nTRANSCEIVER_STATUS表示每个状态。主机任务发送同步间隔场(Synch Break Field)、同步场(Synch Field)和标识符场,如果从机在总线上检测到匹配的标识符,它会接收或发送数据到总线(这里假设数据字节是8个,主机为接收数据,从机为发送数据,也可定义为主机发送数据,从机接收数据)。以下(1)~(3)为主机任务,(4)~(13)为从机任务。

(1)发送同步间隔场;

(2)接收同步间隔场和发送同步场;

(3)接收同步场和产生/发送ID域;

(4)接收ID域(报文过滤),拷贝数据到缓冲器(LIN transfer buffer) 并发送第一个数据字节;

(5)接收第一个数据字节和发送第二个数据字节;

(6)接收第二个数据字节和发送第三个数据字节;

(7)接收第三个数据字节和发送第四个数据字节;

(8)接收第四个数据字节和发送第五个数据字节;

(9)接收第五个数据字节和发送第六个数据字节;

(10)接收第六个数据字节和发送第七个数据字节;

(11)接收第七个数据字节和发送第八个数据字节;

(12)接收第八个数据字节和计算/发送校验和域;

(13)接收校验和域。

为了传输汽车灯控模块中所需要的信息,定义了7个字节变量a0、a1、a2、a3、a4、a5和a6,用于存储车灯故障状态信息;另外还定义了两个字节变量key_result0和key_result1,用于存储仪表盘的车灯按钮扫描信息。

车灯故障状态信息的定义分为数字量诊断组和模拟量诊断组:数字量诊断组包括驻车灯、示警灯和尾灯等20盏灯;模拟量诊断组包括前照灯、雾灯等6盏灯。每盏灯的故障状态有三种情况,用两个“位”来表示:正常状态(DIAG_OK),用“00”表示;断路状态(DIAG_OPEN_LOAD),用“01”表示;过载状态(DIAG_OVERLOAD),用“10”表示。例如,左驻车灯用a2的低两位表示,定义为static sbit parklightfrontleft_lowbit=a2^0、static sbit parklightfrontleft_highbit=a2^1;a2^1=0,a2^0=1,则表示驻车灯处于断路故障状态。如此推算,模拟量诊断组6盏车灯,故障状态信息需要占用12位,我们用字节存储器a0和a1表示;数字量诊断组20盏车灯,故障状态信息需要占用40位,我们用字节存储器a2、a3、a4、a5和a6表示。车灯故障状态信息共计7字节,采用字节数为8的报文帧格式传输,第8个字节用0补齐。

仪表盘车灯按钮共计16个开关量,每个开关量有两种状态,用一个“位”表示:按钮关断,用“1”表示;按钮打开,用“0”表示。我们用两个字节存储器key_result0和key_result1存储按钮信息,报文帧含有两个字节的数据量。

发送数据字节过程如图7所示。以发送车灯故障状态信息为例,这个状态机制用于把数据字节发送到总线上去,ID被定义为发送ID(SEND_ID)。

子状态及相应的收发器状态如下。

子状态1~8:节点用于发送数据字节 接收中断 LIN_vRxd_Interrupt;

子状态9:节点用于发送数据字节 接收中断 LIN_vRxd_Interrupt;

子状态10:校验和域已经被正确接收 接收中断 LIN_vRxd_Interrupt。

其中,子状态1接收中断中调用功能函数UCB_Txd,该函数获取用户数据存储的首地址。

接收数据字节过程如图8所示。以接收仪表盘车灯按钮信息为例,这个状态机制用于接收来自总线的数据,ID被定义为接收ID(REC_ID)。



评论


相关推荐

技术专区

关闭