NFC协议学习分享

来源:互联网 发布:花屋小三郎 知乎 编辑:程序博客网 时间:2024/05/16 10:23

转载:http://www.nfcchina.org/forum.php?mod=viewthread&tid=1443


很多同学在学习NFC协议的时候,觉得NFC的规范从底层到上层的应有尽有,有点无处下手的感觉。这里就和大家分享下我曾经学习NFC规范的经验。如果有不对的地方,也请各位同学批评指正。NFC Forum中有一个所有规范的列表,可以看到目前绝大部分的规范都已经正式发布了,当然了虽然是正式发布了,但是NFC FORUM还在不停的bug fix。表里面并没有列出NFC FORUM的一些新项目,如NCI NGWireless charging等。

在对NFC的某一个规范进行学习之前,首先要对NFC规范的整体架构有一个大致的了解,这样的话,才能从整体上进行把握。这里引用了NFC FORUM中一个公开文档中的三个架构图。NFC有三种工作模式,读卡器(R/W,卡模拟(CE)和点对点(P2P),那么这三种模式也对应着不同的协议架构,这个其实与蓝牙中的profile很类似,即针对不同的应用,有不同的协议组合。

读卡器模式或读写模式:file:///C:/DOCUME~1/QWJ/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.gif

Analogue,也就是NFC物理层的协议,主要定义了NFC设备的射频特性,如射频场的波形、强度等。

Digital Protocol,数字协议。实际上这里就可以把它理解成NFCMAC层协议,它定义了三种NFC技术,NFC-A/B/F,分别对应着ISO14443 TYPEA TYPEB以及Felica的规范,其中包括了初始化、冲突检测等。同时它也定义了传输协议,如NFC-DEPISO-DEP等。这个数字协议实际上就是ISO/IEC14443, ISO18092的一个合体。这里要说明一下,在这个架构图中其实还有一个Activity的规范,它可以说是Digital的一个补充。Digital中定义了帧格式,编码等通信的功能,但是如何使用Digital中的定义的帧来完成通信,则是在Activity规范中定义的。Activity中定义了一大堆的流程图及状态转移图,用来描述Digital规范中的内容是如何工作的,这样看来其实Acitivity规范也应该就是Digital中的一部分。

以上这三个协议是NFC通信的基础,在NFC的三种模式下,都要使用这三个底层的协议。可以说这三个协议是整个NFC通信的基础,掌握了这三个协议可以说对于NFC的理解就成了一半。当然这也是NFC中阅读起来最难的三个协议,当然了如果你对ISO14443/18092有了解的话,理解起来就比价轻松了,毕竟这些底层协议与非接触卡规范是一脉相承的。

TYPE1-4 TAG OPERATION: 定义了如何从TYPE1/2/3/4中读写NDEF消息。这里TYPE1/2对应着ISO14443TYPEA,而TYPE3对应着SONYFelicaTYPE4是一个开放的TAG标准,即ISO14443 TYPEA TYPEBISO 7816-4

NDEF REFERENCE APPLICATON:是NFC ForumRAF工作组定义的一些应用规范,这些应用规范并不是强制性的,主要是提供一些参考,但实际上很多厂家都会使用RAF提供的参考规范来开发应用,比如说连接切换(Connection handover)用于NFC为蓝牙或WIFI进行连接的建立。

Third Party NDEF Application:是由第三方开发的基于NDEF消息的应用。NON-NDEF Application:如果不是基于NDEF的应用,实际上就是直接调用Digital协议进行应用数据的封装,即将应用数据直接映射到Digital中定义的帧格式中。

对点模式:

Analogue/Digital/Activity上面已经介绍过了。

LLCP:既然是P2P连接,那么必然就牵涉到逻辑链路的管理,所以需要一个LLCP层,用于链路的创建、拆除、维护等功能,同时还提供面向连接和无连接的服务等。

Simple NDEF Exchange protocolSNEP):在P2P模式下定义了如何进行NDEF消息的交互。SNEP的通信模式就是请求/相应模式,及initatorTarget发送SNEPrequestTargetInitiator回应SNEP Response消息。SNEP的请求和响应消息中包含了NDEF格式的数据。这里对NDEF做一个简单的说明,其实NDEF应该是做上层应用的开发人员直接面对的,如在ANDROID中,基于Framework中的NFC API很多都是与NDEF格式相关的。NDEF其实就是NFC Forum中定义的一种标准的消息格式,不仅用在了P2P中,也用在了读卡器模式中。NDEF是由RECORD(RTD,记录)组成的,真正的用户数据就是存放在RTD中的。NFC FORUM定义了不同的RTD规范,如TEXT, URISignature等等。注意一点,在这P2P的图和R/W的图中,并没有显示的描述NDEF规范。

Protocol Bindings,这里NFC FORUM提了两个规范一个是OBEX的映射,另一个是IP协议的映射,是将这些协议能够映射到LLCP协商中。但是在NFC FORUM中,最终取消这两个协议,是因为这两个协议并没有起到任何作用。这些都会在以后给大家介绍。file:///C:/DOCUME~1/QWJ/LOCALS~1/Temp/msohtmlclip1/01/clip_image004.gif

卡模拟模式:

从协议架构上来说,这个架构确实是这样的,貌似是比较简单的,但是个人感觉卡模拟模式还是蛮复杂的,因为随着SE(安全单元,之前也称为NFCEE)NCI规范的引入,不仅SE可以模拟成卡、DH(主机)NFCC(NFC控制器)也都可以模拟成卡。这在以后的介绍中也也会向大家说明。file:///C:/DOCUME~1/QWJ/LOCALS~1/Temp/msohtmlclip1/01/clip_image006.gif

介绍完基本的NFC协议框架后,这里简单的提一下NCI规范,全称NFC Controller interface,主要的作用是将DHDevice host,主机,在手机中可以看做是手机的AP)和NFCC(可以看做手机中的NFC芯片,如PN544)之间的消息标准化,让我们的手机CPU不用对每一个厂家的NFC芯片都做适配,只要CPUNFC芯片都遵守NCI规范就可以了,当然了NFC芯片的驱动还是要适配的,呵呵。了解蓝牙的同学应该很容易理解,这就是蓝牙规范中的HCI接口,它们的设计理念是一致的。据说,Google正在为Android开发NCI

好了,今天就介绍到这吧,以后我会对每一个协议做详细的描述。欢迎同学们批评指正,共同进步。

继上次写了分享1后,本来计划每个月写一篇协议分析的,但是总是被或这或那的事情左右,去年8月份又和出版社签约写了一本NFC技术原理与应用的书籍,白天上班晚上写书,前几天总算交稿了。这春节前各种工作总结,又是一大堆的琐事,总算今天得个空,赶紧来写一篇分享2吧。
今天的主题就来说说和NFC相关的标准吧。很多同学在学习NFC的时候,一看各种标准就有点傻眼了,有ISO的,有ECMA的,还有NFC Forum的,乱七八糟的,这些标准之间到底是什么关系尼,今天我就大概做个总结。如有不对的地方,也请大家批评指正。
我们常见与NFC相关的标准有(关于测试、安全相关的标准没有列举):
ISO/IEC
ISO14443 ISO18092ISO15693ISO21481ISO7816
ETSI
ETSI TS 102 613ETSI TS 102622
ECMA
ECMA340ECMA352
NFC Forum
Analog/Digital/Activity等等
ECMAEuropean ComputerManufacturers Association)实际上是欧洲最牛x的标准组织,在NFC领域,有ECMA340ECMA352ECMA385等。其中ECMA340称为Near Field Communication - Interface and Protocol (NFCIP-1),而ECMA352称为Near FieldCommunication Interface and Protocol -2 (NFCIP-2)
ISO/IEC是国际标准组织,制定了如ISO14443 ISO18092ISO15693ISO21481ISO7816等标准。ISO18092全称为Near FieldCommunication - Interface and Protocol (NFCIP-1)ISO21481全称为Near FieldCommunication Interface and Protocol -2 (NFCIP-2)

说到这里大家很奇怪,ECMAISO的这几个标准怎么名字都一样啊,是同一个东东吗?如果是一样的,为什么要两套体系呢?这就要和ECMAISO之间的关系说起。

ECMA是一个地域性的标准组织,影响力没有ISO这种国际标准组织的影响力大。但是ECMA很牛(欧洲人在标准领域要比老美牛多了,毕竟底蕴在那里摆着呢),所以ECMAISO之间是有一种称为“快速投票”的机制,允许ECMA的标准能够快速的被ISO/IEC接受并成为ISO/IEC的国际标准。ECMA340ISO接受后成为了ISO18092,而ECMA352ISO接受后成为了ISO21481

NFC Forum其实是一个行业标准,它必须要遵守国际标准,所以它的Digital/Activity实际上就是将ISO14443ISO18092以及日本的JIS X6319-4Felica)糅合在一起来支持三种技术(NFC-A/B/F)的读写模式、卡模拟模式以及点对点模式。更通俗的理解为,ISO14443为读写模式/卡模拟模式,而ISO18092为点对点模式,NFC Forum把它们合在一起,因此就有了Analog/Digital/Activity,能够同时支持读写模式、卡模拟模式和点对点通信模式。这里提一下,ISO15693也快被加入到Digital中了。
这些东西,其实大家仔细琢磨琢磨Digital规范第2节中的那张表,就明白了。
昨天在QQ群里,有同学问为什么NFC芯片中提到了ISO7816规范,7816不是接触式卡的规范么?刚好借这个机会也可以说下ISO7816。ISO7816是接触式智能卡的规范,不仅包括了接触式卡的物理特性、信号、传输协议的定义外,它还定义了一套与应用相关的规范即ISO7816-4/5/6。ISO7816-4包括文件系统和安全功能。文件系统实际上定义了文件的存储方式以及访问文件的一系列方法,即APDU指令。ISO7816-4实际上是一个与传输介质无关的应用层协议。在非接触智能卡(即ISO14443规范定义的智能卡)普及之前,接触式智能卡可以说是已经占据了绝大部分市场,而且接触式智能卡的应用也非常成熟,因此非接触智能卡并沿用了ISO7816-4规范的内容。这也是为什么我们可以看到ISO14443并没有应用相关的规范。
至于ETSI102 613ETSI TS 102 622SWPHCI描述的是NFC芯片和安全单元之间的接口。在移动支付中,这两个协议比较重要,银行运营商的都会对其有相关的测试要求,这也是卡商比较关注的。
今天就先唠叨到这吧,下次和大家交流Digital/Activity



0 0
原创粉丝点击