NFC无线近场通讯技术

news/2024/10/28 10:15:34/

NFC技术

1 简介

1.1技术背景

无线近场通讯技术(Near Field Communication,NFC),最早是Sony和Philip这两家公司共同开发的一种非接触式识别和互联技术,现在已经发展为国际性的非盈利组织 NFC Forum。该组织相当于蓝牙技术联盟(Bluetooth SIG)和WIFI联盟负责相关技术的规范制定和认证。

1.2技术原理

NFC利用无线射频技术实现设备之间的通信,工作频率为13.56MHz,有效距离为4cm左右,目前支持的数据传输速率有106Kbps、212Kbps和424Kbps这三种。

1.3技术应用

NFC提供了一种简单的、非接触式的解决方案,在移动设备、消费电子产品和智能设备间让使用者简单直观的交换信息、访问内容和服务。当前NFC技术整合了非接触式读卡器、非接触式智能卡和点对点(Peer-to-Peer)通信功能,为消费者创造了一个全新便利的生活方式

2 工作模式

NFC工作模式可以分为主动模式、被动模式与双向模式这三种。

2.1主动模式(读卡器模式)

NFC设备作为非接触读卡器使用,主动发出自己的射频场去识别具有NFC标签的设备,或者向NFC标签设备读写数据。应用领域包括广告读取、车票读取、电影海报读取、电影门票销售等。作为读卡器的NFC设备需要供电使用。

2.2被动模式(仿真卡模式)

具有NFC功能的设备模拟成一张NFC标签或非接触卡,只能在其他设备发出的射频场中被动响应。利用供电主设备产生的射频场转换成电能为自己供电接受主设备的数据并利用负载调制技术将自己的数据传回主设备。应用领域包括支持NFC功能的手机作为门禁卡、银行卡、公交卡等。

2.3双向模式(点对点模式)

具备NFC功能的设备间都主动发出射频场来建立点对点的连接进行数据交换。应用领域包括两个具备NFC功能的手机建立连接传输文件等。

3 数据结构

NDEF:NFC Data Exchange Format,NFC数据交换格式,NFC Forum约定的NFC Tag中的数据格式。一个NDEF message包含多个Record记录,真正的数据则都是封装在Record中的,NDEF与Record之间的关系及数据结构如图所示:
NDEF message:
在这里插入图片描述
Record:
在这里插入图片描述

4 NFC技术在Android中的应用

Android2.3.1(API Level = 9)才开始支持NFC技术,但Android2.x和Android3.x对NFC的支持还是非常有限的,而从Android4.0(API Level = 14)开始,Google向NFC发力才使得NFC技术在Android中得到了更进一步的支持。尤其是Android4.1,可以利用NFC技术传递较大的数据(NFC Handover也就是Android Beam技术)。Android9已经全面支持NFC的三种工作模式,从而以下分析也都是基于Android9。

5 NFC在安卓系统中的架构

NFC系统架构图:
在这里插入图片描述

以下章节会依次说明NFC架构图中各个模块的启动及作用。

5.1 NFC Framework

Android对外提供NFC功能的API,API主要方法都在android.nfc
package中,android.nfc.tech package补充了非NDEF数据格式的标签类型的连接及数据交互接口。相关Application直接通过NfcAdapter.getDefaultAdapter(Context)就可获取到NFC的适配器,应用apk的所有对NFC的操作都需要通过
NfcAdapter来工作。
NFC framework initialize:
在这里插入图片描述

5.2 NFC Service

NFC service服务是由NFC apk提供的,源码路径为:packages\apps\Nfc…,编译后会生成
NfcNci.apk 和 libnfc_nci_jni.so (下一节介绍)。

NfcNci.apk的AndroidManifest.xml中设置了安卓开机自启动属性:persistent=“true”,所以我们直接从NfcApplication.java开启NFC服务进程的讲解。下图为简单的NFC Service启动时序图。
apk initialize:
在这里插入图片描述

5.3 NFC JNI

