引言
笔者设计的低功耗、低成本、基于MSP430的TV IR红外远程控制器包括很少的外围元器件。设计中使用2个定时器3捕获/比较模块和5 V的数字I/O端口,使用的代码小于700个字节。外围电路使用IR红外发光二极管、三极管MMBT2222、2个电容(220 μF和0.1 μF)、3个IN4148二极管,3个1/4 W的金属膜电阻,3 V的CR2032封装的锂电池和6个按钮。
1 IR(红外)远程控制原理
一个电视机红外远程控制必须通过按键来接收用户命令,同时通过红外线发送IR红外信号。为了让接收器准确识别发送器的信号,必须滤除其他外部干扰的红外信号。IR远程控制调制红外信号,通常使用的频率为30~60 kHz。在应用中,屏蔽掩码位定义作为40 kHz调制的红外信号。特殊的红外协议定义了如何将这些屏蔽位和数据命令用于用户红外收发器。
2 RC5协议
RC5协议是典型的曼彻斯特编码的数据协议报文格式。曼彻斯特编码的数据格式是一个统一的国际标准格式,通过发送码中间位的上跳/下跳来判断数据位0/位1。RC5红外数据包包括14位:2个启始位(S1和S0),1个控制位C,5个地址位(A4~A0)和6个命令代码(C5~C0)。整个数据报文接收是从高位开始的。
图1表示在MSP430上实现红外RC5数据报文通信的格式。起始位总是发送1,一旦监测到有新的按键按下时,控制位取反码。5个地址位代表32个不同的红外收发器接收地址。6个命令位代表64个发送命令。RC5协议中每位的周期是1.78 ms,一半周期为高电平,一半周期为低电平。整个数据报的位时间总长为25 ms。
图1 RC5数据包收发格式
3 时钟选择
图1表示了RC5数据报文收发的时序。在收发期间,必须产生40 kHz的PWM信号。MSP430F2xx家族内带的数字控制晶振(DCO)是很稳定的,不需要外接晶振,允许从LPM4模式快速唤醒(小于1 μs的时间),这样大大降低了系统成本。
MSP430F2xx家族内部的CALDCO寄存器可以用于DCO晶振在不同操作频率下的校准。本设计使用1 MHz的DCO操作频率。在本程序中,CALDCO_1MHZ和CALBC1_1MHZ都设计了合适的数值DCOCTL和BCSCT1。
为了获得40 kHz的PWM输出,定时器3使用自加模式。在CCR0的设置周期为24时,可以达到40 kHz的频率。CCR1检测占空比,低占空比周期可以扩展电池的寿命,但是占空比必须足够大,以保证红外二极管对数据的调制和识别。此处设置CCR1中的数为7,产生29%的占空比。
当定时器3配置为产生40 kHz的PWM输出时,TACCR0寄存器使能。为了在0.89 ms后数据位变到下一个发送位,TACCR0中断开始计数。TACCR0中断计数主要用来决定下一位数据发送是否完毕。具体程序设计可以参考源代码。
4 硬件电路设计
设计时常常要考虑的是系统成本、产品尺寸、电池寿命和IR红外收发器的工作距离。
使用MSP430的TV IR远程控制器电路原理如图2所示。设计中,使用低成本的CR2032 锂离子电池(3 V)。为了获得瞬间较高的驱动电流,不能从锂离子电池获得,为此用电容C1来带动IR红外二极管。电容C1是通过R1充电的。当红外发射时,通过电阻R2放电。C1、R1和R2的选择在设计中是很重要的。R2决定了给红外LED提供的拉电流能力,决定了红外发射的距离。R1决定了给C1充电的速度。C1必须足够小,以满足合适的充电时间;C1太大,对锂电池的寿命会有影响。根据R1和R2数值的不同,电容C1必须足够大,以满足红外数据包完整的发送过程。
图2 MSP430 TV IR红外远程控制电路原理
在远程控制应用中,MSP430F2xx家族产品降低了对更多外围元器件的要求。由于内部晶振DCO很稳定,不需要外部晶振;同时MSP430F2xx有软件可选的内部电阻上拉和下拉端口。节省了很多元器件,减小了电路板的尺寸,降低了成本。
5 功耗分析
每次发送的时候,应将CPU从睡眠状态激活的时间<1 500个时钟周期。当系统运行在1 MHz下时,唤醒时间<1.5 ms。唤醒这段时间,MSP430消耗的电流接近170 μA。在红外收发的过程中,收发一次的时间接近114 ms(包括系统延时判断按键是否按下)。MSP430在LPM0下操作使用,消耗的电流接近55 μA。当MSP430等待用户按键按下时,其消耗的电流只有0.1 μA(MSP430在LPM4模式下工作)。
6 软件设计
软件设计主程序流程如图3所示,红外收发流程如图4所示。当MSP430芯片启动工作时,系统首先初始化外设,进入LPM4模式。当从P1.0和P1.1口接收到中断信号时,MSP430被唤醒,按键软件消抖,同时判断是哪一个按键按下,执行相应的红外数据命令发送。这些发送的红外数据命令包括启始位、反码位、地址位和数据位。屏蔽掩码位是在时钟选择模式下设置的,当屏蔽掩码位被发送后,MSP430操作在LPM0模式下。
图3 软件设计主程序流程
图4 红外收发流程
当所有的位发送完毕后,定时器A重新配置产生89 ms的中断;当中断发生时,MSP430检测是否有按键按下。如果按键按下,反码位和命令将被反复发送;如果没有按键按下,程序返回到主程序,MSP430将工作在LPM4模式下。
本文给出了软件设计源代码。软件是在IAR 嵌入式开发平台3.21A版本下开发的,可以很方便将核心应用代码(例如RC5协议)移植到其他嵌入式微处理器中。
源代码略——编者注。
结语
笔者使用MSP430F21X1芯片设计了电视机红外远程控制的低成本方案,采用标准的RC5红外协议,同时设计中考虑到了系统元器件的合理优化配置。该产品有一定可靠性和通用型。本文提供的详细软件代码和硬件原理图,可以很方便地移植到其他嵌入式微处理器,有一定推广价值。