您好,欢迎访问三七文档
RC531操作说明1:上电初始化主要做SPI接口确认步骤:1:给rc531的RSTPD脚一个高电平脉冲至少100us,热复位RC5312:读command-reg直到寄存器数值为0,表示芯片上电初始化完成3:写0x80到page-reg,让芯片开始处理接口时序4:读command-reg直到寄存器数值为0,表示芯片接口时序初始化完成5:此时可以写0x00到page-reg,指定寄存器地址模式为线性地址模式Note:见RC531第93页11.4InitialisingtheParallelInterface-Type说明2:spi接口时序使用SPIMODE0模式,在时钟的上升沿发送和读取数据读时序:主机连续写地址,写第二个地址时,在时钟上升沿可以读到RC531返回的第一个地址的值要求,地址字节的最高位为1,中间6位为实际地址,最低位为0写时序:第一个字节是地址,后面可以是N个数据,都往这个地址写,这点在写FIFO时很方便要求,地址字节的最高位为0,中间6位为实际地址,最低位为0NOTE:见RC531第17页3:RC531操作,通过写寄存器,一般两字节操作,addr+data和卡的数据交互,写数据到RC531的FIFO寄存器如(cs选中,addr写+data1+data2+...+dataN,cs释放)(cs选中,cmd-reg+0x1e(发送接收命令)+cs释放)(cs选中,addr读,读出n字节,cs释放)4:和卡的交互寻卡,使用命令0x52(对所有卡包括halt的卡有效),0x26(对standby的卡有效)数据长度1字节,返回2字节返回说明,2字节卡类型0x04=CARD_S50;0x44=UL卡0x08=CPU卡0x03=SHUL卡;NOTE:格式要求:RC531关闭所有校验,关闭加密,只发送7bit数据(通过更改531寄存器BitFraming),见ISO144443A,7.2.3.2WAKE-UP(REQA)指令防冲撞:先使用命令0x93,0x20返回5字节,4字节卡号+1字节异或效验例:531设置:无发送CRC,无接收CRC,有奇校验,ZeroAfer=1;发0x93,0x20;收0x88,0x4,0x4b,0x7,0xc0设置ZeroAfer=0;(必须有,否则之后操作不能完成)NOTE:格式要求:RC531关闭CRC,奇校验,通过设置DecodeControl接收控制ZeroAfer置1,选卡:先使用命令0x93,0x70+4字节卡号+卡号异或校验返回1字节SAK例:531设置:有发送CRC,接收CRC,有奇校验发0x93,0x70,0x88,0x4,0x4b,0x7,0xc0收0x04载入密码:验证:读卡:先使用命令0x30+block号(对UL卡而言是page号)返回16字节数据例:531设置:有发送CRC,有接收CRC,有奇校验发0x30,0x05收:0x4,0x4b,0x7,0xc0,0x99,0x2c,0x25,0x84,0x14,0x48,0x0,0x0,0x0,0x0,0x0,0x0NOTE:UL卡每扇区只有4字节,所以每次读出4扇区数据,共16字节数据对于普通mafare卡,每个扇区读写都要重新认证密钥写卡:第一步:先使用命令0xA0+block号(对UL卡而言是page号)确定写入地址有效返回1字节ACK(0x0a)例:531设置:有发送CRC,无接收CRC,有奇校验发0xA0,0x05收0x0a第二步:写入16字节块数据返回1字节ACK(0x0a)例:531设置:有发送CRC,无接收CRC,有奇校验发0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5收0x0aNOTE:按照14443A标准,返回的ACK是4bit数据,所以在使用FM2701等兼容芯片时,一定要取消接收CRC,否则接收不到ACK应答,另:在写UL卡之前,要先读一下0扇区,确定块锁定状态,否则不能写入。写入时,16字节数据仅前4字节有效,后12字节要设为0对于普通mafare卡,每个扇区读写都要重新认证密钥ML卡ML卡是一种小容量卡,共384位,适合于一卡一用。电气特性l容量为384位l16位的数值计算l128位的数据区(如果不用钱包文件可达192位)l用户可自定义控制权限l唯一的32位序列号l工作频率:13.56MHZl通信速率:106KB波特率l防冲突:同一时间可处理多张卡l读写距离:在10cm以内(与天线有关)l卡内无需电源存储结构ML卡共384位,分为12页,每页为4个字节。存储结构如下:页号字节0字节1字节2字节3说明0SerNr(0)SerNr(1)SerNr(2)SerNr(3)Block01SerNr(4)SizeCodeType(0)Type(1)2Data(0)Data(1)Data(2)Data(3)Data13Data(4)Data(5)Data(6)Data(7)4Value(0)Value(1)Value_b(0)Value_b(1)Value5Value(0)Value(1)Value_b(0)Value_b(1)6KeyA(0)KeyA(1)KeyA(2)KeyA(3)KeyA7KeyA(4)KeyA(5)AC-AAC-A_b8KeyB(0)KeyB(1)KeyB(2)KeyB(3)KeyB9KeyB(4)KeyB(5)AC-BAC-B_bAData(0)Data(1)Data(2)Data(3)Data2BData(4)Data(5)Data(6)Data(7)(注:_b表示取反)(1)第0、1页存放着卡的序列号等信息,只可读。(2)第2、3页及A、B两页数据块,可存贮一般的数据。(3)第4、5页为数值块,可作为钱包使用,两字节的值以正和反两种形式存贮。只有减值操作,没有加值操作。如果不做钱包使用,则可以做为普通的数据块使用。(4)第6、7、8、9页存储着密码A(6字节)、密码B(6字节)及存取控制。(5)第7页的2字节、第9页的2字节为存储控制,存储控制以正和反的形式存两次。Bit7—Bit6—Bit5Data2—Write—EnableBit4Data2—read—EnableBit3Key+AC—Write—EnableBit2Value—Write—EnableBit1Data1—Write—EnableBit0Data1—read—Enable例如:AC-A的初始值为ff,即‘11111111’,即:Data1:可读、可写;Value:可写;AC-A:可写;Data2:可读、可写;(6)一次写一页(4个字节),一次读两页(8个字节)。UL卡M1卡0扇区0块厂商标识信息第0~4个字节为卡片的序列号,第5个字节为序列号的校验码;第6个字节为卡片的容量“SIZE”字节;第7,8个字节为卡片的类型号字节,即Tagtype字节;其他字节由厂商另加定义。UL卡储存规范,共16扇区,每扇区4字节,等效与M1卡的4个块,(select时,返回4)存储结构:页号Byte0Byte1Byte2Byte3说明0SN0SN1SN2BCC0只读,存放卡的序列号:Page0前3字节+整个Page11SN3SN4SN5SN62BCC1保留LOCK0LOCK1只读,通过设置LOCK0和LOCK1可以讲16个page设为只读3OTP0OTP1OTP2OTP3可读写,一次性交易计数器,不可逆4Data0Data1Data2Data3可读写,数据存放区域5Data0Data1Data2Data36Data0Data1Data2Data37Data0Data1Data2Data38Data0Data1Data2Data39Data0Data1Data2Data310Data0Data1Data2Data311Data0Data1Data2Data312Data0Data1Data2Data313Data0Data1Data2Data314Data0Data1Data2Data315Data0Data1Data2Data3红色的SN在读扇区0时,返回的是SN0,SN1,SN2,BCC,SN3,SN4,SN5,SN6,xx,xx,0,0,0,0,0,0所以实际取得的psnr(卡序列号)为SN0,SN1,SN2+SN3,SN4,SN5,SN62.2.2读卡和写卡指令14443A协议中并没有具体规定对射频卡的读写操作方式,故对每种卡的读写操作都必须考虑该卡的存储区域组织形式和应答形式。MIFARE卡内部存储器是由E2PROM组成的,共划分为16个扇区,每个扇区4个块,每块16字节。对E2PROM的读写都以块为单位进行,即每次读/写16字节。以写卡指令为例,MIFARE卡要求有两步握手,指令格式分别如下所述。注意:address值无意义,但value值写入时必须在4~7字节中存入取反值。一次写一页,一次读4页S50卡(常用标准卡)Mifare1卡的存储结构2007-06-2211:262、Mifare1卡的存储结构[1][2]Mifare1卡(简称M1卡)为8k位的IC卡。M1卡的存储结构如下。M1卡分为16个扇区,每个扇区4块(块0~3),共64块,按块号编址为0~63,除了第0扇区的块0(即绝对地址0块)用于存放厂商代码不可更改外,其他各扇区的块0、块1、块2为数据块,用于存储数据;块3为控制块,存放密码A、存取控制、密码B,其结构如表1:A0A1A2A3A4A5PP078069B0B1B2B3B4B5密码A(6字节)存取控制(4字节)密码B(6字节)表1各扇区块3存储结构每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,在存取控制中每个块都有相应的三个控制位,分别以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。三个控制位在存取控制字节中的位置如表2所示(字节9为备用字节,默认值为0x69)。Bit76543210字节6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字节7C13C12C11C10C33_bC32_bC31_bC30_b字节8C33C32C31C30C23C22C21C20表2控制位在存取控制字节中的位置(注:_b表示取反)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,扇区中的每个数据块的存取条件由密码和存取控制共同决定,他们的关系如表3所示。控制位(X:0..2)访问条件(对块0、1、2)C1XC2XC3X读写加值减值000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|KeyBNeverNeverB110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever表3数据块存取控制条件据此通过授权机制,对特定操作用户实现不同级别的读写控制。只有知道特定密码组合的操作用户才能更新卡中数据,从而大大增强了系统的安全性。射频卡的存储实现技术和工作原理决定了其良好特性,可适用于多种应用。其中射频卡具多个分区、适合一卡多用的特性,使得射频卡在各种一卡通系统中得到广泛应用。M1卡读写失误常见问题①盲目操作:造成某些区块误操作被锁死不能再使用。应当仔细参考控制位的权限后,预先得出操作后的结果是否适合使用要求,并且列出操作顺序表单再操作。最好授权程序员对块3的设置作专人操作。②丢失密码:在读写时造成密码认证出错而不能访问卡。特别要求在对MF卡进行块3编程操作时,必须及时记录相关卡号的控制值、KeyA、KeyB等,而且应当有专人管理密码档案。③错误设置:对MF1卡的块3控制位了解不透彻,错误的理解造成错误的设置。目前MF1卡的控制块仅只有8种数
本文标题:RC531操作说明
链接地址:https://www.777doc.com/doc-2854925 .html