源码路径:packages\apps\Nfc\nci\jni,编译生成 libnfc_nci_jni.so。由于编译JNI的so库包含有NFC Stack的so库,所以能直接在JNI中调用NFC协议栈中的相关方法。
在这里插入图片描述
加载JNI so库是在初始化NFC Service中的NativeNfcManager.java时,通过下面的调用加载进com.android.nfc所属进程中运行的。
在这里插入图片描述

5.4 NFC Stack

NFC协议栈的初始化主要是创建了NFC_TASK的线程,协议栈和底层Controller的消息交互主要是通过该线程转运的。
NFC Stack initialize:
在这里插入图片描述

5.5 NFC HAL Server

HAL(硬件抽象层)是Google为了保护硬件厂商的利益而在Android架构中加入了HAL的概念,使得上层不需关心硬件实现的具体细节,只需传入抽象层所需参数,就可以达到控制硬件的目的。

前面一小节初始化的NFC协议栈通过HIDL技术获取到了NFC HAL Server端的对象。HAL Server中通过HAL技术打开NFC
Controller提供的so库,从而可以操作NFC硬件。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述


http://www.ppmy.cn/news/737105.html

相关文章

计算机网络自顶向下方法(第六版)第一章复习题中文答案

计算机网络自顶向下方法(第六版)第一章复习题中文答案 R1R2R3R4R5R6R7R8R9R10R11R12R13R14R15R16R17(时延?未访问配套web网站这题答案存疑)R18R19R20R21(同样未访问配套网站)R22R23R24R25R26R27…

若干物联网无线技术 - NB-IOT、LoRa、433、GPRS、2.4G、PKE近场通信,基础理论与开发点滴总结

在项目实践学习中记录的点滴笔记,整理成章,希望能给大家提供工作与学习思路。 往期文章 1、无线通信项目开发 - NB-IOT、LoRa、433、GPRS、2.4G、PKE近场通信,基础理论与开发点滴总结 2、蓝牙无线技术(BLE)与开发点滴总结 3、Zigbee无线技…

无线攻击笔记

第11章 无线攻击 任务50:无线渗透.exe 802.11只涵盖了下面黄字部分的2层,802.2定义了LLC层 802.11 下面的协议组,F是正式标准,大写,abcde小写是在之前标准之上进行修正,修正版。 网络速度一般都谈论bit …

为什么TCP在高时延和丢包的网络中传输效率差?

说明:有同学私信问到,为什么TCP在高时延和丢包的网络中传输效率差? Google可以搜到很多的信息,这里转译了部分IBM Aspera fasp技术白皮书的第一章节内容,作为参考。 在这个数字世界中,数字数据的快速和可靠移动&#…

超低延迟实时流媒体传输技术

正文字数:5401 阅读时长:8分钟 现在云游戏,云应用越来越火,所以超低延迟实时流媒体传输技术的需求应用场景会越来越多。腾讯专家工程师刘泓昊老师在LiveVideoStackCon 2020北京站的演讲中,对超低延迟传输技术从传输协…

彻底搞清楚 Google BBR 拥塞控制算法原理

译者序 本文翻译自 Google 2017 的论文: Cardwell N, Cheng Y, Gunn CS, Yeganeh SH, Jacobson V.BBR: congestion-based congestion control[1]. Communications of the ACM. 2017 Jan 23;60(2):58-66. 论文副标题:MeasuringBottleneckBandwidth andRou…

企业级无线渗透与无线数据浅析

0x00 企业级无线渗透 注: 这篇文章里我详细说一下针对企业802.1X的安全解析,还有一些针对数据协议的分析方法和浅析关于个人渗透太多太啰嗦我就不写了,有机会在说。 因为我不想一部分一部分的写,所以索性就把三个内容写在了一起&a…

Android利用WifiDirect实现文件传输功能

最近需要实现一个使用手机WiFi传输文件的功能,最后是使用WiFiDirect实现了这个功能。 什么是WiFiDirect? 下面是WiFi官方给出的解释: Wi-Fi CERTIFIED Wi-Fi Direct是一种认证标志,表示设备间支持Wi-Fi直接互联,帮助…