MIFARE1卡读写控制.ppt

上传人:sh****n 文档编号:6756063 上传时间:2020-03-03 格式:PPT 页数:35 大小:287.50KB
返回 下载 相关 举报
MIFARE1卡读写控制.ppt_第1页
第1页 / 共35页
MIFARE1卡读写控制.ppt_第2页
第2页 / 共35页
MIFARE1卡读写控制.ppt_第3页
第3页 / 共35页
点击查看更多>>
资源描述
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 nrEQU01H 设置认证扇区为扇区1R H BUFEQU40H 读入数据缓冲区R E BUFEQU50H 读入数据暂存区W H BUFEQU10H 写入数据区R addrEQU04H 被读取的块地址 扇区1的块0 W addrEQu05H 被写入的块地址 扇区1的块1 ORG0000HAJMPMAINORG0050HMAIN MOVSP 60H 重新设置堆栈CLREA 关闭所有中断CLRP3 4SETBP3 3 关闭MCM200NOPNOPCLRP3 3 激活MCM200NOPLCALLD500MSSTART NOPNOPMOVA 80H SOR软件复位MOVR0 01HMOVX R0 ANOPNOPLCALLD500MSCLRP3 3 再次激活MCM200CLRP3 3 MOVR2 01H 选择REQUESTALL指令LCALLREQUEST 请求响应REQUESTSETBp3 4 断点 查看TAGTYPE 20H 21H LCALLANTICOLLISION 防冲突ANTICOLLISIONSETBP3 4 断点 查看SN 30H 34H LCALLSELECT 选择卡片SELECTSETBP3 4 断点 查看SIZE 22H LCALLLOAD KEY 下载密码SETBP3 4LCALLAUTH 密码认证AUTHENTICATIONSETBP3 4LCALLWRITE 写数据WRITESETBP3 4LCALLREAD 读数据READSETBP3 4 断点 查看数据 NOP 40H 4FH 50H 5FH NOPLCALLHALT 停止LJMPSTARTSJMP
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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