RFID相关通讯协议有很多种,我们这里要讲的是ISO/IEC14443A。

ISO/IEC14443A读卡流程我们可以从两个角度进行分析,一个是读卡器(PCD),另一个是卡片(PICC)

上述是卡片状态变化图(参考《射频卡协议ISO14443》)

POWER OFF : 卡片缺少载波能量,简单的说卡片没有进入到天线发射的范围内。

在有足够多能量后,卡片就会进入到IDLE状态。

IDLE : 卡片处于空闲状态,可以识别从PCD而来的REQA以及WAKEUP指令。

在接收到REQA或者WAKEUP指令后,卡片就进入到READY State。
READY:卡片处于就绪状态,就可以读取对应的UID了,但如果此时有多张卡片同时在射频场中,就可能发生冲突。这里采用的防冲突算法是基于位冲突检测协议,简单的说就是看冲突发生在哪一位,在从下位开始继续获取UID,直至获取完整的UID,可以通过下面的一个实例进行分析。
事先得到1卡片 EF 30 E2 84 2卡片 EF DB 8E 6F ,可以发现在第2字节第0bit两个卡片的UID开始不同,那么碰撞必然会发生,看看是不是这样。

这里我们用的就是4个字节uid的卡片,所以SEL = 0x93,在第一次发送防冲突时,NVB = 0x20 ,总共就2个有效字节(SEL+NVB),因为我们并不知道UID 。

                   SEL   NVB发送报文        93       20     收到报文       EF   读RC663寄存器,得到发生冲突的位置第2个字节 第0bit。

那么既然找到冲突位置了,那么我们就重新发送防冲突报文 SEL还是0x93,NVB 中完整字节数:(SEL+NVB+第一字节UID(EF)),NVB中的bit数(发送冲突位置在第2字节第0bit,所以有效位数是1(希望收到的是碰撞bit后的uid))
报文

                           SEL  NVB   UID0   UID1
发送报文:          93     31      EF       00收到报文             30     E2        84      B9    收到4个字节 ,最后一个字节是完整UID的BCC校验

发送这个报文之后,2卡片因为收到的报文与自身UID不匹配,不会回复,所以得到的回复就只有一个,那就是1卡片后半部的UID,然后与前半部的UID合并起来就是完整的UID即(EF 30 E2 84 )。

    如果读卡器里有多张卡,可能会有多次冲突,但是方法和上述步骤一样,直到收到完整的UID为止。

ACTIVE: 读取到完整UID后,发送SELECT指令就能进入到激活状态,在这个状态下,才能进行M1的操作,查看一下SELECT的实例:

                            SEL  NVB   UID0   UID1  UID2  UID3 BCC
发送报文:          93     70      EF       30       E2      84      B9    收到报文              28

实际上就跟获取卡号的报文是一样的,只是此时已经知道完整的UID,就把完整的UID添加到发送报文,就是SELECT。

通过HALT指令,可以让卡片从ACTIVE状态转化到HALT状态。HALT指令的实例:

发送报文: 0x50 0x00如果定时器超时了说明HALT成功了。

HALT: 不会响应除了WAKEUP以外的指令,(这样就可以读下一张卡的卡号)。

这样其实也就能知道读卡器大概是怎么个流程,直接上图:

概括一下就是,打开射频场-----发送REQA/WAKEUP,使得所有卡片进入READY状态------获取UID(防冲突)-------获取到一个完整的UID----------发送SELECT,使这张卡片进入ACTIVE状态-------------发送Halt指令,使这张卡片进入HALT状态,就不会响应除了WAKEUP外的其他指令----------发送REQA,使其他的所有卡片重新进入READY状态(HALT的卡片不会),如果没有卡片响应就结束了,否则继续获取UID,这里就是循环操作了,直至所有卡片的卡号都读取出来

自己测试了一下,最多可以同时支持9张卡,多余的卡片就感应不到了。

