NFC开发相关

NFC概述

NFC(Near Field Communication,近场通信)也叫做近距离无线通信技术。该技术最早由Philips和Sony两家公司于2002年年末联合推出。2004年,Nokia、Philips、Sony等公司还共同组建了一个名为NFC Forum的非盈利性组织来推广和发展NFC技术。
从原理上说,NFC和Wi-Fi类似,二者都利用无线射频技术来实现设备之间的通信。不过,和Wi-Fi相比,NFC的工作频率为13.56MHz,有效距离为4cm左右,目前所支持的数据传输速率有106kbps、
212kbps和424kbps三种。

NFC发展过程

通过图8-1所示的NFC技术演化历程可知,NFC融合了三条主要的技术发展路线

RFID技术路线(左图)

无线射频识别技术。该技术路线发源于条形码(Barcodes),然后发展出了RFID,最终出现了NFC中的两个重要组件NFC Tag(标签)和NFC Reader。NFC Tag的作用和Barcodes类似,它是一种用于存储数据的被动式(Passive)RFID Tag,其最重要的特征就是NFC Tag自身不包含电源组件,所以它工作时必须依靠其他设备(比如NFC Reader)通过电磁感应的方式向其输送电能。和NFC Tag相对应的组件是NFC Reader,它首先通过电磁感应向NFC Tag输送电能使其工作,然后根据相关的无线射频通信协议来存取NFC Tag上的数据。

磁条卡(Magnetic Strip Cards)技术路线 (右图)

该路线最终演化了NFC使用的Proximity Coupling Smart Card技术(有效距离为10cm,对应的规范为ISO/IEC14443。注意,图中的Close Coupling Smart Card的有效距离为1cm,对应的规范为
ISO/IEC 10536。Vicinity Coupling Smart Card的有效距离为1m,对应的规范为ISO/IEC 15693)。粗略来看Smart Card和RFID Tag类似,例如二者都只存储一些数据,而且自身都没有电源组件,但Smart Card在安全性上的要求远比RFID Tag严格。另外,Smart Card上还能运行一些小的嵌入式系统(如Java Card OS)或者应用程序(Applets)以完成更为复杂的工作。

移动终端线路(中间)

演化了携带NFC功能的终端设备(图中间)。随着移动终端越来越智能,NFC和这些设备也融合得更加紧密,使得NFC的应用场景得到了较大的拓展。智能手机可通过NFC来和AP交换安全配置信息。
一个与之类似的例子是NFC Connection Handover技术,它描述了两台智能终端如何通过NFC相关协议来选择合适的数据传输方式(例如Bluetooth或Wi-Fi,受限于传输速率以及有效距离,NFC本身不适合大数据量传输)。

NFC的工作模式

NFC支持如下3种工作模式:仿真卡模式(Card Emulation Mode),点对点模式(P2P mode),读卡器模式(Reader/writer mode)。

Application之下的三个箭头描述了三种运行模式所使用的协议栈。这部分内容将留待下文分析。

读卡器模式 (R/W)

数据在NFC芯片中,可以简单理解成“刷标签”。本质上就是通过支持NFC的手机或其它电子设备从带有NFC芯片的标签、贴纸、名片等媒介中读写信息。通常NFC标签是不需要外部供电的。当支持NFC的外设向NFC读写数据时,它会发送某种磁场,而这个磁场会自动的向NFC标签供电。
以支持NFC功能的智能终端为例,NFC R/W运行模式所包含的组件如图所示:

图中展示了一个包含NFC芯片的智能终端与NFC Tag交互所涉及的组件。

  • 左边的智能终端扮演NFC Reader角色。位于其内部的NFC芯片包含NFC Controller(NFC控制器,它可与Device HostSecure Element安全单元交互)、Antenna(天线)和Contactless Front-End(CLF,非接触式前端,负责射频信号的调制解调等工作)三个部分。
  • 在R/W模式中,交互操作的发起方只能是NFC Reader,因此它也称为Initiator或Active Device。
  • 右边的NFC Tag,由于需要NFC Reader通过电磁感应为其提供电能,所以在R/W模式中,NFC Tag只能作为交互操作的Target(也称为Passive Device)。
    NFC Forum定义了四种类型的Tag,分别为Type 1、Type 2、Type 3和Type 4。这四种类型NFC Tag的区别在于存储空间大小、数据传输率以及底层使用的协议。下表列举了它们的不同点。

注意 这里需要特别指出的是:虽然NFC Froum只有四种类型的Tag,但由于NFC本身源自RFID技术,二者在一些底层协议上也相互兼容,所以很多RFID Tag也能被NFC Reader识别和操作。

