MIFARE1卡读写控制

上传人:muw****50 文档编号:244676879 上传时间:2024-10-05 格式:PPT 页数:35 大小:216.50KB
返回 下载 相关 举报
MIFARE1卡读写控制_第1页
第1页 / 共35页
MIFARE1卡读写控制_第2页
第2页 / 共35页
MIFARE1卡读写控制_第3页
第3页 / 共35页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,SmartCard,IC卡公交收费机设计(三),MIFARE 1卡读写软件设计,电子与信息工程学院,课 程 目 标,非接触式IC卡读写控制,MIFARE 1卡读写控制功能的实现,项目开发IC卡公交收费系统,系统需求分析:,具备小额电子钱包功能,定额方式收费,操作方便快捷,工作距离,50,cm,具备显示余额、异常报警(非法卡或余额不足),可将当班收款额上传总站数据库,公交公司可调整定额额度,卡遗失可挂失,抗干扰能力强,项目设计之三软件实现,读写器与M1卡交换数据的过程:,1)由读写器,MCU,(微控制器)发送指令给,MCM,,,2)MCM,执行指令并将其转换为射频信号发送给卡;,3)卡接收到来自,MCM,的指令后,按指令完成其内部的各种处理,并回送应答信号,/,数据给,MCM,;,4)MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU,读写器,MCU,读取,MCM,接收到的应答,/,数据,即可完成与,M1,卡的数据交换。,M,C,M,基,本,通,信,指,令,集,MCM,内,核,特,殊,寄,存,器,MIFARE卡的读写操作步骤,激活,MCM,MCM,软复位,向,MCM,下载密码(,LOAD KEY,),校验传输密码正确后可向,MCM,的,KEY-RAM,写入用户自己设定的密码,以上操作与卡无关。,请求应答(,ANSWER TO REQUEST,):寻卡,防冲突(,ANTICOLLISION,):选择唯一一张卡,选择标记(,SELECT,):激活所选择的卡,认证,(AUTHENTICATION):安全性,读写操作(读、写、加值、减值):交换数据,(,READ/WRITE/INCREAMENT/DECREMENT,),停止(,HALT,):置卡为停止模式,防止重复操作。,SOR/LOAD KEY,REQUEST,ANTICOLLISION,READ/WRITE/INC/DEC,HALT,MIFARE 卡操作步骤,AUTHENTICATION,SELECT,卡应答:TAGTYPE(2B),卡应答:SN(4B)+校验码(1B),卡应答:SIZE(1B),卡应答:AE位,指令时序,每个指令由,7,个基本步骤组成,必须按此时序编程才能完成该指令:,(1)初始化,设置各寄存器,特别是,BCNTS,和,BCNTR,。,(2)送指令码到,DATA,,由,MCM,发送指令。,(3),设置,TOC,,,MCM,准备接收来自卡的应答或数据。,(4)检查,DV,标志,查询数据接收是否完成。,DV,标志为”,1,”表明,MCM,与,MIFARE,卡片之间的传输已经完成,并且主处理机可能已经从,MCM,中收到数据,可以进行下一步操作。而,DV=0,表示数据接收尚未完成或未能接收到数据,则程序循环检测,DV,标志直至,DV=1,。有一种情况例外,既当定时器溢出时,无论接收是否完成,DV,都将被设置为,1,,同样将进行下一步操作。,(5)清零,TOC,。,(6),检查出错标志,若有标志被设置,则进行相应的出错处理,例如设置出错标志等,并返回主程序;若没有标志被设置,表示接收正确,将进行下一步操作,(,7,)MCU,从,DATA,读出,MCM,接收到的应答或数据。,Answer to Request(请求应答)指令,Request,指令将通知,MCM,在天线有效的工作范围(距离)内寻找,MIFARE 1,卡。,命令码:26H或52H。,卡收到该指令将回送卡类型号作为卡应答:,TAGTYPE,(,2,个字节),With a“request std”(26H)instruction only cards which are not set into a“HALT-mode”will respond to this request,or it may be expanded to all cards in the field with a“request all”(52H)option.The first option is needed to prevent the MCM from selecting one card several times.,Difference between,“request std”&“request all”,Request:,NOP,NOP,MOV A,#0CH ;设置STACON,MOV R0,#01H,MOVX R0,A,MOV A,#0EH ;设置BAUDRATE,MOV R0,#05H,MOVX R0,A,MOV A,#0C0H ;设置ENABLE,MOV R0,#02H,MOVX R0,A,MOV A,#0C6H ;设置MODE,MOV R0,#07H,MOVX R0,A,MOV A,#0CH ;再次设置STACON,MOV R0,#01H,MOVX R0,A,MOV A,#02H ;设置RCODE,MOV R0,#0EH,MOVX R0,A,MOV A,#07H ;设置BCNTS=7bits,MOV R0,#03H,MOVX R0,A,MOV A,#10H ;设置BCNTR=2Bytes,MOV R0,#04H,MOVX R0,A,JUDGE_COMMAND:;选择REQ STD还是REQ ALL,MOV A,R2,XRL A,#01H,JNZ RQT_STD,RQT_ALL:,MOV A,#52H,SJMP RQT_NEXT,RQT_STD:,MOV A,#26H,RQT_NEXT:,MOV R0,#00H;发送命令码,MOVX R0,A,NOP,MOV A,#0AH ;设置TOC=1ms,MOV R0,#06H,MOVX R0,A,RQT_STACON:,MOV R0,#01H;读 STACON,MOVX A,R0,JNB ACC.7,RQT_STACON;判断 DV=1?,MOV R7,A ;暂存STACON,MOV A,#00H;清零TOC,MOV R0,#06H,MOVX R0,A,MOV A,R7;判断是否出错,JB ACC.6,RQT_TE_ERR,JB ACC.3,RQT_BE_ERR,MOV R0,#00H ;读TAGTYPE,MOVX A,R0,MOV 20H,A,MOV R0,#00H,MOVX A,R0,MOV 21H,A,MOV B,#00H;设置 OK 标志,SJMP RQT_EXIT,RQT_BE_ERR:;错误处理,MOV B,#01H,SJMP RQT_EXIT,RQT_TE_ERR:,MOV B,#02H,SJMP RQT_EXIT,RQT_EXIT:,RET,Authentication 认证操作,MCM中设有专用的密码存储器(KEY-RAM),用于存储3个密码集KEYSET0,KEYSET1,KEYSET2,每一个KEYSET又包含了各个扇区的KEY A 及KEY B。,Authentication操作就是将KEY-RAM中的密码与卡中对应的密码进行三次相互认证。,Authentication操作的卡应答以AE位给出;,AE=1,密码出错,未能通过认证;,AE=0,密码正确,通过认证,Authetication操作包括3个步骤,1)设置KEYSTACON寄存器,指定Authetication操作及KEYSET(0、1或2),2)设置KEYADDR寄存器,指定Authetication操作、KEYA或KEYB、待认证的扇区号,3)写“命令”(60H或61H)和写“地址”(扇区号015)到DATA寄存器,启动Authetication操作。,READ/WRITE操作,READ/WRITE均需整块操作。,READ:,发送命令码30H+块地址(063),接收指定块的数据(16B),通常用2次读并比较是否一致来校验是否正确读,WRITE:,发送命令码A0H+块地址(063),接收ACK/NAK应答来校验是否正确接收命令,发送块数据(16B),接收ACK/NAK应答来校验是否正确写入EEPROM,Value Operate 值操作,MIFARE,卡专门为公交/地铁等行业的定额收费系统设有值操作命令,包括INCREAMENT/DECREAMENT/,TRANSFER/RESTORE,对某块进行值操作的前提是该块已被初始化为“值块”(Value Block)并且Access Bits允许值操作。,Increment/Decrement/Transfer,Increment:,adds the specified value to the,memory value,Decrement:,subtracts the specified value from the memoty value,Transfer:,Each Increment or Decrement instruction manipulating a standard value block has to be followed by a,Transfer,intruction which actually stores the calculated result in the card memory.Until then,the result is kept in an internal value buffer resgister.,DECREMENT:,入口:块地址addr,值value存放于D_BUF,出口:ACK/NAK,NOP,NOP,MOV A,#10H;SEND BCNTS(16bits:命令码+块地址),MOV R0,#03H,MOVX R0,A,MOV A,#04H;SEND BCNTR(4bits:ACK/NAK),MOV R0,#04H,MOVX R0,A,MOV A,#0C0H,;SEND CODE,MOV R0,#00H,MOVX R0,A,MOV A,#addr;,SEND BLOCK ADDR,MOV R0,#00H,MOVX R0,A,MOV A,#0AH;SET TOC=1ms,MOV R0,#06H,MOVX R0,A,D_wait_value:;读STACON,判断DV=1?,MOV R0,#01H,MOVX A,R0,JNB ACC.7,D_wait_value,MOV R6,A,MOV A,#00H;清零TOC,MOV R0,#06H,MOVX R0,A,MOV A,R6;出错判断,JB ACC.6,DEC_TE_ERR,JB ACC.3,DEC_BE_ERR,AJMP DEC_CONTI,DEC_TE_ERR:;NOTAGERR,MOV B,#01H,AJMP DEC_EXIT,DEC_BE_ERR:,MOV B,#02H,AJMP DEC_EXIT,DEC_CONTI:,MOV R0,#00H;,读入ACK/NAK,,,MOVX A,R0,ANL A,#0BH;仅检查0,1,3位,CJNE A,#00H,D_N1,MOV B,#07H ;NOTAUTHERR(应答为00000000),SJMP DEC_NEXT,D_N1:,CJNE A,#0AH,D_N2;收到ACK应答(00000101),表示可以DEC,SJMP DEC_NEXT,D_N2:,MOV B,#03H ;其他错误应答(00000011),CODEER,AJMP WRITE_EXIT,WRITE_NEXT:;开始写数据,MOV A,#32;SEND BCNTS=32bits(4B VALUE),MOV R0,#03H,MOVX R0,A,MOV A,#04H;SEND BCNTR=4 bits(ACK/NAK),MOV R0,#04H,MOVX R0,A,MOV R5,#4 ;送4B 值,MOV R0,#00H,MOV R1,#D_BUF,DEC_VALUE:,MOV A,R1,MOVX R0,A,INC R1,DJ
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!