在某煤矿900MHz调度移动数字通信系统项目中,为了实现系统中移动台部分的键盘设计,笔者在该项目中的RF部分采用了TI公司生产的 MSP430F149单片机来控制RF专用芯片TRF6900,同时在此基础上,利用MSP430F149的其它可用硬软件资源设计了一种可满足便携式移动台低功耗要求的4×4键盘。在该设计中MSP430F149单片机工作在2种省电模式下,I/O口和16位计数器中断源唤醒处在LMP0、LMP4工作 模式下,当在LPM0、LPM4模式下的电流消耗典型值分别为70μA和0.1μA(VCC=3V),唤醒时间为6μs。该方案也适用于其它系列的 MSP430系列单片机,而且所用的外围元器件很少,非常适合于便携式产品的设计应用。
1硬件电路组成
该设计方案的硬件电路如图1所示,它采用行列式键盘,其 中4行分别接在P4.0~P4.3上,4列分别接在P2.0~P2.3上。由于MSP430F149单片机的P1.x和P2.x都能做中断源,而P3.x 和P4.x则不行。该电路采用中断工作方式。
2工作原理
2.1工作模式和时钟的选择
MSP430F149是TI公 司推出的具有5种低功耗工作模式的16位单片机,它有活动模式(AM)及5种用CMOS技术设计的超低功耗工作方式(LPM0_LPM4),而这6种模式是由标志位寄存器(SR)中的SCG1、SCG0、 OSCOFF和CUPOFF等4位通过控制位软件进行组合来确定的,当CUPOFF位复位时,MSP430F149为活动模式,此时其它3位可组成5种不 同的低功耗工作模式,它们的区别在于可否对3种时钟信号进行不同的配置。这3种时钟信号分别是:MCLK主时钟(用于CUP的时钟源)、SM-CLK子时 钟和ACLK辅助时钟。它们可由外接晶振获得,也可以由数字控制振荡器DCO经软件选择分频因子进行分频而得到。对于电池供电的小电流应用系统,为了解决 作为通信控制单元的MSP430F149在收发信令或通话时要求高频时钟,而在节电状态要求低频时钟的矛盾,可在收发信令或通话时,采用外接8MHz晶振 将16位定时器模块Time A的时钟源设置为来自ACLK,并设ACLK也取自外接8MHz晶振。而在键盘处理时,关闭外接8MHz晶振以使主时钟MCLK来自DCO,16位定时器模块Time_B的时钟源设置为来自SMCLK,并设 SMCLK也取自DCO,虽然DCO的精度会受到温度、电压的影响,但在实时性要求不高的键盘处理时还是完全可靠的。
2.2中断处理
在活动模式下,CPU响应中断的过程与MSC_51系列相似,在此不做累述。而在低功耗模式下,在对通用中断允许位(GIE)及相应中断允许位置位时,CPU响应中断应做以下工作:
●CPU结束省电模式,进入活动模式。
●将指向下一条指令的PC值和包含工作模式控制位的 SR推入堆栈。
●如果在进入省电模式前已有多个未被响应的中断请求发生并等待服务,那么,应选择优先级最高的来执行。
●在单一中 断源标志中的中断请求标志位应自动复位,而多中断源标志仍应保持置位以等待服务。
●SR寄存器中除SCG1外,其他各位都应复位。
●相应的中断向量值应放入PC,并使程序从该地址处执行中断处理。
中断结束(CPU执行RETI指令)时应做以下两项工作:
● 将SR从堆栈中推出,使CPU回到中断前的状态。如果在中断程序中对堆栈中SR的工作模式控制位进行了修改,则可使CPU回到其它工作模式,本设计就是采 用这种方法使CPU从睡眠状态经中断延时后回到活动状态的。
●将PC从堆栈中推出。
3软件结构
在没有通话和没有按键期间,本移动台将处在接收信令状 态,MSP430F149采用Time A作为中断定时以接收基站或其它移动台的呼叫。在此状态期间,P2.0~P2.3被设置成上升沿中断有效。而当有键按下时,MSP430F149将响应中 断并进入键盘处理过程,在中断程序中,应先将Time A的中断使能复位,然后再使P2.0~P2.3中断标志和中断使能复位。MSP430F149接着将对Timer B进行40ms延时设置以实现键盘去抖功能,之后再将工作模式设置为LPM0方式。这样,在Timer B从开始计时到40ms计时结束产生中断期间,MSP430F149将工作在LPM0方式,此时系统主时钟停止,CPU禁止工作,外围模块的时钟信号 SMCLK、ACLK保持激活,Timer B选取SMCLK做时钟源,MSP430F149响应Time B中断并自动将SR和PC移入堆栈之中,同时SR中的工作模式被自动设置为活动模式(AM)以执行中断程序,并在中断程序中将堆栈中的工作模式控制位复位,以使中断结束时能够返回MSP430F149所处的活动状态,否则中断结束后,MSP430F149将仍回到LPM0方式。
在经过40ms后,CPU返回活动模式并开始键盘扫描。键盘扫描的程序框图如图2所示。当 有键按下时,逐行(P4.0~P4.3)置高电平,同时读入各列(P2.0~P2.3)状态,如果列状态出现非全零,此时非零状态的行、列交点就是所按的键。
如果无键按下(键值Y=0),系统将再次进入接收信令状态。而在有键按下时,Y的高4位为列号,低4位为行号。当1行中有多个按键按下 时,如果列号不为1、2、4、8,系统将不进行键值转换。否则,MSP430F149将通过查表进行键值转换,然后等待按键释放。此时,若有键按下,则将该键所确定的行号重新置位,而将其它行复位,同时设置P2.0~P2.3中断下降沿有效,并将MSP430F149设置为LPM4状态以等待按键释放。在此状态时, MSP430F149的全部活动停止,功耗最小,只有RAM、I/0口和寄存器的内容保持原状态,其余所有时钟信号将停止。直到LPM4由外部中断唤醒。 而当按键被释放且P2.0~P2.3在下降沿产生中断时,被唤醒的MSP430F149将首先执行去抖延时以排除由抖动引起的下降沿中断,然后再执行键盘扫描。如果键值为零,则结束键盘处理过程以使MSP430F149返回接收信令状态。整个过程的程序框图如图3所示。
因为只有1行为高,所以当同时有4键在该行按下时,电流消耗为该键盘系统的最 大值,而其它行有键按下时并不增加电流消耗。因此,采用每行循环置位驱动而将列接地的目的就是为了限制最大电流消耗。
如果将该键盘的硬件设计 和软件设计应用在不需处理的键盘上时,该设备相当于“静止”状态,这样,它的效益将更加显著,因为在不需要键盘处理时,系统中的控制器将被设定为省电工作 方式,直到有键盘中断时才将控制器激活。对于本系统,如果移动台只作为主机呼叫,那么,电池寿命将会得到极大地延长。
参考文献
1.孙继平.矿井移动通信系统性能探讨.煤矿自动化,1999(1)
2.胡大 可.MSP430系列超低功耗16位单片机原理 与应用.北京航空航天大学出版社