RC531操作说明分析.docx

上传人:b****1 文档编号:14669261 上传时间:2023-06-26 格式:DOCX 页数:23 大小:181.18KB
下载 相关 举报
RC531操作说明分析.docx_第1页
第1页 / 共23页
RC531操作说明分析.docx_第2页
第2页 / 共23页
RC531操作说明分析.docx_第3页
第3页 / 共23页
RC531操作说明分析.docx_第4页
第4页 / 共23页
RC531操作说明分析.docx_第5页
第5页 / 共23页
RC531操作说明分析.docx_第6页
第6页 / 共23页
RC531操作说明分析.docx_第7页
第7页 / 共23页
RC531操作说明分析.docx_第8页
第8页 / 共23页
RC531操作说明分析.docx_第9页
第9页 / 共23页
RC531操作说明分析.docx_第10页
第10页 / 共23页
RC531操作说明分析.docx_第11页
第11页 / 共23页
RC531操作说明分析.docx_第12页
第12页 / 共23页
RC531操作说明分析.docx_第13页
第13页 / 共23页
RC531操作说明分析.docx_第14页
第14页 / 共23页
RC531操作说明分析.docx_第15页
第15页 / 共23页
RC531操作说明分析.docx_第16页
第16页 / 共23页
RC531操作说明分析.docx_第17页
第17页 / 共23页
RC531操作说明分析.docx_第18页
第18页 / 共23页
RC531操作说明分析.docx_第19页
第19页 / 共23页
RC531操作说明分析.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

RC531操作说明分析.docx

《RC531操作说明分析.docx》由会员分享,可在线阅读,更多相关《RC531操作说明分析.docx(23页珍藏版)》请在冰点文库上搜索。

RC531操作说明分析.docx

RC531操作说明分析

RC531操作说明

1:

上电初始化

主要做SPI接口确认

步骤:

1:

给rc531的RSTPD脚一个高电平脉冲至少100us,热复位RC531

2:

读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位为实际地址,最低位为0

NOTE:

见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,0x0

NOTE:

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

收0x0a

NOTE:

按照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.56MHZ

l通信速率:

106KB波特率

l防冲突:

同一时间可处理多张卡

l读写距离:

在10cm以内(与天线有关)

l卡内无需电源

存储结构

ML卡共384位,分为12页,每页为4个字节。

存储结构如下:

页号

字节0

字节1

字节2

字节3

说明

0

SerNr(0)

SerNr

(1)

SerNr

(2)

SerNr(3)

Block0

1

SerNr(4)

SizeCode

Type(0)

Type

(1)

2

Data(0)

Data

(1)

Data

(2)

Data(3)

Data1

3

Data(4)

Data(5)

Data(6)

Data(7)

4

Value(0)

Value

(1)

Value_b(0)

Value_b

(1)

Value

5

Value(0)

Value

(1)

Value_b(0)

Value_b

(1)

6

KeyA(0)

KeyA

(1)

KeyA

(2)

KeyA(3)

KeyA

7

KeyA(4)

KeyA(5)

AC-A

AC-A_b

8

KeyB(0)

KeyB

(1)

KeyB

(2)

KeyB(3)

KeyB

9

KeyB(4)

KeyB(5)

AC-B

AC-B_b

A

Data(0)

Data

(1)

Data

(2)

Data(3)

Data2

B

Data(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

Bit5

Data2—Write—Enable

Bit4

Data2—read—Enable

Bit3

Key+AC—Write—Enable

Bit2

Value—Write—Enable

Bit1

Data1—Write—Enable

Bit0

Data1—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)

存储结构:

页号

Byte0

Byte1

Byte2

Byte3

说明

0

SN0

SN1

SN2

BCC0

只读,存放卡的序列号:

Page0前3字节+整个Page1

1

SN3

SN4

SN5

SN6

2

BCC1

保留

LOCK0

LOCK1

只读,通过设置LOCK0和LOCK1可以讲16个page设为只读

3

OTP0

OTP1

OTP2

OTP3

可读写,一次性交易计数器,不可逆

4

Data0

Data1

Data2

Data3

可读写,数据存放区域

5

Data0

Data1

Data2

Data3

6

Data0

Data1

Data2

Data3

7

Data0

Data1

Data2

Data3

8

Data0

Data1

Data2

Data3

9

Data0

Data1

Data2

Data3

10

Data0

Data1

Data2

Data3

11

Data0

Data1

Data2

Data3

12

Data0

Data1

Data2

Data3

13

Data0

Data1

Data2

Data3

14

Data0

Data1

Data2

Data3

15

Data0

Data1

Data2

Data3

红色的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,SN6

