MIFARE1卡读写控制

上传人:沈*** 文档编号:181894945 上传时间:2023-01-18 格式:PPT 页数:36 大小:227.50KB
收藏 版权申诉 举报 下载
MIFARE1卡读写控制_第1页
第1页 / 共36页
MIFARE1卡读写控制_第2页
第2页 / 共36页
MIFARE1卡读写控制_第3页
第3页 / 共36页
资源描述:

《MIFARE1卡读写控制》由会员分享,可在线阅读,更多相关《MIFARE1卡读写控制(36页珍藏版)》请在装配图网上搜索。

1、 IC IC卡公交收费机设计(三)卡公交收费机设计(三)MIFARE 1MIFARE 1卡读写软件设计卡读写软件设计电子与信息工程学院电子与信息工程学院课 程 目 标q 非接触式非接触式ICIC卡读写控制卡读写控制 q MIFARE 1MIFARE 1卡读写控制功能的实现卡读写控制功能的实现项目开发IC卡公交收费系统q系统需求分析:q具备小额电子钱包功能,定额方式收费q操作方便快捷q工作距离50cmq具备显示余额、异常报警(非法卡或余额不足)q可将当班收款额上传总站数据库q公交公司可调整定额额度q卡遗失可挂失q抗干扰能力强项目设计之三软件实现q读写器与读写器与M1M1卡交换数据的过程:卡交换数

2、据的过程:1)由读写器MCU(微控制器)发送指令给MCM,2)MCM执行指令并将其转换为射频信号发送给卡;3)卡接收到来自MCM的指令后,按指令完成其内部的各种处理,并回送应答信号/数据给MCM;4)MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU,读写器MCU读取MCM接收到的应答/数据,即可完成与M1卡的数据交换。MCM基本通信指令集MCM内核特殊寄存器MIFARE卡的读写操作步骤 q 激活MCMq MCM软复位q 向MCM下载密码(LOAD KEY),校验传输密码正确后可向MCM的KEY-RAM写入用户自己设定的密码,以上操作与卡无关。q 请求应答(ANSWER TO REQU

3、EST):寻卡 q 防冲突(ANTICOLLISION):选择唯一一张卡 q 选择标记(SELECT):激活所选择的卡 q 认证(AUTHENTICATION):安全性q 读写操作(读、写、加值、减值):交换数据(READ/WRITE/INCREAMENT/DECREMENT)q 停止(HALT):置卡为停止模式,防止重复操作。SOR/LOAD KEYREQUESTANTICOLLISIONREAD/WRITE/INC/DECHALTAUTHENTICATIONSELECT卡应答:TAGTYPE(2B)卡应答:SN(4B)+校验码(1B)卡应答:SIZE(1B)卡应答:AE位指令时序 每个指令

4、由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)检查出错标志,若有标志被设置

5、,则进行相应的出错处理,例如设置出错标志等,并返回主程序;若没有标志被设置,表示接收正确,将进行下一步操作(7)MCU从DATA读出MCM接收到的应答或数据。Answer to Request(请求应答)指令 qRequest 指令将通知MCM在天线有效的工作范围(距离)内寻找MIFARE 1卡。q命令码:26H或52H。q卡收到该指令将回送卡类型号作为卡应答:TAGTYPE(2个字节)初始化设置BCNTS=7bitsBCNTR=2Byte开始选择REQUEST ALL或REQUEST STD发送REQUEST命令设置TOC=1ms读STACONDV=1?清零TOC判断是否出错?读TAG TY

6、PERET出错处理YNYNqWith 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 b

7、etween “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

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

9、X 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,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_EXITRQ

10、T_BE_ERR:;错误处理 MOV B,#01H SJMP RQT_EXITRQT_TE_ERR:MOV B,#02H SJMP RQT_EXITRQT_EXIT:RET Authentication 认证操作 qMCM中设有专用的密码存储器(KEY-RAM),用于存储3个密码集KEYSET0,KEYSET1,KEYSET2,每一个KEYSET又包含了各个扇区的KEY A 及KEY B。qAuthentication操作就是将KEY-RAM中的密码与卡中对应的密码进行三次相互认证。qAuthentication操作的卡应答以AE位给出;AE=1,密码出错,未能通过认证;AE=0,密码正确,通

11、过认证qAuthetication操作包括3个步骤 1)设置KEYSTACON寄存器,指定Authetication操作及KEYSET(0、1或2)2)设置KEYADDR寄存器,指定Authetication操作、KEYA或KEYB、待认证的扇区号 3)写“命令”(60H或61H)和写“地址”(扇区号015)到DATA寄存器,启动Authetication操作。READ/WRITE操作qREAD/WRITE均需整块操作。qREAD:发送命令码30H+块地址(063)接收指定块的数据(16B)通常用2次读并比较是否一致来校验是否正确读qWRITE:发送命令码A0H+块地址(063)接收ACK/N

