NFC入门介绍

news2024/11/24 4:39:06

缩写词

NFCNear Field Communication近场通信
OEMOriginal Equipment Manufacturer原始设备制造商
HWHardware硬件
OMAPIOpen Mobile Application Programming Interface开发移动应用程序编程接口
eSEEmbedded Secure Element嵌入式安全元件
SEMSSecure Element Management Service安全元件管理服务
NFCCNFC ControllerNFC控制器
TEETrusted Execution Environment可信执行环境

一、什么是NFC

近场通信(英语:Near-field communication,NFC),又称近距离无线通信近距离通信,是一套通信协议,让两个电子设备(其中一个通常是移动设备,例如智能手机)在相距几厘米之内进行通信。NFC,如同过去的电子票券智能卡一般,将允许移动支付取代或支持这类系统。NFC应用于社交网络,分享联系方式、照片、视频或文件。具备 NFC 功能的设备可以充当电子身份证和钥匙卡。NFC 提供了设置简便的低速连接,也可用于引导能力更强的无线连接。--维基百科

目前,NFC利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等多方面。

NFC有三种运行模式(operation mode),分别是

  1. Reader/Write模式(简称R/W,和NFC Tag/NFC Reader相关)

  2. Peer-to-Peer模式(简称P2P,它支持两个NFC设备交互)

  3. NFC Card Emulation Mode(简称CE,它能把携带NFC功能的设备模拟成Smart Card,这样就能实现诸如手机支付、门禁卡之类的功能)。

二、NFC模式介绍