2.2.2读卡和写卡指令

  14443A协议中并没有具体规定对射频卡的读写操作方式,故对每种卡的读写操作都必须考虑该卡的存储区域组织形式和应答形式。

MIFARE卡内部存储器是由E2PROM组成的,共划分为16个扇区,每个扇区4个块,每块16字节。

对E2PROM的读写都以块为单位进行,即每次读/写16字节。

 以写卡指令为例,MIFARE卡要求有两步握手,指令格式分别如下所述。

  注意:

address值无意义,但value值写入时必须在4~7字节中存入取反值。

一次写一页,一次读4页

S50卡(常用标准卡)

Mifare1卡的存储结构

2007-06-2211:

26

2、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:

A0A1A2A3A4A5

PP078069

B0B1B2B3B4B5

密码A(6字节)

存取控制(4字节)

密码B(6字节)

表1各扇区块3存储结构

每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,在存取控制中每个块都有相应的三个控制位,分别以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。

三个控制位在存取控制字节中的位置如表2所示(字节9为备用字节,默认值为0x69)。

Bit

7

6

5

4

3

2

1

0

字节6

C23_b

C22_b

C21_b

C20_b

C13_b

C12_b

C11_b

C10_b

字节7

C13

C12

C11

C10

C33_b

C32_b

C31_b

C30_b

字节8

C33

C32

C31

C30

C23

C22

C21

C20

表2控制位在存取控制字节中的位置(注:

_b表示取反)

每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,扇区中的每个数据块的存取条件由密码和存取控制共同决定,他们的关系如表3所示。

控制位(X:

0..2)

访问条件(对块0、1、2)

C1X

C2X

C3X

加值

减值

0

0

0

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

0

KeyA|B

Never

Never

Never

1

0

0

KeyA|B

KeyB

Never

Never

1

1

0

KeyA|B

KeyB

KeyB

KeyA|B

0

0

1

KeyA|B

Never

Never

KeyA|B

0

1

1

KeyB

KeyB

Never

Never

1

0

1

KeyB

Never

Never

Never

1

1

1

Never

Never

Never

Never

表3数据块存取控制条件

据此通过授权机制,对特定操作用户实现不同级别的读写控制。

只有知道特定密码组合的操作用户才能更新卡中数据,从而大大增强了系统的安全性。

射频卡的存储实现技术和工作原理决定了其良好特性,可适用于多种应用。

其中射频卡具多个分区、适合一卡多用的特性,使得射频卡在各种一卡通系统中得到广泛应用。

M1卡读写失误常见问题

①盲目操作:

造成某些区块误操作被锁死不能再使用。

应当仔细参考控制位的权限后,预先得出操作后的结果是否适合使用要求,并且列出操作顺序表单再操作。

最好授权程序员对块3的设置作专人操作。

②丢失密码:

在读写时造成密码认证出错而不能访问卡。

特别要求在对MF卡进行块3编程操作时,必须及时记录相关卡号的控制值、KeyA、KeyB等,而且应当有专人管理密码档案。

③错误设置:

对MF1卡的块3控制位了解不透彻,错误的理解造成错误的设置。

目前MF1卡的控制块仅只有8种数据块控制权限和8种控制块设置权限,超出这16种权限的其它代码组合,将直接引起错误码设置而使卡片报废。

④极端权限:

当块3的存取控制位C12C23C33=100或者111时,称为极端权限。

除特殊应用外一般不被使用!

启用前认真权衡对密码读写、存取控制的锁死是否必要,否则,数据加密后即使有密码也无法读取被锁死的数据区块(看不见)!

⑤设备低劣:

低劣的设备将直接影响卡的读写性能。

对MF1卡进行块3编程操作的设备,特别要求其性能必须十分可靠,运行十分稳定!

建议选用由飞利浦公司原装读写模块构建的知名读写机具!

⑥编程干扰:

在对块3进行编程操作时,不可以有任何的“IO”中断或打扰!

包括同时运行两个以上程序干扰甚至PC机不良的开关电源干扰等,否则,不成功的写操作将造成某个扇区被锁死的现象,致使该扇区再次访问时出错而报废。

⑦数据出错:

在临界距离点上读卡和写卡造成的。

通常的读卡,特别是写卡,应该避免在临界状态(刚能读卡的距离)读卡。

因为临界状态下的数据传达是很不稳定的!

容易引起读写出错!

⑧人为失误:

例如,密码加载操作失误,误将KeyA加载为KeyB;或者是误将其他制卡厂约定的初始密码值如a0a1a2a3a4a5、b0b1b2b3b4b5加载到MF1卡内;或者在初始状态下(密码A=000000000000【隐藏状态,实际为FFFFFFFFFFFF】、控制位=FF078069、密码B=FFFFFFFFFFFF【可见】),若不经意地将KeyA=000000000000删除后又重新输入12个“0”,并加载了它!

