收藏 分销(赏)

MIFARE-1卡读写控制演示幻灯片.ppt

上传人:人****来 文档编号:3255468 上传时间:2024-06-27 格式:PPT 页数:35 大小:221.50KB
下载 相关 举报
MIFARE-1卡读写控制演示幻灯片.ppt_第1页
第1页 / 共35页
MIFARE-1卡读写控制演示幻灯片.ppt_第2页
第2页 / 共35页
MIFARE-1卡读写控制演示幻灯片.ppt_第3页
第3页 / 共35页
MIFARE-1卡读写控制演示幻灯片.ppt_第4页
第4页 / 共35页
MIFARE-1卡读写控制演示幻灯片.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、SmartCardSmartCard IC IC卡公交收费机设计(三)卡公交收费机设计(三)MIFARE 1MIFARE 1卡读写软件设计卡读写软件设计电子与信息工程学院电子与信息工程学院SmartCardSmartCard课 程 目 标q 非接触式非接触式ICIC卡读写控制卡读写控制 q MIFARE 1 MIFARE 1卡读写控制功能的实现卡读写控制功能的实现SmartCardSmartCard项目开发IC卡公交收费系统q系统需求分析:1.具备小额电子钱包功能,定额方式收费2.操作方便快捷3.工作距离50cm4.具备显示余额、异常报警(非法卡或余额不足)5.可将当班收款额上传总站数据库6.

2、公交公司可调整定额额度7.卡遗失可挂失8.抗干扰能力强SmartCardSmartCard项目设计之三软件实现q读写器与读写器与M1M1卡交换数据的过程:卡交换数据的过程:1)由读写器MCU(微控制器)发送指令给MCM,2)MCM执行指令并将其转换为射频信号发送给卡;3)卡接收到来自MCM的指令后,按指令完成其内部的各种处理,并回送应答信号/数据给MCM;4)MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU,读写器MCU读取MCM接收到的应答/数据,即可完成与M1卡的数据交换。SmartCardSmartCardMCM基本通信指令集SmartCardSmartCardMCM内核特殊寄

3、存器SmartCardSmartCardMIFARE卡的读写操作步骤 q激活MCMqMCM软复位q向MCM下载密码(LOAD KEY),校验传输密码正确后可向MCM的KEY-RAM写入用户自己设定的密码,以上操作与卡无关。q请求应答(ANSWER TO REQUEST):寻卡 q防冲突(ANTICOLLISION):选择唯一一张卡 q选择标记(SELECT):激活所选择的卡 q认证(AUTHENTICATION):安全性q读写操作(读、写、加值、减值):交换数据(READ/WRITE/INCREAMENT/DECREMENT)q停止(HALT):置卡为停止模式,防止重复操作。SmartCard

4、SmartCardSOR/LOAD KEYREQUESTANTICOLLISIONREAD/WRITE/INC/DECHALTMIFARE MIFARE 卡操作步骤卡操作步骤卡操作步骤卡操作步骤AUTHENTICATIONSELECT卡应答:TAGTYPE(2B)卡应答:SN(4B)+校验码(1B)卡应答:SIZE(1B)卡应答:AE位SmartCardSmartCard指令时序 每个指令由7个基本步骤组成,必须按此时序编程才能完成该指令:(1)初始化,设置各寄存器,特别是BCNTS和BCNTR。(2)送指令码到DATA,由MCM发送指令。(3)设置TOC,MCM准备接收来自卡的应答或数据。(

5、4)检查DV标志,查询数据接收是否完成。DV标志为”1”表明MCM与MIFARE卡片之间的传输已经完成,并且主处理机可能已经从MCM中收到数据,可以进行下一步操作。而DV=0表示数据接收尚未完成或未能接收到数据,则程序循环检测DV标志直至DV=1。有一种情况例外,既当定时器溢出时,无论接收是否完成DV都将被设置为1,同样将进行下一步操作。(5)清零TOC。(6)检查出错标志,若有标志被设置,则进行相应的出错处理,例如设置出错标志等,并返回主程序;若没有标志被设置,表示接收正确,将进行下一步操作(7)MCU从DATA读出MCM接收到的应答或数据。SmartCardSmartCardAnswer

6、to Request(请求应答)指令 qRequest 指令将通知MCM在天线有效的工作范围(距离)内寻找MIFARE 1卡。q命令码:26H或52H。q卡收到该指令将回送卡类型号作为卡应答:TAGTYPE(2个字节)SmartCardSmartCardqWith 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“reques

7、t all”(52H)option.The first option is needed to prevent the MCM from selecting one card several times.Difference between “request std”&“request all”SmartCardSmartCardRequest: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,#

