新一代Mifare射频基站IC MF RC522在水表中的应用
2008-08-01
作者:程东海, 于海勋
摘 要: 介绍了Philips公司最新推出的Mifare 非接触IC卡读写芯片MF RC522的主要特性、引脚功能和基本指令集" title="指令集">指令集;简述以MSP430系列低功耗" title="低功耗">低功耗" title="超低功耗" title="超低功耗">超低功耗">超低功耗16位单片机为内核的水表设计以及与MF RC522的硬件接口电路设计;重点阐述了MSP430对MF RC522的读写控制流程。
关键词: MF RC522 MSP430单片机 低功耗 水表
非接触式" title="非接触式">非接触式智能卡(射频卡)以其高度安全保密性、通信高速性、使用方便性广泛应用于三表行业,实现预付费功能,使人们生活质量有了很大的提高。射频卡技术应用于水表将是智能水表的一次伟大革命。
MF RC522是Philips公司针对三表最新推出的一款非接触式低功耗读写基站芯片,它是应用于13.56MHz非接触式通信中高集成读卡IC系列中的一员。该读卡IC系列利用了先进的调制和解调概念,完全集成了13.56MHz下所有类型的被动非接触式通信方式和协议。 MF RC522支持ISO14443A所有的层,传输速度最高达424kbps,具有三种主机接口方式:SPI模式、 UART模式、 I2C模式。
本设计采用MSP430系列超低功耗16位单片机为主控芯片,系统3.3V供电完全适合MFRC522供电要求,实现了低功耗的完美结合。
1 系统设计
该系统以TI MSP430F413单片机为核心,工作电压为1.8V~3.6V,内置LCD驱动器24×4段,可以缩小体积、降低成本,在休眠模式下典型电流仅为0.7μA;采用内部Flash保存用水数据、剩余水量和水表状态信息;电源监控采用理光R3111E(可根据设定的门限电压选择相应的型号);水表阀门采用2.5V~6V直流电机,当人为破坏水表或所购买水量低于设定值时,水表报警并及时关掉阀门,同时将数据保存在内部Flash中;采用MF RC522读写芯片读写Mifare 1 S50卡片实现预付费功能。系统框如图1所示。
本设计利用RC522 UART模式与单片机通信,由于MSP430F413没有硬件串口,故需使用TIMERA模拟串口,如图2所示。
对于MSP430F413而言,P1.0(TimerA捕获/比较输出口)口是UART的TX,P1.1(TimerA捕获/比较输出口)是UART的RX。
2 MFRC522 命令寄存器及基本指令集
2.1 命令寄存器CommandReg(0x01)
MF RC522内部有64个寄存器,共分4页:PAGE0:COMMAND AND STATUS;PAGE1:COMMAND;PAGE2:CFG;PAGE3:TEST。MF RC522通过内部寄存器的读写控制与Mifare 1 IC卡数据通信。
CommandReg命令控制字如表1所示。
Command命令类别如表2所示。
2.2 基本指令集
MF RC522有14种基本指令集,实现不同方式的数据传输,如表3所示。
3 软件设计
MSP430F413首先对MF RC522进行初始化配置,寄存器设置好后,MF RC522可以接收控制命令执行操作,实现与Mifare 1 S50卡片通信;Mifare 1 S50卡根据接收到的指令进行相应操作。但是MSP430F413并不是通过简单的指令就可以读写IC卡片,需要一系列的操作才能完成通信。主要包括:(1)请求唤醒;(2)防重叠;(3)选择卡片;(4)密码认证;(5)读写操作" title="读写操作">读写操作。
MSP430F413对Mifare 1 S50卡片操作流程,如图3所示。
3.1 请求Request Std / Request All
当在天线有效工作距离内检测到卡片,MF RC522发送Request Std / Request All请求指令,卡片接收到请求指令后返回握手信号,从而判断操作是否成功。
Request Std (0x26) 连续读卡指令
Request All (0x52) 非连续读卡指令
3.2 Aticollision(防重叠)
MF RC522能够防止多张卡片重叠造成的数据错误。当在天线有效工作距离内检测到多张卡片时,MCU读取序列号进行判断检测。
Mifare 1 S50 卡具有全球唯一4个字节的序列号,SN存放在Sector0的Block0内前4个字节,第5个字节存放校验码(4字节异或结果),MCU控制循环读取序列号,直到读取一个校验正确的序列号后,保存并退出循环;当然出错也会退出循环。
Sector0的Block0数据格式如表4所示。
3.3 Select(选择卡片)
将Anticollision操作读取的序列号SN 4个字节还有异或的校验码发送到Mifare 1 S50卡上,卡片接收后与自身SN及校验码核对,只有完全一样才能选定卡片。
3.4 Authentication(密码认证)
Mifare 1 S50卡 有1KB容量,分为16个扇区:Sector0至Sector15,每个Sector(扇区)包括4个Block(块),每个Block具有16个byte的存储容量。Block被分为Block0至Block3;整个Mifare 1 S50非接触式智能卡共有64个Block。
每个Sector的Block3都存放着本扇区自己的密码KeyA、KeyB和Access Bits。通过Access Bits设置密码方式和数据块类型( Write/Read 或 Value )。
每个Sector的Block3数据格式如表5所示。
只有密码完全认证通过后,才可以对卡片进行Write/Read操作。
3.5 Write/Read(读写操作)
Authentication密码认证通过后,可以对64 Block进行读写操作。其中Sector0中的Block0 只能执行读操作。Mifare 1 S50读写时是以Block为单位的,读或写都是针对整个Block 16字节的操作,不能单个字节读写。为了确保数据的正确性,可进行数据校验。
3.6 Decrement/Increment(增值和减值操作)
当数据块通过设置Access bits配置成Value 型时,可以对其进行Decrement/Increment操作。为了防止数据出错,Value Block 设有复杂的数据格式。Value重复存放3次,其中原码存放2次,补码再存放1次;Adr重复存放4次,其中原码存放2次,补码再存放2次。
Value Block数据格式如表6所示。
Value:增值或减值 Adr:操作Block地址
执行Decrement/Increment后,把结果存放在内部数据缓冲寄存器中,等待Transfer指令操作写入指定的目标Block中。
3.7 Restore
Restore指令是将Mifare 1 S50内某一Block内容读出,存放在内部数据缓冲寄存器中,等待Tranfer指令操作写入指定的目标Block中。相当于复制Block a 到Block b中。
3.8 Transfer(传送)
Transfer指令操作是将内部数据缓冲区内数据传送到目标Block中。执行Decrement/Increment和Restore指令操作都需要Transfer指令,数据才能成功传输。
3.9 Halt(停机)
Halt指令操作将结束MF RC522与Mifare 1 S50通信。
MF RC522作为新一代非接触IC卡与传统的IC卡相比有着很大的优势,具有较强的保密性能和防碰撞功能,特别是采用低电压供电大大降低功耗,能够与超低功耗MSP430单片机结合实现低功耗预付费水表的设计。
参考文献
1 MF RC522 Contactless Reader IC Date Sheet. Philips Semi-conductors. 2004;11
2 MF1 IC S50 Date Sheet. Philips Semiconductors. 2001;5
3 RC 522 BFL Manual. Philips Semiconductors. 2004;10
4 魏小龙. MSP430系列单片机接口技术及系统设计实例.北京:北京航空航天出版社,2002
5 沈建华,杨艳琴. MSP430系列16位超低功耗单片机原理与应用.北京:清华大学出版社,2004