这时无意中已将KeyA原来12个隐藏的“F”,修改成了12个“0”,其后果可想而知!

⑨卡片失效:

读写均无数据传送,读写器报告“寻卡错误”!

卡片被超标扭曲、弯曲而造成内电路断裂。

⑩读写距离过近:

与用户使用的读写器性能有关。

标准型MF1卡的读写距离可达10cm(在飞利浦公司的标准读写机具上测试的最大距离),国产知名品牌读写器一般可达5~10cm。

尺寸较小的匙扣卡,其读写距离当然比标准卡近许多,但只要可靠的读写距离在5~10cm之间,一般不会影响正常使用!

对于控制块的处理一定要仔细阅读一下部分,刚开始很容易出错。

比如:

用B密码读控制块,则控制块数据都是伪码数据其伪码数据值与控制字段有关,真实值不显示;

用A密码读控制块,则除A区数据为伪码数据外,控制字段和B区数据显示真实值;

A,B不能同时认证,每次认证都需要重新选卡等;

存储器组织

1024x8bitEEPROM存储器分为16区,每区4块,每块16字节。

在擦处后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。

块内字节编号

扇区

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

说明

15

3

KEYA

控制位

KEYB

扇区15尾块

2

数据

1

数据

0

数据

14

3

KEYA

控制位

KEYB

扇区14尾块

2

数据

1

数据

0

数据

:

:

:

:

:

:

1

3

KEYA

控制位

KEYB

扇区1尾块

2

数据

1

数据

0

数据

0

3

KEYA

控制位

KEYB

扇区0尾块

2

数据

1

数据

0

制造商占用块

尾块(块3)

各区均有一个尾块,存有:

∙密钥A和B(可选),读时返回逻辑“0”。

∙该区四个块的读写条件,存储在字节6至9。

读写控制位也指定了数据块的类型(读写块或数值块)。

如果不需要密钥B,块3的最后6字节可以用作数据字节。

尾块的字节9可用于用户数据。

因为此字节享有与字节6、7、8相同的读写权限。

字节号

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

说明

密钥A

读写条件

密钥B(可选)

读写条件

每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾块中。

读写控制位管理着使用密钥A和B读写存储器的权限。

如果知道相关的密钥,并且当前读写条件允许,读写条件是可以更改的。

读写控制位

有效命令

说明

C13C23C33

read,write

3

尾块

C12C22C32

read,write,increment,decrement,transfer,restore

2

数据块

C11C21C31

read,write,increment,decrement,transfer,restore

1

数据块

C10C20C30

read,write,increment,decrement,transfer,restore

0

数据块

注意:

在每一次存储器读写时,内部逻辑会验证存储条件的格式。

如果发现个是错误,这个区将被永久性锁死。

注意:

在下列说明中,读写控制位是仅以非取反形式表述的。

MF1的内部逻辑保证了命令只有在通过认证后才被执行。

尾块的读写条件

对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“KEYA”、“KEYB”和“KEYA|B”(KEYA或KEYB)。

访问控制位

所控制的访问对象

注释

KEYA

访问控制位

KEYB

C1

C2

C3

0

0

0

禁止

KeyA

KeyA

KeyB

KeyA

KeyA

KeyB可读

0

1

0

禁止

禁止

KeyA

禁止

KeyA

禁止

KeyB可读

1

0

0

禁止

KeyB

KeyA|B

禁止

禁止

KeyB

1

1

0

禁止

禁止

KeyA|B

禁止

禁止

禁止

0

0

1

禁止

KeyA

KeyA

KeyA

KeyA

KeyA

KeyB可读

传输配置状态

0

1

1

禁止

KeyB

KeyA|B

KeyB

禁止

KeyB

1

0

1

禁止

禁止

KeyA|B

KeyB

禁止

禁止

1

1

1

禁止

禁止

KeyA|B

禁止

禁止

禁止

注:

灰色行为keyB可读并可用于存储数据的访问控制条件。

尾块和keyA被预定义为传输配置状态。

因为在传输配置状态下keyB可读,新卡必须用keyA认证。

因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心。

数据块的访问控制条件

对数据块(块0至2)的读写访问取决于其访问控制位,分为“禁止”、“KEYA”、“KEYB”和“kEYA|B”(KEYA或KEYB)。

相关访问控制位的设置确定了其用途以及相应的可用命令。

∙读写块:

允许读、写操作。

∙数值块:

运行另外的数值操作——加值、减值、转存和恢复。

在用于非充值卡的一种情况(‘001’)下,只能够读和减值。

在另一种情况(‘110‘)下,可以用keyB充值。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2