12、AK应答来校验是否正确接收命令 发送块数据(16B)接收ACK/NAK应答来校验是否正确写入EEPROMValue Operate 值操作qMIFARE卡专门为公交/地铁等行业的定额收费系统设有值操作命令,包括INCREAMENT/DECREAMENT/TRANSFER/RESTOREq对某块进行值操作的前提是该块已被初始化为“值块”(Value Block)并且Access Bits允许值操作。Increment/Decrement/TransferqIncrement:adds the specified value to the memory valueqDecrement:subtra

13、cts the specified value 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 resg

14、ister.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,AMOV A,#0AH;SET TOC=1ms MOV R0,

15、#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_EXITDEC_CONTI:MOV R0

16、,#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 WRITE_NEXT:;开始写数据 MOV A,#32;SEND BCNTS=32bits(4B VALUE)MOV R0,#03H M

17、OVX 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 MOV A,#0AH;SET TOC=1ms MOV R0,#06H MOVX R0,ADEC_end:;DV=1?MOV R0,#01H MOVX A,R0 JNB ACC.7,DEC_end MOV A,#00H;清零TOC MOV R0,#06H MOVX R0,A

18、Judge_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 TRANSFER入口:块地址T_addr出口:ACK/NAKTRANS:NOP NOP MOV A,#10H;SEND BCNTS(1

19、6bits:命令码+块地址)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,AMOV A,#10H;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;清零TO

20、C 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 SJMP NEXT_TRANSNEXT_TRANS:MOV A,#95D;SET TOC=9ms MOV R0,#06H MOVX R0,AT_Toc_end:;DV=1?(EEPROM写入结束否?)MOV R

21、0,#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:;出错处理 MOV B,#09H AJMP T_EXITT_BIT_ERR:MOV B,#0BH AJMP T_EXITNEXT_ANSWER:;读入ACK/NAK MOV R0,#00H MOVX A,R0 ANL A,#0FH CJNE A,

22、#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 B,#04HT_EXIT:RET实训6 非接触式IC卡的读写控制 实训程序将读写器MCU片内RAM中的16个数据写入卡的一个数据块,然后将该数据块中的数据读出并存入读写器MCU的片内RAM中。MCU采用查询方式与MCM通信。实训程序说明:mode 选择密码集KEYSET0、1、

23、2及密码A、B sector_nr 认证扇区号(015)R_H_BUF 读入数据缓冲区首地址 R_E_BUF 读入数据暂存区首地址 W_H_BUF 写入数据区首地址 R_addr 被读取的块地址(063)W_addr 被写入的块地址(063)实训步骤q 用非接触式IC卡读写软件MWRF向MCM中下载密码,读出并记录MIFARE1卡的TAGTYPE、SN、SIZE,读出并记录卡中某数据块(如扇区1块0)的数据。q 用镊子取出非接触式IC卡开发板上的MCU芯片,将仿真头插入MCU的IC座。q 编译实训程序,设置断点。q 打开片内RAM及寄存器窗口,在写数据区(首地址为10H的16个单元)设置要写入

24、卡中的数据。q 天线范围内无卡时运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。q 将卡置入天线范围内,运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。实训程序: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

25、 05H;被写入的块地址(扇区1的块1)ORG 0000H AJMP MAIN ORG 0050HMAIN:MOV SP,#60H;重新设置堆栈 CLR EA;关闭所有中断 CLR P3.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.3 MOV R2,#01H;选择REQUEST ALL 指令 LCALL REQ

26、UEST;请求响应REQUEST SETB p3.4 ;断点断点,查看查看TAGTYPE(20H)()(21H)LCALL ANTICOLLISION ;防冲突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 S

27、ETB P3.4;断点断点,查看数据查看数据 NOP ;(40H)(4FH),(),(50H)(5FH)NOP LCALL HALT;停止 LJMP START SJMP$开始定义堆栈区选中MCM延时500ms软件复位数据缓冲区与数据暂存区数据是否一致?是否数据块尾?Y延时500ms选中MCMREQUEST ALLATNTICOLLISIONSELECTLOAD KEYAUTHENTICATION块地址送ADDR数据缓冲区首地址送R1数据长度16送R7READ读入数据块到数据缓冲区数据暂存区首地址送R1数据长度16送R7READ读入数据块到数据暂存区YACALL DISPLAYINC R1结束NNY开始定义堆栈区选中MCM延时500ms软件复位延时500ms选中MCMREQUEST ALLATNTICOLLISIONSELECTLOAD KEYAUTHENTICATION块地址送ADDRWRITE结束 若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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