时间:2011-10-15
点击:
【大 中 小】
图1 基于S12XS128实现的BCM硬件系统结构 1.3 开关信号检测 在BCM的设计实现中,由开关状态及其状态变化触发对控制负载的控制是最常见也是最重要的一种控制方式,由于开关信号繁多,而且BCM的控制负载多采用10的方式进行控制,这样在XS128的IO引脚有限的情况下,怎样完成对多个开关状态的监测成为设计中的一大挑战。同时对于电池供电的汽车电子应用而言,BCM本身有低功耗的需求,当满足低功耗条件时,进入低功耗模式,系统关断不必要的模块,降低功耗;当若干特定开关的状态发生变化时,系统需要启动相关模块,进入正常工作模式,这样不仅要实现正常工作模式下的开关状态采集及其状态变化的捕捉,还需要实现低功耗模式下的唤醒功能。
对部分开关信号采用分立的方式进行采集,其余则采用Freescale可编程多路开关检测接口芯片MC33993实现,其硬件电路如图2所示。 
图2 硬件电路图 MC33993通过SPI和处理器通信,可检测22路开关量输入信号,并可以设置哪些开关通道可以触发中断。首先XS128通过SPI向MC33993发送控制命令字,进行初始化设置,设定MC33993的工作方式,并使能那些中断唤醒的开关通道的可触发中断功能。在正常工作模式下XS128通过SPI接口周期读取MC33993的开关状态,在低功耗模式下可触发中断的开关通道状态发生变化时,便可以唤醒XS128,进入正常工作模式。 2 软件设计 2.1 软件流程设计 BCM的软件设计采用初始化 循环体的软件结构,软件流程图如图3所示。首先进行全局变量和所用外设(包括IO、ADC、SPI、PWM、TIME-R、SCI)的初始化,然后在循环体内依次进行开关信号检测、LIN通信、RKE通信以及负载控制。对负载控制逻辑而言,开关信号、LIN信号和RKE信号都是触发其控制操作的输入信号,而且由于需要把若干开关信号填充到LIN帧中,所以把负载控制放在循环体的最后,各软件模块次序如图3所示。 
图3 软件流程图 2.2 开关信号检测软件设计 在BCM的开关控制逻辑中,开关信号的状态及其变化经常作为某个控制逻辑的背景条件和激励信号,所以在程序设计时,对单个物理开关信号需要确定其当前状态及状态跳变(包括开关闭合到断开和开关断开到闭合的变化)。由于BCM需要采集的开关信号比较多,为了程序的简洁和逻辑的清晰,定义一个结构体将各路开关信号统一起来,利用结构体的位变量特性节约变量空间,利用结构的统一性节约开关信号检测函数的代码空间。设计结构体如下: 
在上述结构体中Switch表示开关信号的当前状态,Swon_event和Swoff_event分别表示开关从断开到闭合和从闭合到断开的变化,CurSw和Detect_cnt用于开关信号采集、的软件消抖功能。设计一10 ms的定时器,周期读取开关当前状态,3次确认以判断Switch、Swon_event、Swoff_event。其代码实现如下: 


MC9S12XS128解密采用MC9S12XS128设计实现了一款车身中央控制器BCM,从处理器特性、硬件结构、多路开关扩展及开关信号检测等方面描述了BCM的硬件设计,从软件流程设计,开关信号状态监测及变化捕捉的软件实现上描述了BCM的软件设计。该BCM经装车试验,运行稳定,功能可靠,已经进入小批量预生产阶段,具有很高的实用价值。
724950058