致终将火爆的NFC——ISO14443 TypeA
毫无疑问,当NFC终端越来越普及,逐渐成为智能手机标配功能后,我们终将迎来NFC的火爆。国内NFC应用最为广泛的将是TypeA,如Mifare、NFC Tag、移动支付等,所以接下来将主要研究TypeA相关的协议细节。
ISO14443分为4部分,硬件主要了解前两部分,软件和应用开发则需要了解后两部分ISO14443-3和ISO14443-4。
ISO14443-1定义了IC卡的物理特性。
ISO14443-2定义了频率、射频能量、编码等内容。
ISO14443-3定义了TypeA/TypeB的初始化和防冲突机制。其中Mifare 1就只到这一层。
ISO14443-4定义了卡片的数据传输协议。
第1部分关于物理特性,内容很少,过一下即可。
第2部分定义了NFC的频率为13.56MHz±7KHz,定义了最大和最小的能量场的范围值,以及TypeA、TypeB的调制方式。见下图,
对比可以看见TypeA的PCD采用了100%的调制方式,而TypeB则采用了10%的调制方式,TypeA能量传送并不均匀,而TypeB采用的10%ASK方式对于射频卡来说可以获得更稳定的能量供给。
再看一下TypeA对信号的要求。
他通过一个2-3us的通信间隙来传递数据,这也意味着PICC在这个时间间隙中无法得到PCD的能量,只能靠卡片内部电容放电来维持内部逻辑电路的工作。
1、PCD to PICC即读卡器到卡,TypeA的PCD采用改进的米勒(Modified Miller)编码,通信速率为106Kbps(13.56MHz/128),码元周期为9.4us,调制深度为100%,ASK方式。
首先有以下序列定义:
X序列 |
从码元的中心位置开始调制2-3us |
Y序列 |
整个码元周期内不进行调制 |
Z序列 |
在码元始起处调制载波2-3us |
然后根据上述序列,进行以下编码:
开始位 |
序列Z |
结束位 |
逻辑0后接着一个序列Y |
逻辑0 |
若前一个码远是X序列则输出Y序列,否则输出Z序列 |
逻辑1 |
序列X |
无信息 |
至少2个Y序列 |
PCD to PICC sample (0x26)
2、PICC to PCD即射频卡到读卡器,TypeA的PICC采用曼切斯特(Manchester)编码,通信速率也为106Kbps,调制深度为10%,ASK方式。射频卡到读卡器的信号并非由基带信号直接调制载波信号,而是由848KHz的副载波信号对载波信号进行调制。编码定义如下:
起始位 |
在码元的前半周期,用副载波对载波进行调制 |
结束位 |
在整个码元周期内不使用副载波调制 |
逻辑0 |
在码元的后半周期,使用副载波对载波进行调制 |
逻辑1 |
在码元的前半制期,用副载波对载波进行调制 |
PICC to PCD sample (0x0400)
TypeA使用了半双工通信,通过电磁场传递能量及数据。PCD和PICC通过数据帧交换数据。帧理解为数据流,TypeA分为标准帧和短帧。
短帧用于通信初始化,只具有开始位、7位数据位、结束位。数据部分LSB先发送。
标准帧用于普通的数据交换,每帧包括开始位、字节数据、校验位……结束位。而每字节数据则包含了8位数据,校验位。数据部分LSB先发送。
应用中可能有当多张卡同时放置于PCD上,这时会产生冲突问题。在TypeA中设计了防冲突机制来解决,A卡使用了比特碰撞检测,速度较快。
首先PCD发送REQA(26h),接着放置于PCD能量场中的所有PICC将同步发出ATQA应答,接着,双方进入防冲突循环,PCD利用ANTICOLLISION和SELECT命令进行防冲突循环。
根据上一文章的TypeA PICC编码知道,逻辑1是在码元的前半周期进行调制,而逻辑0是在码元的后半周期进行调制。
如有多张卡片其ID并不相同,则会在某一位产生冲突,具体现象是某一位的前后周期都被调制。而PCD将识别出这个冲突位置,根据这个值设定NVB,然后进行SELECT,如果这个NVB条件下仍有多张卡,将再次产生冲突,此时进行上述循环,直到不再冲突,然后选择出最后的卡。
如下图,可看到Start位之后出现了连续的调制,而正常数据应该只有前半周期或后半周期调制,所以PCD此时可判断出来比特位冲突。
下图是ISO14443中的冲突、选卡实例:
PICC分为IDLE、READY、ACTIVE、HALT几个状态。当PICC靠近PCD并从PCD能量场中获得能量后即进入IDLE状态,此时卡片可以通过REQA和WUPA命令进入READY状态;READY状态的卡片接受PCD的防冲突选卡,一旦选卡成功,卡片进入ACTIVE状态;ACTIVE状态可进行ISO14443-4的操作;在ACTIVE状态下,PCD发HLTA命令可让卡片进入HALT状态,此时需要重新WUPA后才能重新选卡。
有了HALT命令,当几个PICC放置在PCD之上时,可以在用户不移动卡片的条件下,由PCD轮流选择卡片使用。
致终将火爆的NFC——ISO14443 TypeA的更多相关文章
- NFC协议学习分享
很多同学在学习NFC协议的时候,觉得NFC的规范从底层到上层的应有尽有,有点无处下手的感觉.这里就和大家分享下我曾经学习NFC规范的经验.如果有不对的地方,也请各位同学批评指正.NFC Forum中有 ...
- RFID-RC522、FM1702SL、M1卡初探
catalogue . 引言 . RC522芯片(读卡器)简介 . FM1702SL芯片(读卡器)简介 . RFID M1卡简介 . 读取ID/序列号(arduino uno.MFRC522芯片 Ba ...
- Windows游戏编程之从零开始d
Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来 ...
- 射频识别技术漫谈(28)——基于MF1射频卡的酒店门锁设计
电子门锁是现代星级酒店管理电子化.智能化的重要电子设备.相较于传统的机械锁,基于RFID技术的电子门锁使用方便,易于管理,安全性高,可实现对开锁用户的分优先级自动管理,对房间入住信息实现自动统计与报表 ...
- PBOC第八部分和第十一部分关于TYPEA总结(一)——初始化和防冲突(ISO14443-3)
PBOC第八部分和第十一部分关于TYPEA总结(一) ——初始化和防冲突(ISO14443-3) 第八部分 与应用无关的非接触式规范 ISO14443(1~4) 第十一部分 非接触式IC卡通讯规范 在 ...
- PBOC第八部分和第十一部分关于TYPEA总结(二)——传输协议(ISO14443-4)
二.传输协议(ISO14443-4)(8,P50 11,P30) 1.选择应答请求(RATS) 使用RATS命令和PICC协商通讯的最大帧长度(FSD和FSC).帧等待时间(FWT)和启动帧保护时间( ...
- NFC简介
NFC简介 NFC是Near Field Communication缩写,即近距离无线通讯技术.由飞利浦和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备.消费类电子产品.PC 和 ...
- 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理
1 概述 在上一篇文章<物联网常见通信协议与通讯协议梳理[上]-通讯协议>中,对物联网常用通信协议和通讯协议作了区分,并对通讯协议进行了分享:本文将对常用的通信协议进行剖析,重点面向市场 ...
- atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结 1. nfc(近距离无线通讯技术) 1 2. 工作模式 1 3. NFC 蓝牙 红外具体对比如下表: 2 4. TypeA ...
随机推荐
- windows环境下搭建Cocos2d-X开发环境
最近终于有时间可心搞搞自己的东西了,呵呵,那就开始做个手机小游戏给孩子玩吧. 首先必须选定开发的框架,移动终端开源的游戏框架貌似不多,找来找去也就这个了,名字简单Cocos2d-X,是Cocos2d国 ...
- HtmlAttribute HTML属性处理类
HtmlAttribute 在HtmlAgilityPack扮演的是一个HTML代码属性的容器,同时提供了用于处理HTML属性的一些功能. 一.属性 int Line { get; } 获取文档中的此 ...
- 多个ORACLE HOME的情况,默认的ORACLE HOME是哪个,以及如何更改HOME
如果系统里安装了多个ORACLE产品,那么在注册表里,有可能也会有多个ORACLE HOME,在不设置系统环境变量的情况下,默认情况使用哪个ORACLE HOME? HKEY_LOCAL_MACHIN ...
- Implement Stack using Queues 解答
Question Implement the following operations of a stack using queues. push(x) -- Push element x onto ...
- CDH 1、CDH简介
1.Apache Hadoop 不足之处 • 版本管理混乱 • 部署过程繁琐.升级过程复杂 • 兼容性差 • 安全性低 2.Hadoop 发行版 • Apache Hadoop • Cloudera’ ...
- SVN:冲突解决 合并别人的修改
在项目中,基本不可避免多个人同时参与一个项目,因此就可能会出现多个人同时修改一个文件的情况,就不可避免的会出现冲突.svn已经很聪明了,如 果你和别人对于同一个文件的修改之间不存在重叠(比如你在文件最 ...
- UGUI Scrollbar控件
如题就是Scrollbar控件,它简单可以看成 Scrollbar 和 Image组件组成 它基本上不单独使用多数是制作滚动视图.我们来看看他独特的属性,重复的属性就不在介绍了! 属性讲解: Hand ...
- C#.Net前台线程与后台线程的区别
本文来自:http://www.cnblogs.com/zfanlong1314/archive/2012/02/26/2390455.html .Net的公用语言运行时(Common Languag ...
- SSH框架-Caused by: org.hibernate.MappingException: column attribute may not be used together with <column> subelement
昨晚修改了一些表关系,在相关的hbm.xml文件中做了改动,今天早上起来启动tomcat后,发现项目启动不了,控制台报错: 2015-6-14 9:09:42 org.apache.catalina. ...
- 深入浅出:重温JAVA中接口与抽象的区别
抽象类:声明一个抽象类,就是在类的声明开头.在Class关键字的前面使用关键字abstract 下面定义一个抽象类,代码如下: abstract class A{ abstract void call ...