ISO14443A读卡流程(作为示例参考)相关推荐

  1. 低频RFID读卡流程

    低频RFID系统与ID卡 低频RFID系统读卡器的工作频率范围一般从120KHz到134KHz.该频段的波长大约为2500m,除了金属材料影响外,一般低频能够穿过任意材料的物品而不降低它的读取距离.低 ...

  2. 银联IC卡读卡流程详解--读卡器与卡交互指令

    最近因研究了下银联借记/贷记应用卡片规范,发现网上可参考资源较少,于是萌生了写下这篇文字的想法,希望可以帮助到有需要的兄弟姐妹,有描述不清晰或者有错误的地方欢迎指正. 下面进入正题,测试使用的卡是招商 ...

  3. pboc 读卡流程,apdu读卡流程

    应用选择,第一步选择一个应用,1PAY.SYS.DDF0,应用的文件名字为1PAY.SYS.DDF01,apdu命令分析,应用选择的apdu 00A404000E//04代表通过名称进行选择ic卡的应 ...

  4. VB6银联读卡之旅(二)__55域获取流程及相关注意

    银行卡读卡涉及相关APDU命令发送.网上有很多相关博客进行了详细说明,这里就不在赘述.本文主要讲55域获取流程及本人联调时遇到的相关问题.在智能卡读取使用方面本人也属于初学者,其中如有疑问或表述不正确 ...

  5. Android nfc读卡模式流程

    最近一个项目需要将Android的nfc接口底层通过串口对接到外围一个单片机上,而nfc设备是接在单片机上的,这就需要对Android的nfc框架进行梳理,确定与单片机对接的接口通讯:上网查找发现资料 ...

  6. 68 iso14443读卡入门记录

    1.前言 最近项目涉及射频读卡,我负责读卡程序移植以及基于APDU自定义数据收发接口实现.由于第一次参与读卡项目涉及读卡相关协议内容,因此特此学习记录. 2.读卡分析 基于ISO14443协议读卡流程 ...

  7. 新中新二代身份证读卡Syn_ReadBaseMsg方法

    新中新二代身份证读卡器dkq-a16d,在C#中读卡开发时,参考随机附带的C#参考代码,能够读取成功,但读几次程序就莫名其妙的关掉了,有时连错误都捕捉不到,搞了很长时间也没搞定,后来以为会不会是win ...

  8. 用计算机过去机读卡,阅卷机读卡机答题卡使用流程

    0603SJX阅卷机读卡机答题卡使用流程 云微阅卷机光标阅读机简介 光标阅读机,是用光学扫描的方法来识别按***格式印刷或书写的标记,并将其转换为计算机能接受的电信号的设备.作为一种新的计算机外设,它 ...

  9. 用c语言做RFID读卡程序,2.STM32读卡号读写数据代码示例3.0(C语言)

    文件名大小更新时间 2.STM32读卡号读写数据代码示例3.0(C语言)\HFRFID.uvgui.WEIZAI736912016-07-15 2.STM32读卡号读写数据代码示例3.0(C语言)\H ...

  10. 非接触式射频读卡器 M1读卡,支持USB,ISO14443A/B,可读二代证ID

    1.概述 LDM-A3非接读卡器(后续简称LDM-A3)是一款符合低功耗.免驱的符合全速USB2.0的HID兼容协议的自主知识产权的非接读卡设备.提供Windows下的通信动态库,可供PC编程人员二次 ...

最新文章

  1. java的23设计模式
  2. excel常用公式整理
  3. ActiveMQ中的温度,存储和内存使用百分比
  4. 利用BBRSACryptor实现iOS端的RSA加解密
  5. 工作流实战_06_flowable 流程定义的删除
  6. python 轮廓矩阵_python – 在3D numpy矩阵中绘制给定值的曲面轮廓
  7. Python基本操作(四) 循环与判断
  8. 有什么手机python编辑器_好用的Python编辑器有哪些?
  9. 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
  10. 20155330 第十一周课堂练习(20170503)
  11. 招投标相关法律及条例
  12. 熊猫烧香病毒作者再被捕 开网络赌场敛财
  13. bigemap功能介绍
  14. php 芝麻认证think_PHP调用芝麻信用接口API获取芝麻信用分数
  15. 如何完整保存离线网页
  16. 王爽老师汇编第三版课程设计 一
  17. 配置eclipes中java、javascript的自动代码提示
  18. 秒懂设计模式之责任链模式(Chain Of Responsibility Pattern)
  19. 【cs224n学习作业】Assignment 1 - Exploring Word Vectors【附代码】
  20. 技术支持售前人员岗位技能与职责

热门文章

  1. 史上最全最简洁的网络传输协议介绍
  2. SM2算法全套(基于GMSSL)
  3. web全栈前端学习路线-20个真实web开发项目集合
  4. Visio画图删去四周白边
  5. ADS使用Smith圆图进行阻抗匹配
  6. Spring Cloud 常用注解
  7. echarts 地图添加纹理图片
  8. c语言校招笔试试题,腾讯2014校园招聘C语言笔试题
  9. 幼儿园编程机器人课程介绍
  10. Ubuntu解决火狐浏览器无法同步书签的问题