随着无线网络支持的上下行数据速率不断提高。手机在数据业务方面的应用不断涌现。越来越多的人正在使用手机代替手表、记事本、MP3,手机已成为人们不可缺少的信息终端。
近距离通信NFC(Near Field Communication)技术将让这一切变为现实。2006年6月,诺基亚和中国移动、飞利浦、易通卡公司在厦门启动了中国首个NFC手机支付试验。用户使用内嵌NFC模块的诺基亚3220手机,可在厦门市内任何一个易通卡覆盖的营业网点(公交汽车、轮渡、电影院、快餐店)进行手机支付。
不仅如此,在不久的将来,通过手机和NFC技术的结合,用户通过手机就可以实现以下应用:在街边海报上和杂志上下载演唱会时间、地点和节目表;在公园里玩互动的定向越野游戏;在车站实时刷新公交车的到站时间;在办公室发送短信控制家政服务员进出住宅的时间;在学校全面代替现有学生证和学生卡:在遍布市区的智能公用电话亭查询地图、公交线 路、餐饮购物等信息;在加油站、超市、银行等任何有POS机的地方支付款项并用手机收取电子发票。
本文在介绍TI公司最新推出的多协议完全集成13.56MHz收发一体芯片TRF7970A的基础上,设计了具有主动模式和被动模式的NFC模块。
1 硬件设计
1.1 TRF7970A简介
TRF7970A是一款用于13.56 MHz RFID/近场通信系统的集成模拟前端和数据组帧器件。通过内置编程选项可使此器件适合于范围宽广的应用。它能够执行以下3种模式中的任一模式:RFID/NFC读取器、NFC对等点、卡仿真模式。引脚分布如图1所示。
此芯片具有几个工作模式,可以通过配置两个输入引脚(EN和EN2)以及芯片状态控制寄存器(0X00)内的几个位来进行控制,如表1所示。
图1 引脚分布
当EN被设定为高电平时(或者在EN2的上升沿,然后被EN=1确认),电压稳压器被激活并且13.56 MHz振荡器启动。当电源和振荡器频率已稳定时,SYS_CLK输出从60 kHz的辅助频率切换至来自晶体振荡器的13.56 MHz频率。此时,读取器已为通信和执行所需任务做好准备。然后此MCU可对芯片状态控制寄存器0x00进行编程并通过编辑附加寄存器来选择运行模式。
(1)待机模式(寄存器0x00的位7=1),此读取器能够在100s恢复到完全运行。
(2)模式1(RF输出禁用,寄存器Ox00的位5=0并且位1=0的激活模式)是一个低功率模式,此模式使得读取器能够在25斗s内恢复到完全运行。
(3)如果读取器到读取器的防冲突被执行,模式2(只有RF接收器有效,寄存器ox00的位1=l的激活模式)可用于测量外部RF场(正如RSSI测量段落中描述的那样)。
(4)模式3和4(整个RF部分有效。寄存器0x00的位5=l的激活模式)是用于正常发射和接收操作的正常模式。
1.2 NFC模块工作原理
图2给出了由NFC天线、TRF7970A、微控制器(MCU)3部分组成的NFC电路。
系统上电以后,MCU首先配置TRF7970A芯片,可以通过配置引脚EN和EN2以及芯片状态控制寄存器的几个位来选择工作模式(具体配置参数如表l所示),MCU通过并13将配置数据传人TRF7970A芯片。NFC模块主要有主动模式和被动模式两种模式。
图2 NFC模块电路图
NFC模块可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备(也称为NFC发起设备,主模块),在整个通信过程中提供射频场(RF-field),其中传输速度是可选的,将数据发送到另一台模块。另一台模块称为NFC目标模块(从模块),不必产生射频场,而使用负载调制(Load Modulation)技术,即可以相同的速度将数据传回发起设备。此通信机制与基于IS014443A、MIFARE和FeliCa的非接触式智能卡兼容,因此,NFC发起模块在主动模式下,可以用相同的连接和初始化过程检测非接触式智能卡或NFC目标模块,并与之建立联系。
当NFC模块工作在主动模式下。和RFID读取器操作中一样,此芯片完全由MCU控制。MCU激活此芯片并将模式选择写入ISO控制寄存器。MCU使用RF冲突避免命令。所以它不用承担任何实时任务。每台NFC模块要向另一台NFC模块发送数据时,都必须产生自己的射频场。如图3所示,发起模块和目标模块都要产生自己的射频场,以便进行通信。这是对等网络通信的标准模式,可以获得非常快速的连接设置。
图3 NFC主动通信模式
图4 NFC被动通信模式
如图4所示,当NFC模块工作在被动模式下,此模块通常处于断电或者待机模式。如果EN2=H,此模块将电源系统保持在开状态。如果EN2=L并且EN=L,则此模块处于完全断电状态。为了运行在被动模式或者标签仿真器状态下,MCU必须向模块检测电平寄存器(bo-b2)中载入一个非0值,此操作将开启RF计量系统(由VEXT供电,所以此系统在完全断电期间仍可运行并且其流耗只有3.5μA)。RF计量一直监控天线输入上的RF信号。当天线输入上的RF水平超过目标方检测电平寄存器中定义的值时,NFC模块被自动激活(EN是内部强制高电平)。
移动模块主要以被动模式操作。可以大幅降低功耗,并延长电池寿命。在一个应用会话过程中,NFC模块可以在发起模块和目标模块之间切换自己的角色。利用这项功能。电池电量较低的设备可以要求 以被动模式充当目标设备,而不是发起设备。
1.3 TRF7970A通信接口设计
芯片TRF7970A到读取器的通信接口可被配置为两种方式:具有8线并行接口(DO:D7)加上DATA_CLK,或者具有3线制或者4线制串行外设接口(SPI)。SPI接口使用传统的主器件输出/从器件输入(MOSI)、主器件输入/从器件输出(MISO)、IRQ和DATA_CLK线路。SPI可在使用或者不使用从器件选择线路的情况下运行。本文以并行接口的方式阐述。
通信由一个启动条件初始化,此启动条件之后通常跟随一个地址/命令字(Adr/Cmd)。Adr/Cmd为8位长,并且它的格式显示如表2所示。
表2 地址/命令字位分配
MSB(位7)确定这个字用作命令还 是地址。表2中的最后两列显示了独立位的功能,即写入的是地址还是命令。一旦地址字被发出,就进入数据接收等待状态。在连续地址模式(连续模式=1),地址之后的第一组数据被写入(或者读取)到(自)指定的地址。对于每个附加数据,地址增量为1。持续模式可用于在不改变地址的前提下写入一个位于单一数据流中的控制寄存器的块;在非连续地址模式下(简单寻址模式),在地址以后只等待一个数据字。
地址模式用于写入或者读取配置寄存器 或者FIFO。当把多于12 B的数据写人FIFO时,连续地址模式应设定为1。命令模式用于输入一个导致读取器动作的命令。
1.3.1 无线接口数据的接收
在接收操作启动时(成功侦测到SOF),IRQ状态寄存器的B6被设定。如果接收数攒if{少于或者等于8 B,在接收操作的末尾,一个中断请求会被发送到MCU。MCU接收到这个中断请求,然后它会通过读取IRQ。状态寄存器(OxOC)来检查以确定中断的原因,之后MCU从FIFO读取数据。
如果接收到的数据包大于96 B,当第96个字节被载人到FIFO中(满容量的75%)时,在接收操作终止前,中断被发出。MCU应该重新读取IRQ状态寄存器的内容以确定中断请求的原因。如果FIFO已经达到满容量的75%(由IRQ状态寄存器的标志B5标出并读取FIFO状态寄存器),MCU通过从FIFO中读取数据作出的响应为新接收来的数据腾出空间。当接收操作完成时,中断被发出并且在完成读取操作前,MCU必须检查还有多少字仍然在FIF0中。
如果读取器侦测到一个接收错误,在IRQ状态寄存器中相应的错误标志(组帧错误,CRC错误)被设定,指示MCU接收没有正确完成。
1.3.2 到MCU的数据传送
在开始数据传送前,FIFO应该一直被一个复位命令(0x0F)清除。数据传送由一个选定的命令初始化。然后,MCU命令此读取器从寄存器0xlD开始执行一个持续写命令(Ox3D)。写入到寄存器OxlD的数据为TX。长度字节l(上部和中部半字节),而随后寄存器0xlE中的字节为TX,长度字节2(较低半字节和不完整字节长度)。TX字节长度确定读取器何时发送帧结束(EOF)字节。在TX长度字节被写入后,FIFO数据被载入到寄存器0xlF中。其字节存储单元位于0至127。在第一个字节被写入到FIFO后,数据传送自动开始。由于地址是按顺序排列的,TX长度字节和FIFO的载人可由一个持续写命令完成。
传送开始时,IRQ状态寄存器的标志B7(IRQ TX)被设定,并且在传送操作结束时发送一个中断以通知MCU此任务已完成。
2 软件设计
系统上电以后MCU首先配置TRF7970A芯片,先将由2个输入引脚(EN和EN2)以及芯片状态控制寄存器(0x00)内的几个位配置芯片的工作模式,MCU通过并IZl将配置数据传入TRF7970A芯片。在RX模式,接收操作结束,通过设定引脚13(IRQ)为高电平来通知外部MCU接收结束;在TX模式,一个标示TX已经完成的中断申请(IRQ)通知外部MCU。
在TRF7970A芯片中有一个组帧逻辑部分,串行比特流数据在此部分被格式化成字节格式。特别信号, 诸如帧开始(SOF)、帧结束(EOF)、通信开始 、通信结束,被自动去除;奇偶校验位和CRC字节也被检查并去除了。然后,这个“干净”数据被发送到128 B的FIFO寄存器,此寄存器可由外部微控制器读取。这意味着降低MCU的存储器需求也就是降低MCU成本。同时缩短软件开发时间。TRF7970A发射模式如图5所示,TRF7970A接收模式如图6所示。
图5 TRF7970A发射模式 图6 TRF7970A接收模式
2.1发射模式
(1)通过引脚EN和EN2以及芯片状态控制器(0x00)内的几个位选择功率模式使模块工作在主动模式;
(2)在将即将发送的数据载入FIFO后,发送一个发射命令:
(3)TRF7970A芯片自动添加特别信号:通信开始、通信结束、SOF、EOF、奇偶校验位和CRC字节。形成数据包;
(4)在检测中断信号(IRQ)之前,一直发送数据包;
(5)在发射操作的末尾,一个标示TX已经完成的中断请求(IRQ)通知外部MCU。
2.2 接收模式
(1)通过引脚EN和EN2以及芯片状态控制器(0x00)内的几个位选择功率模式使模块工作在被动模式,即待机状态;
(2)开启RF计量系统,监控天线上输入的RF信号,检测有效电平,TRF7970A芯片被自动激活;
(3)TRF7970A芯片为接收到的信号自动去除特别信号:通信开始、通信结束、SOF、EOF、奇偶校验位和CRC字节,形成“干净”数据;
(4)当FIFO中接收到数据,一个中断被发送至MCU以表示有数据要从FIFO中读取,接收操作开始;
(5)在接收数据期间,检测到任何数据格式、奇偶校验或者CRC中的错误,可以通过一个中断请求通知外部MCU放弃该数据;
(6)接收操作的末尾通过设定引脚13(IRQ)为高电平来传送至外部系统MCU。
上面的两种模式只是简单地叙述了NFC模块在主动模式下发送数据和在被动模式下接收数据。在发送和接收数据后,可根据存储MCU的数据再完成相应的工作。
在并口模式下读写数据到寄存器的参考程序如下:
本文介绍了TRF7970A芯片接口,其具有资源丰富、扩展性强、集成度高、简化电路设计等特点。用此芯片设计的NFC模块具有功耗低及可休眠、高可靠性、体积小、重量轻和稳定性高等优点。实验证明,该NFC模块可应用于移动支付、公共交通票务、门禁、电子海报等不同的领域。