1.Reader/Write模式

  • NFC Reader角色。位于其内部的NFC芯片包含NFC Controller(NFC控制器,它可和Device Host或Secure 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。

参数

Type 1

Type 2

Type 3

Type 4

对应规范

ISO 14443 Type A

ISO 14443 Type A

Felica

ISO 14443 Type A,Type B

常见芯片名

Topaz

MIFARE

Felica

MIFARE-DESFire

存储容量

最大1KB

最大2KB

最大1MB

最大64KB

读写速率

106kbps

106kbps

212kbps

106-424kbps

价格

中等/高

安全性

数字签名保护

不安全

数字签名保护

可选

说明

Topaz由Innovision公司推出

MIFARE由NXP公司推出

由Sony公司推出,价格比较贵

这类芯片在出厂时就被配置好是否只读或可读写

根据NFC Forum的定义,R/W模式下,NFC设备之间每一次交互的数据都会封装在一个NDEF Message中,而一个NDEF Message可以包含多个NFC Record,真正的数据则封装在NFC Record中。

一个NDEF Message可包含一个或多个NFC Record。

2.P2P模式

NFC所基于的无线射频技术实际上可以支持NFC Device之间互相传递数据。为了满足NFC Device之间双向交互的需求,NFC Forum定义了P2P(Peer-to-Peer)运行模式。

Snep协议基于LLCP协议,该协议使得两个NFC Device之间能直接交换NDEF消息。

 

LLCP协议提供了面向连接和无连接两种数据传输方式,SNEP使用了LLCP提供的面向链接的数据传输服务。

假设Device A和Device B打开了NFC功能。当二者进入有效距离后,它们的LLC模块将进入Link Activation(链路激活)阶段:

  • 进入Link Activation时,Device A和Device B将分别扮演Initiator和Target角色,参考资料[13]可用于确定谁来扮演Initiator或Target。

  • Initiator发送PAX数据包给Target。PAX全称为Parameter Exchange,它用于在两个设备间交换彼此的LLC层配置信息(如协议版本等,详情见下文)。

  • Target收到Initiator的PAX包后需要相应处理,例如判断协议版本是否匹配等。Target处理完后,它需要发送自己的LLC层配置信息给Initiator。

  • Initiator检查Target的LLC层配置参数,如果一切正常,双方Logical Link成功建立,随后可进入正常工作阶段。

双方需要通过PAX交换LLC层的配置信息。PAX属于LLCP数据包的一种。

 

Link被激活后,Device A和Device B将先建立面向链接的关系,然后再开展数据交互。

 

当LLCP建立完成后,基于LLCP的SNEP就可以正常进行工作。SNEP的工作流程非常简单,主要包括两个步骤:

  1. SNEP客户端发送SENP Request消息给服务端进行处理。

  2. SNEP服务端回复SNEP Response消息给客户端以告知处理结果。

3.CE模式

NFC CE mode有两种实现:

  • 虚拟卡模拟 : 基于硬件,这种模式下,需要提供SE单元, nfc芯片作为通信的前端模块, 将收到的操作命令, 转发到SE, 由SE负责处理。

  • 主机卡模拟 : 基于软件,这种模式下,由运行在主机上的应用来充当SE。

虚拟卡模拟依赖SE单元, 安全单元为NFC设备上专用的微处理芯片。该芯片可以与NFC控制器集成在一起。另外也可以集成在NFC设备中的其它智能卡/安全设备中, 目前常见的SE单元的形式有

  • nfc 芯片内部集成的SE单元, 例如 NXP 的 PN65N

  • Secure SD 卡, 实际上是在SD卡内部嵌入了一个安全模块, 相关的应用可以在其上运行, 相关的国际标准为 ISO 7816, 该方案被称为NFC-SD

  • UICC, 即手机的SIM卡充当SE,该方案被称为NFC-SIM

在CE模式中,NFC Mobile被NFC Reader识别成一个智能卡。NFC Reader通过相关规范发送数据或控制命令给NFC Mobile中的NFCC。 当NFCC收到数据或控制命令后,将交给相关的应用程序来处理。由于CE相关的应用场景针对支付、门禁等这类对安全性要求非常高的情况,以Android手机NFC支付为例,一个完整的支付应用程序包括一个为用户提供操作界面的APK以及一些运行在安全性有绝对保障的SE中的应用程序。

三、AOSP NFC

1.AOSP NFC架构

下图是AOSP的NFC架构图,分为Applications、Framework、Native/Linux、HW四层

 

以钱包APP举例,包含可见可操作的NFC apps,钥匙管理的KeyMaster App、操控eSE的applet,这三个部分共同组成钱包APP。

与之相对应的,是向NFC apps提供能力的NFC API,提供钥匙管理能力的Keystore Framework,向applet提供能力的OMAPI Framework。

Framework通过JNI层与底层的Lib和HAL通信,Lib集成了各个功能的实际实现,而HAL则是将不同硬件的驱动进行抽象,形成统一的接口提供给Lib使用。

最底层的HW则是与对端通信的硬件。

下图是AOSP NFC的库分布

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5月22日比特币披萨日,今天你吃披萨了吗?

比特币披萨日 1. Laszlo Hanyecz2. 最贵披萨诞生记3. 梭哈买披萨4. 未完待续 2010年5月22日,美国佛罗里达州的程序员Laszlo Hanyecz(拉兹洛哈涅克斯)用10000个比特币购买了棒约翰(Papa Johns)比萨店一个价值25美元的奶…

Three.js--》实现3d水晶小熊模型搭建

目录 项目搭建 初始化three.js基础代码 加载背景纹理 加载小熊模型 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来,话不多说直接开始。 项目搭建 本案例还是借助框架书写…

vTESTstudio概述

vTESTstudio支持的测试用例编写方式 项目层级结构 从用例编写到测试执行及生成报告的整个流程 vTESTsutido 开发,CANoe执行测试 界面简介 CANoe 创建的测试用例用Test Modules执行,vTESTstudio 创建的测试用例用Test Units执行 先在vTESTstudio里创建pr…

Quard Bayer(COMS SENSOR)

手机越做越紧凑需要模组和芯片尺寸越做越小,在尺寸一定的基础上,高像素和大像素,对于手机摄像头来说,一直是一对矛盾的存在。然而,高像素所带来的高分辨率画质,和大像素带给暗态高感度低噪声的画质&#xf…

Idea使用详解

01.idea简介 (1)idea介绍 IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、…

鸿蒙Hi3861学习十七-Huawei LiteOS-M(MQTT)

一、简介 有关MQTT的相关概念介绍,请看之前的文章,这里不做过多的介绍:MQTT学习总结_t_guest的博客-CSDN博客 本章节需要使用如下软件: Mosquitto(MQTT消息代理工具) Eclipsse paho MQTT工具 二、操作说明…

十款优质企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)

Java微服务开源项目 前言一、pig二、zheng三、SpringBlade四、SOP五、matecloud六、mall七、jeecg-boot八、Cloud-Platform九、microservices-platform十、RuoYi-Cloud 前言 这篇文章为大家推荐几款优质的 Java 开源项目框架,可以用于学习,毕业设计&…

【腾讯云FinOps Crane 集训营】 Crane入门

前言 随着云计算的快速发展和云原生应用的兴起,容器技术成为了现代化应用部署和管理的重要工具。 越来越多的公司正在选择将应用运行在云上或者自建的 Kubernetes 集群上,但是许多机构的调研 发现,绝大多数的用户集群资源利用率并不高&…

