- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RC531操作说明
1:上电初始化
主要做SPI接口确认
步骤:
1:给rc531的RSTPD脚一个高电平脉冲至少100us,热复位RC531
2:读command-reg 直到寄存器数值为0,表示芯片上电初始化完成
3:写0x80到reg,让芯片开始处理接口时序
4:读command-reg 直到寄存器数值为0,表示芯片接口时序初始化完成
5:此时可以写0x00到reg,指定寄存器地址模式为线性地址模式
Note:见RC531第93页11.4 Initialising the Parallel Interface-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.2 WAKE-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字节块数据
返
文档评论(0)