MIFARE1卡读写控制.ppt_第1页
MIFARE1卡读写控制.ppt_第2页
MIFARE1卡读写控制.ppt_第3页
MIFARE1卡读写控制.ppt_第4页
MIFARE1卡读写控制.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IC卡公交收费机设计 三 MIFARE1卡读写软件设计 课程目标 非接触式IC卡读写控制MIFARE1卡读写控制功能的实现 项目开发 IC卡公交收费系统 系统需求分析 具备小额电子钱包功能 定额方式收费操作方便快捷工作距离 50cm具备显示余额 异常报警 非法卡或余额不足 可将当班收款额上传总站数据库公交公司可调整定额额度卡遗失可挂失抗干扰能力强 项目设计之三 软件实现 读写器与M1卡交换数据的过程 1 由读写器MCU 微控制器 发送指令给MCM 2 MCM执行指令并将其转换为射频信号发送给卡 3 卡接收到来自MCM的指令后 按指令完成其内部的各种处理 并回送应答信号 数据给MCM 4 MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU 读写器MCU读取MCM接收到的应答 数据 即可完成与M1卡的数据交换 MCM基本通信指令集 MCM内核特殊寄存器 MIFARE卡的读写操作步骤 激活MCMMCM软复位向MCM下载密码 LOADKEY 校验传输密码正确后可向MCM的KEY RAM写入用户自己设定的密码 以上操作与卡无关 请求应答 ANSWERTOREQUEST 寻卡防冲突 ANTICOLLISION 选择唯一一张卡选择标记 SELECT 激活所选择的卡认证 AUTHENTICATION 安全性读写操作 读 写 加值 减值 交换数据 READ WRITE INCREAMENT DECREMENT 停止 HALT 置卡为停止模式 防止重复操作 SOR LOADKEY 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接收到的应答或数据 AnswertoRequest 请求应答 指令 Request指令将通知MCM在天线有效的工作范围 距离 内寻找MIFARE1卡 命令码 26H或52H 卡收到该指令将回送卡类型号作为卡应答 TAGTYPE 2个字节 Witha requeststd 26H instructiononlycardswhicharenotsetintoa HALT mode willrespondtothisrequest oritmaybeexpandedtoallcardsinthefieldwitha requestall 52H option ThefirstoptionisneededtopreventtheMCMfromselectingonecardseveraltimes Differencebetween requeststd requestall Request NOPNOPMOVA 0CH 设置STACONMOVR0 01HMOVX R0 AMOVA 0EH 设置BAUDRATEMOVR0 05HMOVX R0 AMOVA 0C0H 设置ENABLEMOVR0 02HMOVX R0 AMOVA 0C6H 设置MODEMOVR0 07HMOVX R0 AMOVA 0CH 再次设置STACONMOVR0 01HMOVX R0 AMOVA 02H 设置RCODEMOVR0 0EHMOVX R0 A MOVA 07H 设置BCNTS 7bitsMOVR0 03HMOVX R0 AMOVA 10H 设置BCNTR 2BytesMOVR0 04HMOVX R0 AJUDGE COMMAND 选择REQSTD还是REQALLMOVA R2XRLA 01HJNZRQT STDRQT ALL MOVA 52HSJMPRQT NEXTRQT STD MOVA 26HRQT NEXT MOVR0 00H 发送命令码MOVX R0 ANOP MOVA 0AH 设置TOC 1msMOVR0 06HMOVX R0 ARQT STACON MOVR0 01H 读STACONMOVXA R0JNBACC 7 RQT STACON 判断DV 1 MOVR7 A 暂存STACONMOVA 00H 清零TOCMOVR0 06HMOVX R0 AMOVA R7 判断是否出错JBACC 6 RQT TE ERRJBACC 3 RQT BE ERRMOVR0 00H 读TAGTYPEMOVXA R0MOV20H AMOVR0 00HMOVXA R0MOV21H AMOVB 00H 设置OK标志SJMPRQT EXIT RQT BE ERR 错误处理MOVB 01HSJMPRQT EXITRQT TE ERR MOVB 02HSJMPRQT EXITRQT EXIT RET Authentication认证操作 MCM中设有专用的密码存储器 KEY RAM 用于存储3个密码集KEYSET0 KEYSET1 KEYSET2 每一个KEYSET又包含了各个扇区的KEYA及KEYB 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 和写 地址 扇区号0 15 到DATA寄存器 启动Authetication操作 READ WRITE操作 READ WRITE均需整块操作 READ 发送命令码30H 块地址 0 63 接收指定块的数据 16B 通常用2次读并比较是否一致来校验是否正确读WRITE 发送命令码A0H 块地址 0 63 接收ACK NAK应答来校验是否正确接收命令发送块数据 16B 接收ACK NAK应答来校验是否正确写入EEPROM ValueOperate值操作 MIFARE卡专门为公交 地铁等行业的定额收费系统设有值操作命令 包括INCREAMENT DECREAMENT TRANSFER RESTORE对某块进行值操作的前提是该块已被初始化为 值块 ValueBlock 并且AccessBits允许值操作 Increment Decrement Transfer Increment addsthespecifiedvaluetothememoryvalueDecrement subtractsthespecifiedvaluefromthememotyvalueTransfer EachIncrementorDecrementinstructionmanipulatingastandardvalueblockhastobefollowedbyaTransferintructionwhichactuallystoresthecalculatedresultinthecardmemory Untilthen theresultiskeptinaninternalvaluebufferresgister DECREMENT 入口 块地址addr 值value存放于D BUF出口 ACK NAKNOPNOPMOVA 10H SENDBCNTS 16bits 命令码 块地址 MOVR0 03HMOVX R0 AMOVA 04H SENDBCNTR 4bits ACK NAK MOVR0 04HMOVX R0 AMOVA 0C0H SENDCODEMOVR0 00HMOVX R0 AMOVA addr SENDBLOCKADDRMOVR0 00HMOVX R0 A MOVA 0AH SETTOC 1msMOVR0 06HMOVX R0 AD wait value 读STACON 判断DV 1 MOVR0 01HMOVXA R0JNBACC 7 D wait valueMOVR6 AMOVA 00H 清零TOCMOVR0 06HMOVX R0 AMOVA R6 出错判断JBACC 6 DEC TE ERRJBACC 3 DEC BE ERRAJMPDEC CONTIDEC TE ERR NOTAGERRMOVB 01HAJMPDEC EXITDEC BE ERR MOVB 02HAJMPDEC EXIT DEC CONTI MOVR0 00H 读入ACK NAK MOVXA R0ANLA 0BH 仅检查0 1 3位CJNEA 00H D N1MOVB 07H NOTAUTHERR 应答为00000000 SJMPDEC NEXTD N1 CJNEA 0AH D N2 收到ACK应答 00000101 表示可以DECSJMPDEC NEXTD N2 MOVB 03H 其他错误应答 00000011 CODEERAJMPWRITE EXIT WRITE NEXT 开始写数据MOVA 32 SENDBCNTS 32bits 4BVALUE MOVR0 03HMOVX R0 AMOVA 04H SENDBCNTR 4bits ACK NAK MOVR0 04HMOVX R0 AMOVR5 4 送4B值MOVR0 00HMOVR1 D BUFDEC VALUE MOVA R1MOVX R0 AINCR1DJNZR5 DEC VALUE MOVA 0AH SETTOC 1msMOVR0 06HMOVX R0 ADEC end DV 1 MOVR0 01HMOVXA R0JNBACC 7 DEC endMOVA 00H 清零TOCMOVR0 06HMOVX R0 AJudge answer MOVR0 01H 出错判断MOVXA R0JNBACC 6 DEC error TEMOVB 00HDEC ANSWER 读入ACK NAKMOVR0 00HMOVXA R0ANLA 0FHCJNEA 04H D ERR1 00000100为VALUEOVERFLOW MOVB 0FEHSJMPDEC EXITD ERR1 MOVB 0FFH 其他错误DEC EXIT RET TRANSFER入口 块地址T addr出口 ACK NAKTRANS NOPNOPMOVA 10H SENDBCNTS 16bits 命令码 块地址 MOVR0 03HMOVX R0 AMOVA 04H SENDBCNTR 4bits ACK NAK MOVR0 04HMOVX R0 AMOVA 0B0H SENDCODEMOVR0 00HMOVX R0 AMOVA T addr SENDBLOCKADDRMOVR0 00HMOVX R0 A MOVA 10H SETTOC 1 5msMOVR0 06HMOVX R0 AT end DV 1 MOVR0 01HMOVXA R0JNBACC 7 T endMOVA 00H 清零TOCMOVR0 06HMOVX R0 AJudge answer 出错判断MOVR0 01HMOVXA R0JBACC 3 T error BEJBACC 6 T error PEMOVB 00HAJMPNEXT TRANST error BE 出错处理MOVB 03HSJMPNEXT TRANST error PE MOVB 05HSJMPNEXT TRANS NEXT TRANS MOVA 95D SETTOC 9msMOVR0 06HMOVX R0 AT Toc end DV 1 EEPROM写入结束否 MOVR0 01HMOVXA R0JNBACC 7 T Toc endMOVR6 AMOVA 00H CLEARTOCMOVR0 06HMOVX R0 AMOVA R6 出错判断JBACC 6 T TAG ERRJBACC 3 T BIT ERRMOVB 00HSJMPNEXT ANSWERT TAG ERR 出错处理MOVB 09HAJMPT EXITT BIT ERR MOVB 0BHAJMPT EXIT NEXT ANSWER 读入ACK NAKMOVR0 00HMOVXA R0ANLA 0FHCJNEA 0AH T ERR1 00000101为ACK TRANSFEROK MOVB 00HSJMPT EXITT ERR1 CJNEA 04H T ERR2 00000100为NAK MOVB 02HSJMPT EXITT ERR2 CJNEA 05H WRITE EXIT 其他错误MOVB 04HT EXIT RET 实训6非接触式IC卡的读写控制 实训程序将读写器MCU片内RAM中的16个数据写入卡的一个数据块 然后将该数据块中的数据读出并存入读写器MCU的片内RAM中 MCU采用查询方式与MCM通信 实训程序说明 mode选择密码集KEYSET0 1 2及密码A Bsector nr认证扇区号 0 15 R H BUF读入数据缓冲区首地址R E BUF读入数据暂存区首地址W H BUF写入数据区首地址R addr被读取的块地址 0 63 W addr被写入的块地址 0 63 实训步骤 用非接触式IC卡读写软件MWRF向MCM中下载密码 读出并记录MIFARE1卡的TAGTYPE SN SIZE 读出并记录卡中某数据块 如扇区1块0 的数据 用镊子取出非接触式IC卡开发板上的MCU芯片 将仿真头插入MCU的IC座 编译实训程序 设置断点 打开片内RAM及寄存器窗口 在写数据区 首地址为10H的16个单元 设置要写入卡中的数据 天线范围内无卡时运行程序 记录程序停在断点处的相关数据 说明是否能正确读 写卡 如不能 根据现象定位故障点 将卡置入天线范围内 运行程序 记录程序停在断点处的相关数据 说明是否能正确读 写卡 如不能 根据现象定位故障点 实训程序 modeEQU00H 设置KEYSET KEYSET0 使用密码Asector nrEQU01

温馨提示

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

评论

0/150

提交评论