新一代Mifare射频基站IC MF RC522在水表中的应用

时间:2007-04-28

摘要:介绍了Philips公司推出的Mifare非接触IC卡读写芯片MF RC522的主要特性、引脚功能和基本指令集;简述以MSP430系列超低功耗16位单片机为内核的水表设计以及与MFRC522的硬件接口电路设计;重点阐述了MSP430对MF RC522的读写控制流程。

关键词:MF RC522 MSP430单片机 低功耗 水表

非接触式智能卡(射频卡)以其高度安全保密性、通信高速性、使用方便性广泛应用于三表行业,实现预付费功能,使人们生活质量有了很大的提高。射频卡技术应用于水表将是智能水表的伟大革命。
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中;采用MFRC522读写芯片读写Mifare 1 S50卡片实现预付费功能。系统框如所示。

本设计利用RC522 UART模式与单片机通信,由于MSP430F413没有硬件串口,故需使用TIMERA模拟串口,如所示。

对于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所示。
表1 CommandReg命令控制字

commandReg Address 0x01 Reset value 0x20

7 6 5 4 3 2 1 0

0 0Rcv OFFPower DownCOMMAND

Command命令类别如表2所示。
表2 Command命令类型

COMMAND(命令)命令代码
Idle(空闲)0000
CalcCRC(校验)0011
Transmit(发送)0100
NoCmd Change(无命令改变)0111
Recceive(接收)1000
Transceive(收发)1100
MFAuthent()1110
Soft Reset(软件复位)1111

2.2 基本指令集

MF RC522有14种基本指令集,实现不同方式的数据传输,如表3所示。
表3 14种基本指令集

基本指令指令代码
Request Std0x26
Request All0x52
AntiCollision(防重叠)0x93
Select Tag(选卡片)0x93
Authentication_A0x60
Authentication_B0x61
Read(读)0x30
Write(写16Bytes)0xA0
Write4(写4Bytes)0xA2
Increment(增值)0xC1
Destore(减值)0xC0
Restore(重储)0xC2
Transfer(传送)0xB0
No command0x50

3 软件设计

MSP430F413首先对MF RC522进行初始化配置,寄存器设置好后,MF RC522可以接收控制执行命令执行操作,实现与Mifare 1 S50卡片通信;Mifare 1 S50卡根据接收到的指令进行相应操作。但是MSP430F413并不是通过简单的指令就可以读写IC卡片,需要一系列的操作才能完成通信。主要包括:(1)请求唤醒;(2)防重叠;(3)选择卡片;(4)密码;(5)读写操作。

MSP430F413对Mifare 1 S50卡片操作流程,如所示。

3.1 请求Request Std/Request All

当在天线有效工作距离内检测到卡片,MF RC522发送Request Std/Request All请求指令,卡片接收到请求指令后返回握手信号,从而判断操作是否成功。
Request Std(0x26)连续读卡指令

Request All(0x52)非连续读卡指令

3.2 Atcollision(防重叠)

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)。

只有密码完全通过后,才可以对卡片进行Write/Read操作。

3.5 Write/Read(读写操作)

Authentication密码通过后,可以对64Block进行读写操作。其中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:增值或减值 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中.执行Decrment/Increment和Restore指令操作都需要Transfer指令,数据才能成功传输.

3.9 Halt(停机)

Halt指令操作将结束MF RC522与Mifare S50通信。

MF RC522作为新一代非接触IC卡与传统的IC卡相比有着很大的优势,具有较强的保密性能和防碰撞功能,特别是采用低电压供电大大降低功耗,能够与超低功耗MSP430单片机结合实现低功耗预付费水表的设计。


  
上一篇:使用32位MCU解决RFID智能标签/智能卡系统设计难题
下一篇:一种具有恒功率控制的单级功率因数校正电路

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料