STM8 使用74HC164外扩IO

背景 在嵌入式开发过程中,经常使用时、甚至设计时候,考虑成本等因素,需要外扩IO。这里就是使用STM8S003F3P6,这个芯片比较常用的,这个芯片封装很小,只有20个管脚的MCU,实际产品上用的非常多。 …

二进制部署高可用k8s集群

第一章、前置知识点 1.1 生产环境部署K8S集群的两种方式 kubeadm Kubeadm是一个K8S部署工具,提供kubeadm init 和 kubeadm join,用于快速部署Kubernetes集群。 二进制包 从GitHub下载发行版的二进制包,手动部署每个组件,组成…

Idea部署Tomcat项目位置问题

Tomcat部署路径问题 1 默认情况 Tomcat安装目录下有webapps,是部署项目的,项目就运行在那里。 但是IDEA会为每个项目都拷贝一份足够的Tomcat文件放在c盘 ${user.home}/.IntelliJIdea/system/tomcat 或者 ${user.home/AppData/Local/JetBrains/IntelliJIdea2021.1/tomcat这样做…

【MySQL新手到通关】第二章 MySQL卸载安装

文章目录 1. MySQL的卸载1.1 停止MySQL服务1.2 软件的卸载 2. MySQL的下载、安装、配置2.1 软件的下载2.2 MySQL8.0 版本的安装2.3 配置MySQL8.02.4 配置MySQL8.0 环境变量2.5 MySQL5.7 版本的安装、配置2.6 安装失败问题 3. MySQL 登录3.1 服务的启动与停止3.2 自带客户端的登…

提高效率与代码重用:使用React Native和小程序容器简化开发

React Native是一个强大的前端跨端框架,可以帮助开发者高效地构建移动应用程序,并充分利用跨平台开发的优势,同时提供接近原生应用程序的性能和用户体验。它具有许多技术上的优势: 跨平台开发:使用React Native&#x…

AIGC持续火爆大模型争相推出,庞大市场造就算力供应模式演变

本图由AI生成 文/王吉伟 近期的AIGC领域仍旧火爆异常。 但火的不只是AIGC应用,还有巨头之间的AI竞赛,以及接连不断上新的AI大模型(LLM,Large Language Model)。 面对ChatGPT带来的技术冲击,为了研发谷歌多…

Spring事务失效常见的五种方式及其解决方案【源码篇】

一、前言 在Web 开发中,Spring 框架已经成为了众多开发者的首选。Spring 的声明式事务管理是其中最重要的特性之一,它可以帮助我们简化业务逻辑的复杂度,并且确保在出现异常情况时数据的一致性。 事务失效情况很常见,但我们只要…

对计算机方向科研工作者的建议 - 易智编译EaseEditing

如果你正在进行计算机科学研究,以下是一些建议可以帮助你: 确定研究兴趣: 选择一个你感兴趣的研究领域或问题,并确保你对该领域有足够的知识基础和热情。 深入学习: 通过阅读学术论文、参加研讨会和课程,…

有意思的CVE-2022-0337复现

前言 前两天在刷tw,看到了个比较有意思的一个CVE漏洞,价值奖励是10000美🔪,比较好奇的是价值10000美🔪的漏洞是什么样子的[苦涩],漏洞利用就是需要在浏览器中进行用户交互才能触发该漏洞,但由于…

vr船舶装配模拟驾驶平台直观形象呈现操作流程和原理

船舶由成千上万种零件构成,需要众多的工业部门共同合作才能够完成这一庞大工程。除特有的船体建造技术外,造船还涉及到机械、电气、冶金、建筑、化学以至工艺美术等各个领域,因此船舶建造是一项劳动密集型、技术密集型和资金密集型的产业。 船…

【OpenAI】DALL·E 2,让我来带你认识一下这位来自AI界的艺术家

个人主页:【😊个人主页】 文章目录 前言什么是DALL-E 2 ?介绍的怎么厉害,它又能干啥呢?基本功能新功能编辑变体功能 总结 前言 DALL-E 2 是一种基于语言的人工智能图像生成器,可以根据文本提示创建高质量的…

【学习日记2023.5.22】 之 套餐模块完善

4. 功能模块完善之套餐模块 4.1 新增套餐 4.1.1 需求分析与设计 产品原型 后台系统中可以管理套餐信息,通过 新增功能来添加一个新的套餐,在添加套餐时需要添加套餐对应菜品的信息,并且需要上传套餐图片。 新增套餐原型: 当填…