一种实用的433MHz射频标签的设计
2009-01-07
作者:李 翠,张晓冬
摘 要:在射频识别(RFID)领域中,超高频(UHF)射频标签一直是一项空白。本文阐述了一种基于MSP430F122单片机和芯片nRF401组成的433MHz射频标签的设计,并给出了系统的硬件原理图和软件设计方案。从成本和功耗等方面综合考虑得出一种可投产的实用型标签。
关键词:nRF401;MSP430F122;实用型标签
射频识别RFID技术是直接继承了雷达的原理,并由此发展起来的一种新的自动识别技术。与传统的识别技术相比,RFID有很多优点,如非接触、目标同时识别、对外界环境几乎无要求、识别距离远、响应速度快、寿命长等,因而应用十分广泛。但对于当今的RFID领域,在低频、中频段,都有相对应的射频标签,如125kHz范围内有T5557卡、E5550卡,13.56MHz有Mifire 1卡等,但在高频领域或者甚高频领域一般标签都要自己设计,本课题就是由此引出的。
1 系统硬件设计
在系统中,无线通信电路由无线射频收发一体化芯片nRF401组建。系统的硬件设计中充分考虑了性价比,用最少的器件设计出满足要求的硬件电路。该系统的总体结构以MSP430F122单片机为核心,由存储电路和射频电路组成,具体电路原理图如图1所示。
1.1 单片机电路
射频标签发行量巨大且由电池供电,所以成本和功耗是首先要考虑的问题。综合考虑这两个因素本设计选择了MSP430F122。MSP430系列单片机是TI公司生产的16位系列单片机,在电池供电的低功耗应用中具有独特的优势。其工作电压为1.8V~3.6V,有四种低功耗模式,正常工作时电流为300μA左右,在休眠条件下工作的电流仅为0.8μA,具有16位的RISC结构,数字控制振荡器提供从任何低功耗模式到激活模式小于6?滋s的快速唤醒时间,具有JTAG调试电路和在线烧录程序接口。
JTAG电路:TDO、TDI、TMS、TCK、RST组成JTAG调试电路,该部分在调试阶段必须具备,当调试通过后,在量产阶段可以去掉。在此对JTAG接口做个简要介绍,JTAG接口是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准即IEEE1149.1。通过这个标准,可对具有JTAG口芯片的硬件电路进行边界扫描和故障检测。具有JTAG口的芯片都有如下JTAG引脚定义。
TCK(Test Clock Input):测试时钟输入,TCK为TAP操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的;
TDI(Test Data Input):测试数据输入,数据通过TDI输入JTAG口;
TDO(Test Data Output):测试数据输出,数据通过TDO从JTAG口输出;
TMS(Test Mode Selection Input):测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式,TMS信号在TCK的上升沿有效。
这四个信号在IEEE 1149.1标准里是强制要求的。
TRST(Test Reset Input):测试复位,输入引脚,低电平有效,TRST信号在IEEE 1149.1标准里不是强制要求的。
BSL(bootstrap loader)电路:MSP430的bootstrap loader(BSL)使用户可以使用一个UART串行接口对Flash存储器或RAM进行编程,方便系统进行升级。MSP430F122的BSL电路由P1.1(BSLTX)、P2.2(BSLRX)、TCK、RST四个引脚组成。
P3.6、P3.7为I2C总线接口电路,由于MSP430F122无I2C硬件接口,本系统用I/O口来模拟I2C接口电路。P3.4、P3.5为串行通讯电路,P3.4为串口的TXD发送端,P3.5为串口的RXD接收端,分别与nRF401的Din和Dout脚连接。P3.0接nRF401的CS频道选择端,CS=0为433.92MHz,CS=1为434.33MHz。P3.1连接nRF401的节电控制端PWR_UP,PWR_UP=0 时nRF401处于待机模式,PWR_UP=1为活动模式。P3.2接nRF401的发射接收控制端TXEN,TXEN=1为发射模式,TXEN=0为接收模式。
1.2 模拟射频电路
在本系统设计中模拟射频电路采用nRF401芯片为主控芯片,该芯片采用FSK调制解调技术,最高工作速率可达到20Kb/s,发射功率可以调整,最大发射功率是+10dBm。
nRF401的天线接口设计为差分天线,以便于使用低成本的PCB天线。它所需要的外围元件少,无需声表滤波器、变容管等昂贵元件,只需要便宜且易于获得的4MHz晶体,收发天线合一,无需进行初始化和配置,不需要对数据进行曼彻斯特编码,有两个工作频宽(433.92/434.33MHz),工作电压为2.7V~5V,还具有待机模式,可以更省电和高效。因此非常适合便携式产品设计。其结构框图如图2所示。
nRF401有3种工作模式:收模式(RX)、发模式(TX)和等待模式(Stand.by),其具体工作模式可由3个引脚设定,分别是TXEN、CS和PWR_UP。因此可以通过单片机控制nRF401的工作模式,使其处于接收、发射、等待中的任一种状态,实现半双工通信。若PWR=0,TXEN和CS任意,则系统为待机状态;若TXEN=1,则为发送状态;TXEN=0,为接收状态。CS为信道选通端,CS=0选通信道为433.92MHz;CS=1选通信道为434.33MHz。RF_PWR为发射功率设置,调节电阻R3值可以调节输出发射功率,最大发射功率可以调节到+10dBm。其主要特性如下:
(1)工作频率为国际通用的数传频段;
(2)工作速率最高可达20Kb/s;
(3)FSK调制,抗干扰能力强;
(4)采用PLL频率合成技术,频率稳定性极好;
(5)灵敏度高达-105dBm;
(6)功耗小,接收状态250μA,待机状态仅为8μA;
(7)最大发射功率达+10dBm;
(8)低工作电压(2.7V),可满足低功耗设备的要求;
(9)具有多个频道,可方便地切换工作频率;
(10)因采用了低发射功率、高接收灵敏度的设计,使用无需申请许可证,开阔地的使用距离最远可达1000m。
nRF401接收机使用频移键控(FSK)调制方式,改善了噪声环境的系统性能。nRF401另一个非重要的特性是接收机的频带外阻抗很高,这意味着它不需要外部声面波(SAW)滤波器。
本系统的无线通讯模块发送部分是通过单片机串行口发送到nRF401的Din脚进行发送,而接收部分是由模块接收到数据以后,由Dout输入到单片机的串行口的,连接示意图如图3所示。
1.3 存储电路
存储电路使用的芯片为AT24C01,是128B的EEPROM。该芯片是用来存储标签密钥,在发行射频标签时通过读写器的射频芯片发射传播一串密钥。例如,12B的数据通过射频标签的nRF401芯片接收后送到单片机的串行口,再经过单片机的处理后写入到I2C存储器AT24C01中,以后每次对卡片进行读写操作时,首先要进行密钥判断,如果密钥正确才能进行相应的读写操作,从而有效防止该射频标签被误读,只有发行该卡片的读写器才能对其进行读写。
1.4 电池工作寿命的计算与工作循环的关系
(1)一个CR2032型锂电池(标称容量>210mAh),要让该电池工作半年以上(4380h)。
(2)为满足该连续工作时间,理论上要求平均工作电流为:
I=210mA.h/4380h=47.9μA
(3)在工作模式转换中,从待机到接收稳定最多需要5ms的时间,另外加上10ms时间来搜索前置码,所以设计工作时间为15ms,待机时间为3.45s,此时理论平均工作电流为:
I=11mA×(15ms/3.45s)=47.8μA
nRF401接收电流为11mA,这也意味着为了唤醒标签,读卡器每次发送数据时必须先发送至少3.45s的前置码,以保证能够可靠唤醒标签。对于标签来说,每工作15ms若搜索不到前置码,即进入待机模式3.45s。利用在待机模式和接收模式之间的切换来减小功耗。当加大电池容量后,就可以延长电池的使用时间和缩短待机时间。
1.5 系统开发环境
(1)编译器使用MSP430的IAR C编译器。
(2)仿真器使用杭州利尔达公司LSD-FET430P120。
(3)编程器使用杭州利尔达公司的LSD-430PRGS-IIIA。
2 系统软件设计
系统软件采用模块化程序设计,用C语言编写。主要由四部分组成,包括:主程序模块、通信程序模块、I2C通讯模块、存储程序模块。主程序流程图如图4所示。
2.1 主程序模块
主程序模块主要完成各种参数的设置,时钟源选择,定时器参数设置等。由于51单片机的广泛应用,大家都比较熟悉,基于此,在此主要对MSP430相对51单片机在编程上的一些不同做简单说明:
(1)时钟源选择
MSP430单片机有多个时钟源,在程序的开始,必须编写时钟选择程序,选择相应的时钟,如选择外部时钟源并等待时钟稳定的程序:
void WaitXT2Oscillate(void)
{
uint i;
FLL_CTL1 &=~XT2OFF;/*打开XT2振荡器*/
do
{
IFG1 &=~OFIFG;/*清除振荡器失效标志*/
for (i=0xFF;i>0;i--);/*延时,等待XT2起振*/
}
while ((IFG1 & OFIFG) !=0);/*判断XT2是否起振*/
FLL_CTL1 |=SELM1;/*选择XT2为MCLK的时钟源*/
}
(2)中断函数的应用
每个中断函数都有相应的入口地址,在IAR编译环境下,必须用以下格式对中断函数进行描述。
定时器中断函数:
#pragma vector=TIMERA0_VECTOR
/*表示定时器T0的中断入口地址*/
__interrupt void TimerA0(void)/*__interrupt中断函数关键字*/
{ } /*函数体*/
串口中断函数:
#pragma vector=UART1RX_VECTOR
/*表示串口1的中断入口地址*/
__interrupt void UARTReceiveProcess(void)
{ }
只有这样定义,当中断发生时才能进入相应的中断函数。
(3)进入和退出低功耗模式
{LPM3;} /*进入低功耗模式3*/
{LPM3_EXIT;} /*退出低功耗模式3*/
2.2 通信程序模块
为了省电,射频标签大部分时间处于待机模式,单片机平时处于低功耗模式3{LPM3;},此时只有32KHz的晶振工作,工作电流仅为0.8μA,通过中断可唤醒单片机,每隔一定的时间(3.45s,1.4节算出的值),控制PWR_UP脚为1进入工作状态,同时控制TXEN的值为0使标签进入接收状态(工作时间为15ms),对接收到的数据进行判断,看是否符合协议要求。若符合协议格式,nRF401转入发射模式,发送返回的数据,发送完后nRF401又回到待机模式,同时MSP430进入LPM3低功耗模式状态。
每隔一段时间转入接收模式状态,当接收到数据后,经数据处理后转化为发射状态,发射完后又转入待机模式。所以在编写程序时,要特别注意这两个状态在转换过程中所需要的时间。
(1)从待机模式到接收模式的转化时间至少为5ms;
(2)从接收模式转化为发射模式时,数据输入脚(Din)必须保持为高至少1ms才能发送数据。
2.3 存储模块程序
主要包括I2C总线程序和AT24C01的读写操作函数。AT24C01是串行存储器,通过I2C总线进行存储数据,在此用单片机的P3.6和P3.7模拟I2C总线传输。AT24C01在3V条件下工作,I2C的传输速率典型值为100kHz,MSP430单片机是单周期指令,即一个时钟周期为一个机器周期。在本系统中晶振频率为4MHz,每条指令的最小时间为0.25μs,因此在每条指令后要加相应的延时。例如SDA模拟输出程序如下:
#define I2C_SDA_1()
{P3OUT |=BIT6;Lite_Delay();}/*SDA引脚输出1*/
#define I2C_SDA_0()
{P3OUT &=~BIT6;Lite_Delay();}/*SDA引脚输出0*/
#define Lite_Delay()/*执行20个空操作,延时5μs*/
{
_NOP();_NOP();_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();_NOP();_NOP();
}
本文利用nRF401芯片来设计相应的标签,这种标签可以用由nRF401芯片设计的读写器进行读写;利用无线射频芯片nRF401,设计实现了简单、低功耗的无线射频标签。两个工作频宽(433.92/433.33MHz)可根据需要进行选择,适用于需要进行较远距离读写的各种射频应用场合;充分考虑芯片选型的成本和价格,为厂家进行大批量生产提供借鉴。
参考文献
[1] 胡大可.MSP430系列超低功耗16位单片机原理与应用[M].北京:北京航空航天大学出版社,2000.
[2] 胡大可.MSP430系列单片机C语言程序设计与开发[M].北京:北京航空航天大学出版社,2002.
[3] 毕大园,杨钰.基于nRF系列无线收发芯片的线路智能识别系统设计[J].红河学院学报,2002,4(2).
[4] 谢敏.基于MSP430的低功耗仪表系统设计[J].微计算机信息,2007,23(8).