能卡的控制是通过MFRC500来实现的,MFRC500是MCU和MIFARE非接触式智能卡之间的通信载体。MCU对MFRC500的控制是以MCU发出MFRC500的指令来达到的,MFRC500收到指令之后执行这些指令。MFRC500的指令主要有:Requeststd,Requestall,A
ticollisio
,Select,Authe
ticatio
,Read,Write,它们可以完成MCU对MIFARE非接触式智能卡的很多应用场合的控制。MCU对MFRC500的某一指令操作不是简单的一条指令所能完成的,必须有一个程序的序列来完成,其中有对MFRC500硬件内核寄存器的读写以及根据读出的硬件内核寄存器的内容进行语言软件上的判断和设置。不同的指令将设置不同的MFRC500内部寄存器以及应有不同的编程语言程序序列。MFRC500具体指令说明及程序设计如下:1“A
swertoRequest”应答或复位应答表41复位应答指令
Request指令将通知MFRC500在天线有效的工作范围内寻找WARE卡片。如果有MIFARE卡片存在,这一指令将分别与MIFARE卡片进行通信,读取WARE卡片上的卡片
18
f类型号TAGTYPE,由MFRC500传递给MCU,进行识别处理。Request指令分为Requeststd和Requestall两个指令。Requestall指令是非连续性的读卡指令,只读一次,它可以防止MFRC500选择同一卡片好几次。当某一张卡片在MFRC500天线的有效工作范围内,Requestall指令在成功地读取这一张卡片之后,将一直等待卡片的使用者拿走这张卡片,直到有新一张的卡片进入MRC500天线的有效工作范围内。Requeststd指令的使用和Requestall指令相反,Requeststd指令是连续性的读卡指令。当卡片在MFRC500天线的有效工作范围内,Requeststd指令在成功地读取这一张卡片之后,对卡进行其他操作。如果其他操作完成之后,程序员又将MFRC500进入Requeststd指令操作,则Requeststd指令将连续性地再次进行读卡操作,而不管这张卡片是否被拿走。只要有一张卡片进入MFRC500之天线的有效的工作范围内,Requeststd指令将始终连续性地再次进行读卡操作。2“SelectTag”(选择卡片操作)表42选择卡片指令
在一个成功的A
tiCollisio
指令之后,或在任何时候当程序员想与已知序列号的卡片进行通信时,必须使用Select指令,以建立与所选卡的通信。Select指令成功地完成后,MCU将得到MFRC500的DATA寄存器传送来的一个字节长的卡片容量信息Size。3“Authe
ticatio
”认证操作表43认证指令
在MCU希望读取MIFARE卡上的数据之前,此操作必须是被允许的。这可以通过选择存储在MFRC500之RAM中的密码集中的一组密码来进行认证而实现。如果这一组密码与MIFARE卡片上的密码匹配,这一次r