8、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,ASmartCardSmartCard MOV A,#07H ;设置BCNTS=7bits MOV R0,#03H MOVX R0,A MOV A,#10H ;设置BCNTR=2Bytes MOV R0,#04H MOVX R0,AJUDGE_COMMAND:;选择REQ STD还是REQ ALL MOV A,R2

9、XRL A,#01H JNZ RQT_STDRQT_ALL:MOV A,#52H SJMP RQT_NEXTRQT_STD:MOV A,#26HRQT_NEXT:MOV R0,#00H;发送命令码 MOVX R0,A NOPSmartCardSmartCard MOV A,#0AH ;设置TOC=1ms MOV R0,#06H MOVX R0,ARQT_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

10、,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_EXITSmartCardSmartCardRQT_BE_ERR:;错误处理 MOV B,#01H SJMP RQT_EXITRQT_TE_ERR:MOV B,#02H SJMP RQT_EXITRQT_EXIT:RET SmartCardSmartCardAuthentic

11、ation 认证操作 qMCM中设有专用的密码存储器(KEY-RAM),用于存储3个密码集KEYSET0,KEYSET1,KEYSET2,每一个KEYSET又包含了各个扇区的KEY A 及KEY B。qAuthentication操作就是将KEY-RAM中的密码与卡中对应的密码进行三次相互认证。qAuthentication操作的卡应答以AE位给出;AE=1,密码出错,未能通过认证;AE=0,密码正确,通过认证SmartCardSmartCardqAuthetication操作包括3个步骤 1)设置KEYSTACON寄存器,指定Authetication操作及KEYSET(0、1或2)2)设置

12、KEYADDR寄存器,指定Authetication操作、KEYA或KEYB、待认证的扇区号 3)写“命令”(60H或61H)和写“地址”(扇区号015)到DATA寄存器,启动Authetication操作。SmartCardSmartCardREAD/WRITE操作qREAD/WRITE均需整块操作。qREAD:发送命令码30H+块地址(063)接收指定块的数据(16B)通常用2次读并比较是否一致来校验是否正确读qWRITE:发送命令码A0H+块地址(063)接收ACK/NAK应答来校验是否正确接收命令 发送块数据(16B)接收ACK/NAK应答来校验是否正确写入EEPROMSmartCar

13、dSmartCardValue Operate 值操作qMIFARE卡专门为公交/地铁等行业的定额收费系统设有值操作命令,包括INCREAMENT/DECREAMENT/TRANSFER/RESTOREq对某块进行值操作的前提是该块已被初始化为“值块”(Value Block)并且Access Bits允许值操作。SmartCardSmartCardIncrement/Decrement/TransferqIncrement:adds the specified value to the memory valueqDecrement:subtracts the specified value

14、from the memoty valueqTransfer: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.SmartCardSmartCard

15、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,ASmartCardSmartCardMOV A,#0AH;SET TOC

16、=1ms MOV R0,#06H MOVX R0,AD_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_CONTIDEC_TE_ERR:;NOTAGERR MOV B,#01H AJMP DEC_EXITDEC_BE_ERR:MOV B,#02H AJMP DEC_EXITSmar

17、tCardSmartCardDEC_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_NEXTD_N1:CJNE A,#0AH,D_N2;收到ACK应答(00000101),表示可以DEC SJMP DEC_NEXTD_N2:MOV B,#03H ;其他错误应答(00000011),CODEER AJMP WRITE_EXIT SmartCardSmartCardWRITE_NEXT:;开始写数据 MO

18、V 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_BUFDEC_VALUE:MOV A,R1 MOVX R0,A INC R1 DJNZ R5,DEC_VALUE SmartCardSmartCard MOV A,#0AH;SET TOC=1ms MOV R0,#06H MOVX R0,ADEC_end:;DV=1?MOV R0,#01H

19、 MOVX A,R0 JNB ACC.7,DEC_end MOV A,#00H;清零TOC MOV R0,#06H MOVX R0,AJudge_answer:MOV R0,#01H;出错判断 MOVX A,R0 JNB ACC.6,DEC_error_TEMOV B,#00HDEC_ANSWER:;读入ACK/NAK MOV R0,#00H MOVX A,R0 ANL A,#0FH CJNE A,#04H,D_ERR1;(00000100为VALUE OVERFLOW)MOV B,#0FEH SJMP DEC_EXITD_ERR1:MOV B,#0FFH;其他错误 DEC_EXIT:RET

20、SmartCardSmartCardTRANSFER入口:块地址T_addr出口:ACK/NAKTRANS: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,#0B0H;SEND CODE MOV R0,#00H MOVX R0,A MOV A,#T_addr;SEND BLOCK ADDR MOV R0,#00H MOVX R0,ASmartCardSmartCardMOV A,#1

