




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RC531操作说明 1:上电初始化 主要做SPI接口确认 步骤: 1:给rc531的RSTPD脚一个高电平脉冲至少100us,热复位 RC531 2:读command-reg直到寄存器数值为 0,表示芯片上电初始化完成 3:写0 x80到page-reg,让芯片开始处理接口时序 4:读command-reg直到寄存器数值为 0,表示芯片接口时序初始化完成 5:此时可以写0 x00到page-reg,指定寄存器地址模式为线性地址模式 Note :见 RC531 第 93 页 11.4 Initialising the Parallel Interface-Type说明 2: spi接口时序 使用
2、SPIMODE0模式,在时钟的上升沿发送和读取数据 读时序: 主机连续写地址,写第二个地址时,在时钟上升沿可以读到RC531返回的第一个地址 的值 要求,地址字节的最高位为 1,中间6位为实际地址,最低位为 0 byte 0 byte 1 byte 2 亠 byte n byte n+1 MOSI adr 0 adr 1 adr. 2 亠 adr n 00 币ISO XX data 0 data 1 data n-1 data n address MOSI) bit 7, MSB bit 6 - Ibiit 1 biitO byte 0 1 address RFU (0 byte 1 to b
3、yte n RFU (0) address RFU (0) byte n+1 0 0 0 写时序: 第一个字节是地址, 后面可以是N个数据,都往这个地址写, 这点在写FIFO时很方便 要求,地址字节的最高位为 0,中间6位为实际地址,最低位为 0 bytm 0 byte 1 byte 2 byte n byte n+1 MOSI adr data 0 data 1 data n-1 data n MISO XX XX XX XX Address line (MOSI) MSB bit 6 - bit 1 bitO byte 0 0 address RFU (0) byte 1 to byte
4、n+1 data NOTE :见 RC531 第 17 页 3: RC531 操作, addr+data 通过写寄存器,一般两字节操作, 和卡的数据交互,写数据到RC531的FIFO寄存器 如(cs 选中,addr 写 +data1+data2+.+dataN, cs释放) (cs选中,cmd-reg+0 x1e (发送接收命令)+cs释放) (cs选中,addr读,读出n字节,cs释放) 4:和卡的交互 寻卡,使用命令 0 x52 (对所有卡包括 halt的卡有效),0 x26 (对standby的卡有效) 数据长度1字节, 返回2字节 返回说明,2字节卡类型 0 x04= CARD_S50
5、; 0 x44=UL 卡 0 x08=CPU 卡 0 x03= SHUL 卡; NOTE :格式要求:RC531关闭所有校验,关闭加密,只发送7bit数据(通过更改 531 寄存器 BitFraming), 见 ISO144443A,7.2.3.2 WAKE-UP(REQA)指令 防冲撞:先使用命令0 x93,0 x20 返回5字节,4字节卡号+1字节异或效验 例:531设置:无发送 CRC,无接收CRC,有奇校验,ZeroAfer=1 ; 发 0 x93, 0 x20; 收 0 x88,0 x4,0 x4b,0 x7,0 xc0 设置ZeroAfer=0 ;(必须有,否则之后操作不能完成)
6、NOTE :格式要求:RC531关闭CRC,奇校验,通过设置DecodeControl接收控 制 ZeroAfer 置 1, 选卡:先使用命令 0 x93,0 x70 + 4字节卡号+卡号异或校验 返回1字节SAK 例:531设置:有发送 CRC,接收CRC,有奇校验 发 0 x93, 0 x70, 0 x88,0 x4, 0 x4b, 0 x7,0 xc0 收 0 x04 载入密码: 验证: 读卡: 先使用命令 0 x30+block号(对UL卡而言是page号) 返回16字节数据 例:531设置:有发送 CRC,有接收CRC,有奇校验 发 0 x30, 0 x05 收:0 x4,0 x4b
7、,0 x7,0 xc0,0 x99,0 x2c,0 x25,0 x84,0 x14,0 x48,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0 NOTE : UL卡每扇区只有4字节,所以每次读出4扇区数据,共16字节数据 对于普通mafare卡,每个扇区读写都要重新认证密钥 写卡: 第一步: 先使用命令 OxAO+block号(对UL卡而言是page号)确定写入地址有效 返回1字节ACK( 0 x0a) 例:531设置:有发送 CRC,无接收CRC,有奇校验 发 0 xA0,0 x05 收 0 x0a 第二步: 写入16字节块数据 返回1字节ACK( 0 x0a) 例:531设置:
8、有发送 CRC,无接收CRC,有奇校验 发 0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5,0 x5 收 0 x0a NOTE :按照14443A标准,返回的 ACK是4bit数据,所以在使用FM2701等 兼容芯片时,一定要取消接收CRC,否则接收不到 ACK应答, 另:在写UL卡之前,要先读一下 0扇区,确定块锁定状态,否则不能写入。 写入时,16字节数据仅前4字节有效,后12字节要设为0 对于普通mafare卡,每个扇区读写都要重新认证密钥 ML卡 ML卡是一种小容量卡,共384位,适合
9、于一卡一用。 电气特性 l容量为384位 l 16位的数值计算 l 128位的数据区(如果不用钱包文件可达 192位) l用户可自定义控制权限 l唯一的32位序列号 l工作频率:13.56MHZ l通信速率:106KB波特率 I防冲突:同一时间可处理多张卡 I读写距离:在10cm以内(与天线有关) I卡内无需电源 存储结构 ML卡共384位,分为12页,每页为4个字节。存储结构如下: 页号 字节0 字节1 字节2 字节3 说明 0 SerNr(0) SerNr(1) SerNr(2) SerNr(3) Block 0 1 SerNr(4) Size Code Type(0) Type(1) 2
10、 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-
11、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、或者是误将其他制卡厂约定的初 A=000000000000 【隐藏状态,实际为 FFFFFFFFFFFF】、控制位=FF 07 80 69、密码
12、 B=FFFFFFFFFFFF【可见】),若不经意地将 KeyA=000000000000删除后又重新输入12个0”,并加 载了它!这时无 意中已将KeyA原来12个隐藏的F”,修改成了 12个0”,其后果可想而知! 卡片失效:读写均无数据传送,读写器报告 寻卡错误”!卡片被超标扭曲、弯曲而造成内电路断裂。 读写距离过近: 与用户使用的读写器性能有关。标准型 MF1卡的读写距离可达10cm (在飞利浦公 司的标准读写机 具上测试的最大距离),国产知名品牌读写器一般可达 510cm。尺寸较小的匙扣卡, 其读写距离当然比标准卡近许多,但只要可靠的读写距离在510cm之间,一般不会影响正常使用! 对
13、于控制块的处理一定要仔细阅读一下部分,刚开始很容易岀错。比如: 用B密码读控制块,则控制块数据都是伪码数据其伪码数据值与控制字段有关,真实值不显示; 用A密码读控制块,则除 A区数据为伪码数据外,控制字段和B区数据显示真实值; A,B不能同时认证,每次认证都需要重新选卡等; 存储器组织 1024 x 8 bit EEPROM 存储器分为16区,每区4块,每块16字节。 在擦处后的状态下,EEPROM的单元读为逻辑“ 0”,写后的状态下读为“ 1 扇区 块 15 3 2 1 0 14 3 2 1 0 1 3 2 1 0 0 3 块内字节编号 0 1 2 3 4 5 6 7 8 9 A B C D
14、 E F KEY A 控 空制 M位 K E、 Y E KEY A 控 空制 M位 K E、 Y E KEY A 控 空制 M位 K E、 Y E KEY A 控制位 KEY B 说明 扇区15尾块 数据 数据 数据 扇区14尾块 数据 数据 数据 扇区1尾块 数据 数据 数据 扇区0尾块 数据 数据 制造商占用块 各区均有一个尾块,存有: 密钥A和B (可选),读时返回逻辑“ 0”。 该区四个块的读写条件, 存储在字节6至9。读写控制位也指定了数据块的类型 (读 写块或数值块)。 如果不需要密钥 B,块3的最后6字节可以用作数据字节。 尾块的字节9可用于用户数据。因为此字节享有与字节6、7、
15、8相同的读写权限。 读写控制位 有效命令 C13 C23 C33 read, write C12 C22 C32 read, write, i ncreme nt, decreme nt, tran sfer, restore C11 C21 C31 read, write, i ncreme nt, decreme nt, tran sfer, restore C10 C20 C30 read, write, i ncreme nt, decreme nt, tran sfer, restore 块 说明 3 尾块 2 数据块 1 数据块 0 数据块 字节号 0 1 2 3 4 5 6 7
16、8 9 10 11 12 13 14 15 说明 密钥A 读写条件 密钥B (可选) 读写条件 每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾 块中。 读写控制位管理着使用密钥A和B读写存储器的权限。如果知道相关的密钥,并且当前读 写条件允许,读写条件是可以更改的。 注意:在每一次存储器读写时,内部逻辑会验证存储条件的格式。如果发现个是错误,这个 区将被永久性锁死。 注意:在下列说明中,读写控制位是仅以非取反形式表述的。 MF1的内部逻辑保证了命令只有在通过认证后才被执行。 尾块的读写条件 对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“
17、 KEY A ”、“KEY B”和“ KEY A|B ”( KEY A 或 KEY B )。 |2|3|45 毛|了|目|9|10|们|12|13|14|15 访问揑制位 BU 了 654321 U 子节& 字节7 字节g 字节9 访问控制位 所控制的访问对象 注释 KEY A 访问控制位 KEY B C C C 读 写 读 写 读 写 1 2 3 0 0 0 禁止 Key A Key A Key B Key A Key A Key B可读 0 1 0 禁止 禁止 Key A 禁止 Key A 禁止 Key B可读 1 0 0 禁止 Key B Key A|B 禁止 禁止 Key B 1 1
18、0 禁止 禁止 Key A|B 禁止 禁止 禁止 0 0 1 禁止 Key A Key A Key A Key A Key A Key B可读 传输配置状态 0 1 1 禁止 Key B Key A|B Key B 禁止 Key B 1 0 1 禁止 禁止 Key A|B Key B 禁止 禁止 1 1 1 禁止 禁止 Key A|B 禁止 禁止 禁止 注:灰色行为key B可读并可用于存储数据的访问控制条件。 尾块和key A被预定义为传输配置状态。因为在传输配置状态下key B可读,新卡 必须用key A认证。 因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心。 数据块的访问控制
19、条件 对数据块(块0至2)的读写访问取决于其访问控制位,分为“禁止”、“KEY A ”、“ KEY B”和“ kEY A|B ”( KEY A或KEY B )。相关访问控制位的设置确定了其用途以及相应的 可用命令。 *读写块:允许读、写操作。 数值块:运行另外的数值操作一一加值、减值、转存和恢复。在用于非充值卡的 一种情况(001 下,只能够读和减值。在另一种情况(110 )下,可以用key B充 值。 制造厂商块:只读,不受访位控制位设置的影响! 密钥管理:在传输配置状态下,必须用 key A认证。 访问控制位 所控制的访问操作 用途 C 1 C 2 C3 读 写 加值 减值 转存 恢复 0
20、 0 0 1 key A|B key A|B 1 key A|B 1 key A|B 1 传输配置状态 0 1 1 0key A|B key B1 禁止 禁止 读写块 1 0 0 1 key A|B key B1 禁止 禁止 读写块 1 1 0 1 key A|B key B1 key B 1 key A|B 1 数值块 0 0 1 1 key A|B 禁止 禁止 key A|B 1 数值块 0 1 1 1 key B 1 key B1 禁止 禁止 读写块 1 0 1 1 key B 禁止 禁止 禁止 读写块 1 1 1 禁止 禁止 禁止 禁止 读写块 如果相应扇区尾块 Key B可读,则不得
21、用作认证(前表中所有灰色行)。后果:如果读写器试图用灰色 行的访问控制条件以 Key B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问 S70 卡(4K 卡) S70卡又称 M1进口 S70卡,MF1 S70 卡。 2、S70卡芯片的初始密码为12个F,客户可自行无限次更改密码。 3、S70卡有4KB内存,芯片内一共有40个扇区,前面32个扇区:每个扇区又分4个块, 每个块有16个字节,后8个扇区:每个扇区分 16个块,每个块有16个字节。故,S70 芯片卡主要适用于一卡通卡方面,可以每一个扇区记载存储不同的项目,每一个项目下 又记载存储不同的子项目。持一卡可以实现上百个不同项目的储
22、值、消费、打折、积分、 查询、记录等功能,真正做到一卡走遍天下! M1卡控制原理和读写方式 M1结构: M1卡分为16个扇区,每个扇区4块(块03),共64块,按块号编址为063。第0扇区 的块0(即绝对地址0块)用于存放厂商代码, 已经固化,不可更改。其他各扇区的块0、块1、 块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码 B。每个扇区的 密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。 M1卡运作机理: 连接读写器T寻卡T识别卡(获取卡序列号)T从多卡中选一张卡 T向卡中缓冲区装载 密码T验证密码T进行读写T关闭连接 即(代码说明) t (/a_h
23、ex) Open_ US4 rf_request宀 rf_an ticoll宀 rf_select宀 rf_load_key 宀 rf_authe nticati on t rf_read/rf_write(hex_a) Close_USB 如果概括来说的话,主要也就四部分开关连接、寻卡、验证密码、读取。 (至于详细程序代码,相信大家自己看过dll说明文档后,自己会明白的,这里就不写 了,因为内容多) M1卡功能模式: 1寻卡模式: 寻卡模式分三种情况:IDLE模式、ALL模式及指定卡模式(0, 1 , 2均是int类型, 是方法参数,下同)。 0表示IDLE模式,一次只对一张卡操作; 1表示
24、ALL模式,一次可对多张卡操作; 2表示指定卡模式,只对序列号等于snr的卡操作(高级函数才有)【不常用】 也就是说,我们一次也可以同时操作多张卡。 对于多卡操作,其实际真正执行操作的还是一张卡。读写器能识别多张卡的序列号(但 注意识别出的顺序是不定的,并且最多也就能识别4张卡,因为卡叠放的厚度太厚,会超出 读写器的识别范围),并一一进行操作。 所以由此看出,多卡操作的意义并不大。 但我建议大家还是设置为1好了(原因不说了, 自己感受吧,其实无所谓)。 2密码验证模式: 0KEYSET0 的 KEYA 4KEYSET0 的 KEYB M1卡可以在验证密码时选择密码类型( A/B )。【其实 M
25、1卡有3套密码(KEYSET0、 KEYSET1、KEYSET2 ),共6个密码(用02、46来表示这六个密码),目的是为了适应 不同读写器。而这里我们用的是 KEYSET0的2个密码】 M1卡密码机制: 这可以说是 M1卡的精髓了,也是 M1卡最为复杂的地方,希望大家耐心看完。 (请先看明白M1卡结构)如上所说,在存取控制中每个块都有相应的三个控制位,它们 的定义如下: 块0: C10C20C30 块1: C11 C21 C31 块2: C12 C22 C32 块3: C13 C23 C33 一个扇区的三个 数据块,我们可以利用密码机制对它们分别进行权限控制。数据块(块 0、块1、块2)的存
26、取控制如下: 腔制位-2) 访问条件(对块0、丄、2) C1X C2X C3X Read Write Increment Decxenent tr ansf er restoTe 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 Hev&r 1 1 0 KeyA|B KeyB KeyB KeyA|B 0 0 1 KeyA|fi Never Nevex KeyA|B 0 1 1 KeyB KeyB Wevei Nevei? 1 0 1 KeyB Never Neve
27、x Never 1 1 1 Nevei Never Hevei Nevef KeyA|B表示密码碱密码匪蓄亡工表示任何条件下不能实现) 例如:当块0的存取控制位 C10 C20 C30=100时,验证密码 A或密码B正确后可读;验 证密码B正确后可写;不能进行加值、减值操作。 那么M卡修改密码的方法是 rf_changeb3 参数: icdev :通讯设备标识符 SecNr :扇区号(015) KeyA :密码A _B0 :块0控制字,低3位(D2D1D0对应 C10、C20 C30 _B1 :块1控制字,低3位(D2D1D0对应 C11、C21、C31 _B2 :块2控制字,低3位(D2D1D0对应 C12、C22、C32 _B3 :块3控制字,低3位(D2D1D0对应 C13、C23 C33 _Bk :保留参数,取值为0 _KeyB :密码 B 由上我们看出_B0 _B1、_B2、_B3分别控制块0、块1、块2、块3。 由图我们可知 _B0 _B1、_B2的可取值为 0、10、100、110、1、11、101、111。 这里大家一定要注意一点: 不能装载密码到 M1卡某一扇区后再更改那扇区的密码(最好连接完读写器后直接更改 密码),否则更改密码会失败而冻结扇区。如果不慎这样了,解决的办法是完成一次读写操 作,再更改密码。 控制块(块3)的存取控制与 数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省巴中市普通高中2023级“零诊”考试物理试题(含答案)
- 2025届北京市东城区化学九年级第一学期期中经典试题含解析
- 多囊卵巢综合症的护理
- 湖北省武汉青山区七校联考2026届九上化学期中调研试题含解析
- 电力变送器培训
- 2026届湖北省宜昌市当阳市化学九年级第一学期期中教学质量检测试题含解析
- 浙江杭州余杭区2026届英语九上期末综合测试模拟试题含解析
- 2026届山东省烟台龙口市九上化学期中达标测试试题含解析
- 贵州省黔东南州麻江县2026届化学九上期中学业质量监测模拟试题含解析
- 第二部分 第十一章 第55课时 区域发展对交通运输布局的影响(重难课时)2026年高考地理第一轮总复习
- 中国血脂管理指南(基层版+2024年)解读
- 分子诊断技术在感染性疾病中的应用-深度研究
- 《智能AI分析深度解读报告》课件
- 行测5000题电子版2025
- 《规训与惩罚》课件
- 【MOOC】声乐作品赏析与演唱-扬州大学 中国大学慕课MOOC答案
- 2024年版机电产品国际招标标准招标文件
- 糖尿病高血压健康教育
- 铜府字202322号铜鼓县革命文物保护利用专项规划(公布稿)
- 企业员工心理健康与欺凌防范政策
- 平面构成中的形式美法则
评论
0/150
提交评论