NFC Forum定义了两个通用的数据结构用于NFC Device之间(包括R/W模式中的NFC Reader和NFC Tag)传递数据。这两个通用数据结构分别是NFC Data Exchange Format(NDEF)以及NFC Record。具体可参考NDEF及NFC Record

仿真卡模式(CE)

数据在支持NFC的手机或其它电子设备中,可以简单理解成“刷手机”。本质上就是将支持NFC的手机或其它电子设备当成借记卡、公交卡、门禁卡等IC卡使用。基本原理是将相应IC卡中的信息凭证封装成数据包存储在支持NFC的外设中 。
在使用时还需要一个NFC射频器(相当于刷卡器)。将手机靠近NFC射频器,手机就会接收到NFC射频器发过来的信号,在通过一系列复杂的验证后,将IC卡的相应信息传入NFC射频器,最后这些IC卡数据会传入NFC射频器连接的电脑,并进行相应的处理(如电子转帐、开门等操作)。

点对点模式

该模式与蓝牙、红外差不多,用于不同NFC设备之间进行数据交换,不过这个模式已经没有有“刷”的感觉了。其有效距离一般不能超过4厘米,但传输建立速度要比红外和蓝牙技术快很多,传输速度比红外块得多,如过双方都使用Android4.2,NFC会直接利用蓝牙传输。这种技术被称为Android Beam。所以使用Android Beam传输数据的两部设备不再限于4厘米之内。
点对点模式的典型应用是两部支持NFC的手机或平板电脑实现数据的点对点传输,例如,交换图片或同步设备联系人。因此,通过NFC,多个设备如数字相机,计算机,手机之间,都可以快速连接,并交换资料或者服务。

NFC相关规范

NFC使用的是无线射频技术。在RF层,与之相关的规范是ISO 18092(NFC Interface and Protocol I,简称NFCIP-1,该规范定义了NFC RF层的工作流程)和ISO14443 Type A、Type B,以及FeliCa。ISO 14443全称为非接触式IC卡标准,它从RF层面定义了如何与不同的非接触式IC卡(其实物可以是NFC Tag、RFID Tag、Smart Cards)交互。ISO 14443定义了Type A和Type B两种非接触式IC卡。除了ISO等标准组织制定的规范外,NFC Forum也制定了一系列的标准和规范

由图所示的NFC Forum规范框架可知,NFC Forum本身只定义了P2P模式和R/W模式相关的规范,规范的细节将留待下文详细介绍。CE模式比较复杂,下文也会讨论和它相关的一些知识。

在RF层,NFC Forum定义了三个主要规范。

  • Analog Specifications:该规范描述了NFC设备RF层的电气特性。
  • Digital Protocal Specification:该规范在ISO 18092、ISO 14443及JIS X6319-4之上定义了NFC设备之间的数字通信协议,它使得基于不同底层协议例如Type A或TypeF的NFC设备之间或者NFC设备与其他使用ISO 18092等规范的设备之间能够交互。
  • NFC Activities Specification:该规范为各运行模式对应的协议栈提供支持,例如P2P模式下两个NFC设备如何建立链接,R/W模式下NFC Device如何操作NFC Tag。
    另外,除了上图所示的规范外,NFC还制定了一个NCI(NFC Controller Interface)规范,该规范制定了一套交互接口,使得主机设备(Device Host,以手机为例,NFC芯片被集成到某个手机中,那么手机就是Device Host)能够使用这套接口来和NFC芯片交互。

Android对NFC的支持

不同的NFC标签之间差异很大,有的只支持简单的读写操作,有时还会采用支持一次性写入的芯片,将NFC标签设计成只读的。当然,也存在一些复杂的NFC标签,例如,有一些NFC标签可以通过硬件加密的方式限制对某一区域的访问。还有一些标签自带操作环境,允许NFC设备与这些标签进行更复杂的交互。这些标签中的数据也会采用不同的格式。但Android SDK API主要支持NFC论坛标准(Forum Standard),这种标准被称为NDEF(NFC Data Exchange Format,NFC数据交换格式)。

NDEF数据的操作

Android SDK API支持如下3种NDEF数据的操作:
1)从NFC标签读取NDEF格式的数据。
2)向NFC标签写入NDEF格式的数据。
3)通过Android Beam技术将NDEF数据发送到另一部NFC设备。

用于描述NDEF格式数据的两个类:

1)NdefMessage:描述NDEF格式的信息,实际上我们写入NFC标签的就是NdefMessage对象。
2)NdefRecord:描述NDEF信息的一个信息段,一个NdefMessage可能包含一个或者多个NdefRecord。

NdefMessage和NdefRecord是Android NFC技术的核心类,无论读写NDEF格式的NFC标签,还是通过Android Beam技术传递Ndef格式的数据,都需要这两个类。

非NDEF数据的操作