21、0H;SET TOC=1.5ms MOV R0,#06H MOVX R0,AT_end:;DV=1?MOV R0,#01H MOVX A,R0 JNB ACC.7,T_end MOV A,#00H;清零TOC MOV R0,#06H MOVX R0,AJudge_answer:;出错判断 MOV R0,#01H MOVX A,R0 JB ACC.3,T_error_BE JB ACC.6,T_error_PE MOV B,#00H AJMP NEXT_TRANST_error_BE:;出错处理 MOV B,#03H SJMP NEXT_TRANST_error_PE:MOV B,#05H SJ

22、MP NEXT_TRANSSmartCardSmartCardNEXT_TRANS:MOV A,#95D;SET TOC=9ms MOV R0,#06H MOVX R0,AT_Toc_end:;DV=1?(EEPROM写入结束否?)MOV R0,#01H MOVX A,R0 JNB ACC.7,T_Toc_end MOV R6,A MOV A,#00H;CLEAR TOC MOV R0,#06H MOVX R0,A MOV A,R6;出错判断 JB ACC.6,T_TAG_ERR JB ACC.3,T_BIT_ERR MOV B,00H SJMP NEXT_ANSWERT_TAG_ERR:;出

23、错处理 MOV B,#09H AJMP T_EXITT_BIT_ERR:MOV B,#0BH AJMP T_EXITSmartCardSmartCardNEXT_ANSWER:;读入ACK/NAK MOV R0,#00H MOVX A,R0 ANL A,#0FH CJNE A,#0AH,T_ERR1;(00000101为ACK,TRANSFER OK)MOV B,#00H SJMP T_EXITT_ERR1:CJNE A,#04H,T_ERR2;(00000100为NAK)MOV B,#02H SJMP T_EXITT_ERR2:CJNE A,#05H,WRITE_EXIT;其他错误 MOV

24、B,#04HT_EXIT:RETSmartCardSmartCard实训6 非接触式IC卡的读写控制 实训程序将读写器MCU片内RAM中的16个数据写入卡的一个数据块,然后将该数据块中的数据读出并存入读写器MCU的片内RAM中。MCU采用查询方式与MCM通信。实训程序说明:mode 选择密码集KEYSET0、1、2及密码A、B sector_nr 认证扇区号(015)R_H_BUF 读入数据缓冲区首地址 R_E_BUF 读入数据暂存区首地址 W_H_BUF 写入数据区首地址 R_addr 被读取的块地址(063)W_addr 被写入的块地址(063)SmartCardSmartCard实训步骤

25、q用非接触式IC卡读写软件MWRF向MCM中下载密码,读出并记录MIFARE1卡的TAGTYPE、SN、SIZE,读出并记录卡中某数据块(如扇区1块0)的数据。q用镊子取出非接触式IC卡开发板上的MCU芯片,将仿真头插入MCU的IC座。q编译实训程序,设置断点。q打开片内RAM及寄存器窗口,在写数据区(首地址为10H的16个单元)设置要写入卡中的数据。q天线范围内无卡时运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。q将卡置入天线范围内,运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。SmartCardSm

26、artCard 实训程序:mode EQU 00H;设置KEYSET=KEYSET0,使用密码A sector_nr EQU 01H;设置认证扇区为扇区1 R_H_BUF EQU 40H;读入数据缓冲区 R_E_BUF EQU 50H;读入数据暂存区 W_H_BUF EQU 10H;写入数据区 R_addr EQU 04H;被读取的块地址(扇区1的块0)W_addr EQu 05H;被写入的块地址(扇区1的块1)SmartCardSmartCardORG 0000H AJMP MAIN ORG 0050HMAIN:MOV SP,#60H;重新设置堆栈 CLR EA;关闭所有中断 CLR P3.

27、4 SETB P3.3;关闭MCM200 NOP NOP CLR P3.3;激活MCM200 NOP LCALL D500MSSTART:NOP NOP MOV A,#80H;SOR软件复位 MOV R0,#01H MOVX R0,A NOP NOP LCALL D500MS CLR P3.3;再次激活MCM200 CLR P3.3SmartCardSmartCard MOV R2,#01H;选择REQUEST ALL 指令 LCALL REQUEST;请求响应REQUEST SETB p3.4 ;断点断点,查看查看TAGTYPE(20H)()(21H)LCALL ANTICOLLISION

28、;防冲突ANTICOLLISION SETB P3.4 ;断点断点,查看查看SN(30H)(34H)LCALL SELECT;选择卡片SELECT SETB P3.4 ;断点断点,查看查看SIZE(22H)LCALL LOAD_KEY;下载密码 SETB P3.4 LCALL AUTH;密码认证AUTHENTICATION SETB P3.4 LCALL WRITE;写数据WRITE SETB P3.4 LCALL READ;读数据READ SETB P3.4;断点断点,查看数据查看数据 NOP ;(40H)(4FH),(),(50H)(5FH)NOP LCALL HALT;停止 LJMP START SJMP$SmartCardSmartCard

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服