MF_RC522及S50卡学习

来源:互联网 发布:鸿鹄安知燕雀之志哉 编辑:程序博客网 时间:2024/04/28 22:36

一、基本特性

1、通信速率424Kbps,载波速率13.56MHz,通信距离最大50米,非接触式,调制解调完善。

     2、通信方式:SPI、串口通信(电压电平取决于管理引脚的电平)、IIC。

     3、支持ISO  14443A/MIFARE 和Classic加密。64字节的发送和接收缓冲区。内部定时器,内部振荡器连接27.12M的晶振。 3.3V电压供电方式。


二、S50卡片

   2.1 S50卡片的基本特征 

      2.1.1、无源,非接触式,只有一个线圈和一个芯片,通信距离10cm,芯片有1KB EEPROM.

      2.1.2、载波频率13.56MHz,通信速率106KB,防冲突机制可以同时处理多张卡,半双工通信。

      2.1.3、安全性:三次相互认证(ISO/IEC DIS 9798-2)、通讯过程中所有数据均加密、每一个扇区都有独立的密                      码、每张卡都有全球唯一的序列号32位长、传输密码保护。

      2.1.4、存储结构:1KB的EEPROM,有16个扇区每个扇区四个块,每个块16个字节。

   每个扇区都有自己的一组密码。

      2.1.5、运算能力:加和减,数据可以保存十年,擦写十万次。

      2.1.6、处理时间:

  识别一张卡  3ms(包括复位应答和防冲突)

  读一个块2.5ms(不包括认证过程)

                4.5ms(包括认证过程)

                          写一个块+读控制:14ms(包括认证过程)。

   2.2  工作原理

         卡片的电气部分只有一个天线和ASIC组成(专用集成电路)。卡片的天线只有几组绕成的线圈。ASIC由一个高速(106KB )的RF接口,一个控制单元和一个1KBEEPROM组成。

         S50工作原理:读写器向S50卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器的发射频率相同,在电磁波的激励下,LC谐振电路产生共振,向电容充电,当电荷达到2V时,此电容可作为电源为其电路提供工作电压,将片内的数据发射出去或读取读卡器的数据。

   2.3 S50射频卡与读写器通信


         复位应答(Answer to Request):

 S50射频卡的通信协议和波特率是定义好的,通过这两项内容,读写器和S50相互验证,当某张卡进入读写             器的操作范围时,读写器以特定的协议与它通信,从而确定该卡是否是S50卡,即验证卡的类型。

         防冲突闭合机制(Antiollision Loop):

                当有多张S50卡进入读写范围时,防冲突闭合电路首先从众多卡中选择一张做为处理对象,为被选中的卡               片则处于空闲模式等待下一次被选中,选中后返回一个被选中卡片的 序列号(Serial No.).

         选择卡片(Select Tag)

                选择被选中卡的序列号,同时返回卡的容量代码(08或者88).

         三次相互确认(3 Pass Authentication)

                选定卡片后,读写器就确定要访问的扇区号,并对该扇区密码进行校验,在三次相互认证之后就可以相互                通过加密流进行通信(选择下一个扇区时则需要和下个扇区进行密码校验)。

         读/写(最小的操作单位是块)

                确认之后进行下列操作:

                读(Read)       读一个块

                写(Write)       写一个块

                减(Decrement)   块中的内容作减法之后,结果保存在数据寄存器中。

                加(Increment)     块中的内容作加法之后,结果保存在数据寄存器中。

传输(Transfer)    将数据寄存器的内容写入块中。

存储(Restore)     将块中的内容读到数据寄存器

暂停(Halt)           将卡置于暂停状态。

       2.4 数据完整性

防冲突、每个块有16位的CRC校验。每个字节有奇偶校验,检查位数、信道监测。

       2.5 保密性

读写前的三次确认,卡号的唯一性,传递数据加密,传输密码和访问密码保护。

                每个扇区都有自己的访问密码,分为KEY A和kEY B,在校验KEY A和KEY B之后才可以对存储器进行访问。

  


        

    存储区

     






    2.6  RC522的命令字

                   RC522通过向命令寄存器写入相应的命令代码来启动命令。执行一个命令所需的命令参数或数据通过                    FIFO缓冲区来交换。

   每个需要数据字节流作为输入的命令在发现FIFO缓冲区有数据时会立刻处理。收发命令除外,收发还需      要寄存器BitFramingReg寄存器的StartSend位来启动。

   每个需要某数量的参数的命令,只有在FIFO缓冲区有正确的命令参数时才开始处理数据。

   可以通过Idle命令来终止其他命令。

   FIFO不能自动清除,有些命令需要现在FIFO中写入参数或数据,然后再启动命令。


2.7  M1卡指令





1、Answer to Request (Request)指令

      Request 指令通知读卡器在MCM在天线有效范围内寻找M1卡,如果有M1卡这一指令将分别与M1卡进行通信,读取M1卡的类型Tagtype(2个字节)。然后MCM传递给单片机进行识别。0400 为S50卡。

       M1卡可以根据卡片类型被读卡器选择,当使用“Request std”指令寻卡时,只有被设置成“HALT_MODE(停机)”模式的卡才能响应这一指令。

Request All 指令防止一张卡被多次选中,Request All 指令在成功读取一张卡以后,会一直等待这张卡被拿走。

     2、AntiCollision 防冲突

          读卡器读某张卡上的序列号共5个字节,4个字节加1个字节的校验。卡真正被选中是select命令。

     3、select tag选卡

          在防碰撞正确读到卡的序列号后,使用select命令与卡建立通信。在select指令以后才能对卡进行读写,执行select指令后,M1卡将会它自己的容量size(1个字节)。size字节存储在M1卡第00h扇区的第00h块,返回的字节可能是88h或者08h。

      4、Authentication 认证操作

   KEYADDR寄存器中的AB位用于选择KEYA密码(AB=1)和KEYB密码认证(AB=0),KEYADDR寄存器(寄存器0ch)中的设置必须匹配Authentication 命令(60h、61h).

  Authentication命令中,60h用于认证KEYA,61h代码用于认证KEYB。

     5、读操作

  认证完成后,读操作一次读一个块(16个字节)。

     6、写操作

          

  



        四、 使用SPI通信说明

             4.1  三种通信的接口说明

 

 4.2 SPI通信

      使用SPI通信,MSB位先发送,在时钟的上升沿数据从单片机写入RC522,在时钟的下降沿单片机从RC522读出数据。在时钟的跳变沿数据线要稳定。

         4.3 读写数据

              读数据时序:


     写数据时序:

           

          地址字节的表示:

          

        4.4 CRC校验

              16位的CRC校验,CC预设值可以设置为0000h,6363h,A671h,FFFFh

                                                校验计算公式: 

             


        说明:本文参考了深圳吉盛科技的手册。

        附件中的程序参考一个网友的改的,用的单片机是STC12LE5A08S2系列的。  

       http://blog.csdn.net/yjg428/article/details/39084869  更详细的介绍可以参考这个网友的。 

2 0
原创粉丝点击