1 2 3 4 5

企业动态

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

日期:2017/12/05  点击:2328 次

摘要:介绍了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卡片实现预付费功能。系统框如图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所示。

表1 CommandReg命令控制字

  commandReg                        Address 0x01       Reset value 0x20

7              6          5              4           3    2    1     0

0              0 Rcv OFF Power Down COMMAND

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 Std 0x26 Request All 0x52 AntiCollision(防重叠) 0x93 Select Tag(选卡片) 0x93 Authentication_A 0x60 Authentication_B 0x61 Read(读) 0x30 Write(写16Bytes) 0xA0 Write4(写4Bytes) 0xA2 Increment(增值) 0xC1 Destore(减值) 0xC0 Restore(重储) 0xC2 Transfer(传送) 0xB0 No command 0x50

3 软件设计

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

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 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单片机结合实现低功耗预付费水表的设计。