对于某些特殊需求,可能要存任意的数据,对于这些数据,我们就需要自定义格式。这些数据格式实际上就是普通的字节流,至于字节流中的数据代表什么,就由开发人员自己定义了。

高通 NFC开发基础知识 (未完待续)(目前是主要择录,参考 邓凡平:深入理解Android:WiFi模块 NFC和GPS卷)相关推荐

  1. 高通 NFC开发基础知识 之 “NDEF及NFC Record”

    NDEF及NFC Record 1. NDEF和NFC Record之间的关系 根据NFC Forum的定义,R/W模式下,NFC设备之间每一次交互的数据都会封装在一个NDEF Message中,而一 ...

  2. 高通子系统subsystem基础知识

    翻译了高通相关文档部分内容,结合sm4350平台项目做的总结: 1,基本概念 Subsystem The system on chip (SoC) consists of a main APSS pr ...

  3. 深度学习(三)theano学习笔记(2)基础函数-未完待续

    theano学习笔记(2)基础函数 1.随机函数库的调用 2.卷积神经网络 [python] view plaincopy #-*-coding:utf-8-*- import theano impo ...

  4. 嵌入式Linux驱动开发笔记(未完待续。。。)

    零.嵌入式Linux驱动编程思想 1.面向对象(把一个事件抽象成一个结构体) 2.分层 3.分离 一.Git仓库用法 1.linu终端输入下面命令安装 git clone https://e.codi ...

  5. 系统开发小结【未完待续】

    最近在搞OA类的开发,主要开发了两个模块,一个是值班管理模块,另一个类似于文件管理的模块.像这两个模块中的一些主要功能是我们进行开发中常要开发的功能.OA系统也算是MIS系统,是MIS发展的初级阶段, ...

  6. 火箭发射理论(基础篇-未完待续)//2021-1-27

    前言: 嗯,这个就没有那么多为什么了,浩瀚星海,对于人类而言,这是探索宇宙的第一步吧,所以对于我这种只有几十年生命周期的普通生物而言,这不言而喻.正如康德所言:有两种东西,我对它们的思考越是深沉和持久 ...

  7. 移动端前端开发注意点(未完待续)

    1.meta name=viewport 标签的使用 2.流体布局的实现 3.CSS3 @media 媒体查询的使用 4.横屏竖屏判断和事件触发 window.orientation和window.o ...

  8. jQuery基础(未完待续)

    1.       jQuery核心函数 jQuery也可写$,通常情况下$可能会与其他框架中的对象冲突(php有$的用法),所以如果所用的框架没有$的用法,jQuery可用$代替 (1)$(docum ...

  9. 脚本基础(未完待续)

    脚本执行 1.赋予权限,chmod 755 hello.sh  ./hello.sh 2.通过bash执行脚本,bash hello.sh bash快捷键 dos2unix 文件名  windows文 ...

最新文章

  1. Datawhale第九期组队学习计划
  2. 【编程4】插入排序+快速排序+LeetCode.148(排序链表)
  3. WIN7系统激活后无法正常启动
  4. jdk 安装_Jdk 安装使用教程
  5. java事件绑定,Java编程GUI中的事件绑定代码示例
  6. python对比柱状图_python 绘制分组对比柱状图
  7. matlab自带python_在matlab中直接在python中使用sklearn
  8. Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式、rpm方式和yum方式)...
  9. ACL2021 | 探讨跨句事件联合抽取问题
  10. QTP10.0的下载安装及所遇问题
  11. 软件需求说明书(GB856T——88)
  12. python HtmlTestRunner python2.x python3.x报告优化模板源码下载
  13. 静态代理和动态代理详解
  14. 课室用的电子黑板|一体手写屏哪家做的好?
  15. windows消息机制
  16. iOS 15:如何查找丢失或失窃的 iPhone,就算它已关机也可远程定位
  17. log日志中输出log所在类,方法和行数
  18. 【牛客练习赛13】 A B C D【康拓展开】 E【DP or 记忆化搜索】 F 【思维】
  19. 刘涛代言的美丽田园冲刺港股:年内盈利2亿 突击分红1.2亿
  20. IE窗口关闭事件(转)

热门文章

  1. date-fns一个现代JavaScript日期工具库的使用
  2. Windows——鼠标无法进行拖拽的解决方法
  3. oracle nextval mysql_mysql中实现类似oracle中的nextval函数
  4. gateway网关请求服务的400错误
  5. Mac系统创建/home目录提示Read-Only filesystem的完美解决方案
  6. 使用PowerDesigner15创建MySQL数据库表结构设计
  7. 天猫发布双11预售必买清单 让你过一个暖暖的冬天
  8. Biological Psychiatry:人脑转录组成像的最佳实践
  9. Plone学习-PloneBook中文版
  10. 【微信小程序入门到精通】— window 导航栏配置