芯片电路的功耗主要来自开关的动态功耗和漏电的静态功耗。动态功耗主要是电容的充放电(包括网络电容和输入负载)以及P/N MOS同时打开形成的瞬间短路电流。静态功耗主要是扩散区与衬底形成二极管的反偏电流和关断晶体管中通过栅氧的电流。工作时序及软件算法设计有缺陷,会降低系统工作效率、延长工作时间,也会直接增加系统能量的消耗。本文将具体阐述低功耗设计理念在基于MSP430和MFRC522的非接触式读写器上的应用与实现。
模块电路设计
系统选用MSP430F413单片机和MFRC522射频芯片。为简化系统结构,本系统仅由低电压报警单元、MCU单元、射频收发单元、天线、红外发射接收以及外围信号组成。
本系统选用的是SPI接口方式,其连接图如图1所示。
MSP430选用JTAG接口下载仿真程序。为了进一步减少功耗,在系统处于休眠模式时可通过指令关闭SPI接口和MCU中无用的端口。
射频卡读写器采用电感耦合式天线,主要用于产生磁通量,而磁通量用于向射频卡提供电源并在读卡器与射频卡之间传输信息。当一个RFID系统正常工作时所需的磁感应强度B一定时,安培匝数NI由环形天线的边长a以及标签和读写器天线的距离x来共同决定。其关系式为:
电感耦合式天线的特征值主要有品质因数(Q)和谐振频率。一般而言,Q一方面衡量能量的传输效率,另一方面也衡量频率的选择性。对于并联谐振回路,Q可以定义为:
Q=2πfRC=R/(2πfL)(f在本系统中为13.56MHz) (2)
式中:f为谐振频率;R为负载电阻;L为回路电感;C为回路电容。Q值越高,天线的输出能量越高,然而太高的Q值会干扰读写器的带通特性,从而无法遵从协议标准。一般来说,Q=20时,整个系统的带通特性与带宽都比较好。RFID系统中的品质因数一般在10~30内取值,最大不要超过60。
MFRC522从TX1和TX2引脚发射的信号是已调制的13.56MHz载波信号,辅以多个无源器件实现匹配和滤波功能,以直接驱动天线。其匹配电路和信号接收电路如图2所示。
红外发射接收电路部分的设计目的是为了节省电源开支,当系统处于休眠模式时停止发射无线电波,可外加一个红外对管来检测是否有卡进入天线范围。当红外接收管接收到外界有卡时立即进入中断,跳出休眠模式,对外发射无线电波,并进行相关的操作。这种通过指令间断打开红外发射管检测是否有卡再进入中断唤醒 CPU和打开天线的方法缩短了天线和红外管的电流消耗,从而节省了功耗。
软件设计
CPU的运行时间对系统的功耗影响很大,所以应尽可能缩短其工作时间,使系统较长时间处于休眠或低功耗模式。当系统上电完成初始化操作后立即进入休眠模式,只有当红外接收管接收到信号时产生中断才打开天线进入工作模式。其中断服务程序如下:
#pragma vector=PORT2 _VECTOR__interrupt void Port_2(void)
{ LPM3_EXIT; //退出休眠
PcdAntennaOn(); //开启天线
PcdReset(); //RC522复位
P1OUT = 0xFF; //打开SPI接口
station=1; //转入工作模式
P2OUT|=BIT6; //LED亮
P2IFG&= ~(BIT7); //清除标记}
图3是程序运行的流程图。
MSP430有五种低功耗模式,本系统采用的是LPM_3,此时DC发生器的DC电流被关闭,只有晶振活动。用晶振做系统主时钟和定时器时钟源,对红外接收管脚中断使能定义,使红外发射管每隔0.24s发射一个0.03ms的脉冲,间断地检测在天线范围内是否有卡,有卡时红外接收管产生中断进入中断服务程序。这样让I/O口间歇运行既不影响正常读卡也能节省电能。
尽量减少CPU的运算量,将一些运算的结果预先算好,放在Flash里,用查表的方式代替实时计算,需要运算时最好使用分数运算,尽量避免浮点数运算。定义变量时,尽量使用字符型变量。减少CPU的运算量可以有效降低CPU的功耗。
总结
本文利用MSP430单片机的中断、定时、运算等功能,借助于软件优势,及MFRC522的低电压,小体积等特点,使读卡器读卡距离为0~60mm,休眠模式的电流<10μA,工作模式时电流约为150mA,延长了电池的寿命,增加了系统可靠运行的时间。