NFC CE运行模式使得携带NFC芯片的设备能充当智能卡(例如信用卡)使用。该运行模式所支持的应用场景极具吸引力,例如用支持该功能的Android智能手机来完成购票、支付,甚至充当门禁卡,汽车钥匙、公交卡等。
图8-19为CE运行模式示意图。
:-: ![](https://box.kancloud.cn/10ab118a52cb8572850cbb8b52372367_1228x674.jpg)
图8-19 CE运行模式
由图8-19可知,SE和NFC芯片(主要是指NFC Controller,简称NFCC)通过SWP(Single Wire Protocol)或S2C(SignalIn/SignalOut Connection Interface,也叫NFC Wired Interface,简称NFC-WI)来交互。一般来说,SE上面运行了一些特殊的应用程序,NFC负责将数据通过SWP或S2C传递给SE中的应用来处理。
NFCC通过HCI协议和NFC Mobile交互,而SE也可通过ISO 7816协议和NFC Mobile交互。
在CE模式中,NFC Mobile被NFC Reader识别成一个智能卡。NFC Reader通过相关规范发送数据或控制命令给NFC Mobile中的NFCC。
当NFCC收到数据或控制命令后,将交给相关的应用程序来处理。由于CE相关的应用场景针对支付、门禁等这类对安全性要求非常高的情况,以Android手机NFC支付为例,一个完整的支付应用程序包括一个为用户提供操作界面的APK以及一些运行在安全性有绝对保障的SE中的应用程序。
:-: ![](https://box.kancloud.cn/ded1bac8bd933ca35f22dcdf97a75e76_681x459.jpg)
图8-20 SE和NFC的组合方式
总之,SE在CE模式中扮演了非常重要的角色,目前SE和NFC的组合有三种方式,如图8-20所示。这三种组合方式从上到下分别如下。
* SE为一个嵌入式安全芯片,该芯片在手机出厂前就已经安装在其内部,而且无法被替换。该芯片上运行着一个小系统能够处理支付或安全方面的工作。目前,这种形式的SE还没有标准规范,可参考的模型有NXP公司的pn65芯片模块示意(如图8-21[17]所示)。
* SE为一个支付型SD卡,这种卡实际上是在SD卡上嵌入了安全模块,相关应用可在这种卡上运行。该种组合方式所对应的方案也称为NFC-SD方案,这方面的国际标准有ISO 7816。中国的银联曾经主推过NFC-SD卡支付解决方案。
* SE为UICC,也就是常说的手机SIM卡,这种组合方式对应的方案也称为NFC-SIM方案,目前由运营商主推。前面提到的北京市利用NFC手机充当一卡通所使用的方案就是NFC-SIM,它需要使用者先到移动运营商那换一个特殊的SIM卡。
图8-21中,NXP公司pn65 NFC芯片自身就包含一个Secure Element,即图中的SmartMX模块,该模块中运行着一个名为Java Card OS的操作系统。在Java Card OS上,用户可以安装和运行一些应用程序(称为Applets)。除了SmartMX内置的SE外,pn65也支持使用外部的SE,即图8-21中的UICC。
:-: ![](https://box.kancloud.cn/b021dd453f2d7a99eecafcfc2c6e249b_880x651.jpg)
图8-21 NXP pn65芯片模块
>[info] 提示 从参考资料[18]和[19]来看,目前国际上大多使用NFC-SIM方案,而中国的运营商和银联也将联合推广它,其对应的商品名叫“闪付”。
SE和NFC控制器连接所使用的S2C和SWP协议中,NFC-SIM方案将采用SWP,其对应的规范是ETSI TS 102613。NFC和UICC使用SWP的连接如图8-22所示。
:-: ![](https://box.kancloud.cn/18d86f9c5c6dd426accc19ebd7f97c23_904x510.jpg)
图8-22 CLF-UICC连线
CLF(NFC Contactless Front-End缩写)和UICC通过三条线相连。Gnd接地,Vcc提供电源。SWIO为CLF和UICC的数据连接线,数据传输率在212kbps~1.6Mbps之间,每次传输的数据包小于30字节。
注意,图中UICC的电源由CLF来提供,而非直接由手机电源来提供。这种设计方案使得手机在电池耗尽的情况下,也可通过外部电磁感应(由NFC Reader或其他NFC设备)来给CLF和UICC供电,从而确保支付请求不受手机本身的电源影响。
>[info] 提示 关于SWP的细节,读者可参考ETSI TS 102613。
NFC Forum没有和CE相关的规范,所以读者先了解本节所述的知识,后文在NFC CE示例中将进一步介绍与之相关的内容。
至此,NFC Device最后一种运行模式就介绍完毕,下面来介绍NFC理论知识的最后一部分,即NCI。
- 前言
- 第1章 准备工作
- 1.1 Android系统架构
- 1.2 工具使用
- 1.2.1 Source Insight的使用
- 1.2.2 Eclipse的使用
- 1.2.3 BusyBox的使用
- 1.3 本书资源下载说明
- 第2章 深入理解Netd
- 2.1 概述
- 2.2 Netd工作流程
- 2.2.1 main函数分析
- 2.2.2 NetlinkManager分析
- 2.2.3 CommandListener分析
- 2.2.4 DnsProxyListener分析
- 2.2.5 MDnsSdListener分析
- 2.3 CommandListener中的命令
- 2.3.1 iptables、tc和ip命令
- 2.3.2 CommandListener构造函数和测试工具ndc
- 2.3.3 InterfaceCmd命令
- 2.3.4 IpFwd和FirewallCmd命令
- 2.3.5 ListTtysCmd和PppdCmd命令
- 2.3.6 BandwidthControlCmd和IdletimerControlCmd命令
- 2.3.7 NatCmd命令
- 2.3.8 TetherCmd和SoftapCmd命令
- 2.3.9 ResolverCmd命令
- 2.4 NetworkManagementService介绍
- 2.4.1 create函数详解
- 2.4.2 systemReady函数详解
- 2.5 本章总结和参考资料说明
- 2.5.1 本章总结
- 2.5.2 参考资料说明
- 第3章 Wi-Fi基础知识
- 3.1 概述
- 3.2 无线电频谱和802.11协议的发展历程
- 3.2.1 无线电频谱知识
- 3.2.2 IEEE 802.11发展历程
- 3.3 802.11无线网络技术
- 3.3.1 OSI基本参考模型及相关基本概念
- 3.3.2 802.11知识点导读
- 3.3.3 802.11组件
- 3.3.4 802.11 Service介绍
- 3.3.5 802.11 MAC服务和帧
- 3.3.6 802.11 MAC管理实体
- 3.3.7 无线网络安全技术知识点
- 3.4 Linux Wi-Fi编程API介绍
- 3.4.1 Linux Wireless Extensions介绍
- 3.4.2 nl80211介绍
- 3.5 本章总结和参考资料说明
- 3.5.1 本章总结
- 3.5.2 参考资料说明
- 第4章 深入理解wpa_supplicant
- 4.1 概述
- 4.2 初识wpa_supplicant
- 4.2.1 wpa_supplicant架构
- 4.2.2 wpa_supplicant编译配置
- 4.2.3 wpa_supplicant命令和控制API
- 4.2.4 git的使用
- 4.3 wpa_supplicant初始化流程
- 4.3.1 main函数分析
- 4.3.2 wpa_supplicant_init函数分析
- 4.3.3 wpa_supplicant_add_iface函数分析
- 4.3.4 wpa_supplicant_init_iface函数分析
- 4.4 EAP和EAPOL模块
- 4.4.1 EAP模块分析
- 4.4.2 EAPOL模块分析
- 4.5 wpa_supplicant连接无线网络分析
- 4.5.1 ADD_NETWORK命令处理
- 4.5.2 SET_NETWORK命令处理
- 4.5.3 ENABLE_NETWORK命令处理
- 4.6 本章总结和参考资料说明
- 4.6.1 本章总结
- 4.6.2 参考资料说明
- 第5章 深入理解WifiService
- 5.1 概述
- 5.2 WifiService的创建及初始化
- 5.2.1 HSM和AsyncChannel介绍
- 5.2.2 WifiService构造函数分析
- 5.2.3 WifiStateMachine介绍
- 5.3 加入无线网络分析
- 5.3.1 Settings操作Wi-Fi分析
- 5.3.2 WifiService操作Wi-Fi分析
- 5.4 WifiWatchdogStateMachine介绍
- 5.5 Captive Portal Check介绍
- 5.6 本章总结和参考资料说明
- 5.6.1 本章总结
- 5.6.2 参考资料说明
- 第6章 深入理解Wi-Fi Simple Configuration
- 6.1 概述
- 6.2 WSC基础知识
- 6.2.1 WSC应用场景
- 6.2.2 WSC核心组件及接口
- 6.3 Registration Protocol详解
- 6.3.1 WSC IE和Attribute介绍
- 6.3.2 802.11管理帧WSC IE设置
- 6.3.3 EAP-WSC介绍
- 6.4 WSC代码分析
- 6.4.1 Settings中的WSC处理
- 6.4.2 WifiStateMachine的处理
- 6.4.3 wpa_supplicant中的WSC处理
- 6.4.4 EAP-WSC处理流程分析
- 6.5 本章总结和参考资料说明
- 6.5.1 本章总结
- 6.5.2 参考资料说明
- 第7章 深入理解Wi-Fi P2P
- 7.1 概述
- 7.2 P2P基础知识
- 7.2.1 P2P架构
- 7.2.2 P2P Discovery技术
- 7.2.3 P2P工作流程
- 7.3 WifiP2pSettings和WifiP2pService介绍
- 7.3.1 WifiP2pSettings工作流程
- 7.3.2 WifiP2pService工作流程
- 7.4 wpa_supplicant中的P2P
- 7.4.1 P2P模块初始化
- 7.4.2 P2P Device Discovery流程分析
- 7.4.3 Provision Discovery流程分析
- 7.4.4 GO Negotiation流程分析
- 7.5 本章总结和参考资料说明
- 7.5.1 本章总结
- 7.5.2 参考资料说明
- 第8章 深入理解NFC
- 8.1 概述
- 8.2 NFC基础知识
- 8.2.1 NFC概述
- 8.2.2 NFC R/W运行模式
- 8.2.3 NFC P2P运行模式
- 8.2.4 NFC CE运行模式
- 8.2.5 NCI原理
- 8.2.6 NFC相关规范
- 8.3 Android中的NFC
- 8.3.1 NFC应用示例
- 8.3.2 NFC系统模块
- 8.4 NFC HAL层讨论
- 8.5 本章总结和参考资料说明
- 8.5.1 本章总结
- 8.5.2 参考资料说明
- 第9章 深入理解GPS
- 9.1 概述
- 9.2 GPS基础知识
- 9.2.1 卫星导航基本原理
- 9.2.2 GPS系统组成及原理
- 9.2.3 OMA-SUPL协议
- 9.3 Android中的位置管理
- 9.3.1 LocationManager架构
- 9.3.2 LocationManager应用示例
- 9.3.3 LocationManager系统模块
- 9.4 本章总结和参考资料说明
- 9.4.1 本章总结
- 9.4.2 参考资料说明
- 附录