什么是NFC?

NFC: Near Field Communication

NFC或近场通信是一种协议,当两个设备紧挨着对方时,可以帮助它们进行无线通信--例如,智能手机或智能手表可以用于支付或登机牌。

NFC硬件正在被纳入越来越多的设备中--特别是智能手机,但也包括一些笔记本电脑。NFC可能是支付、安全钥匙和登机牌的未来。NFC也是对笨重的QR码的升级。许多新的手机都有硬件来做今天这里的所有事情,然而,许多拥有NFC装备的智能手机的人还没有使用他们的NFC功能。

NFC是一套标准,允许智能手机和其他设备在靠近时通过无线电信号进行通信。NFC的工作原理与RFID类似,但NFC的范围比RFID短得多。NFC的范围约为4英寸,这使得它更难被窃听。

有NFC硬件的设备可以与其他装有NFC的设备以及NFC "标签 "建立通信。NFC标签是无电源的NFC芯片,从附近的智能手机或其他有电源的NFC设备中获取电源。它们不需要自己的电池或电源。在最基本的情况下,NFC标签可以作为QR码的更方便的替代品。

要建立NFC连接,你所需要做的就是将两个配备NFC的设备碰在一起。例如,如果你有两部配备NFC的智能手机,你可以背靠背地把它们碰在一起。如果你有一个NFC标签,你可以将你的NFC智能手机的背面与NFC标签接触。

NFC标签的种类(NFC tags):

NFC tags的用途

任何人都可以购买NFC标签,它们相当便宜。你可以配置你的智能手机与NFC标签接触时发生的动作。

例如,假设你在睡觉时总是把你的智能手机调到静音模式。你可以在你的床头柜上放一个NFC标签,而不是每晚手动操作。当你睡觉时,你可以把你的智能手机放在NFC标签上,你的智能手机就会执行一个你可以配置的动作,比如自动启用静音模式。

你还可以创建一个NFC标签,其中包含你的Wi-Fi网络的SSID和密码。当人们访问你的家时,他们可以用手机接触NFC标签并登录,而不是手动输入Wi-Fi网络的详细信息。

这些只是几个例子--你可以执行你的智能手机上的应用程序可以执行的任何动作。

移动支付

NFC支付的工作原理类似于万事达信用卡中的万事达PayPass等点对点非接触式支付功能。装备了NFC的智能手机可以触碰(或在NFC支付终端上挥手)来支付东西,取代了对信用卡的需求。

停车场有NFC停车表,人们可以用装有NFC的手机轻拍停车表来支付停车费。

更多可能的用途

NFC还有很多其他可能的用途,包括。

快速下载信息。许多企业、广告和产品都有QR码,必须用智能手机的摄像头来扫描。NFC可以作为一个改进的QR码--只需在QR码所在的NFC芯片上轻拍或挥动智能手机,就可以获得信息。

交通和登机牌。装备了NFC的智能手机也可以取代交通系统的通行证或机场的登机牌。

安全通行证。配备了NFC的智能手机可以通过轻触读卡器来进入安全区域。汽车制造商甚至正在开发配备NFC的汽车钥匙。

NDEF: NFC Data Exchange Format

NFC数据交换格式(NDEF)是一种标准化的数据格式,可用于在任何兼容的NFC设备和另一个NFC设备或标签之间交换信息。该数据格式由NDEF信息和NDEF记录组成。

NDEF格式用于存储和交换信息,如URI、纯文本等,使用一种普遍理解的格式。像一些NFC标签可以被配置为NDEF标签,由一个NFC设备写入可以被任何其他NDEF兼容设备理解和访问的数据(NDEF记录)。NDEF信息也可以用来在两个活跃的NFC设备之间以 "点对点 "模式交换数据。通过在通信过程中遵守NDEF数据交换格式,那些本来对彼此没有任何意义或共同语言的设备能够以一种有组织的、可相互理解的方式分享数据。

NDEF消息是NDEF记录的基本 "运输 "机制,每个消息包含一个或多个NDEF记录。

-----------------------------------------------

我们拿NXP的芯片NTA5332来举例,这个是比较新的芯片,一个NFC标签芯片。

有I2C接口,可以通过I2C来读取或擦除NFC标签内容。当然标签内容在IC不上电时是保留的,依然可被读取也能被擦写。

我们下面会使用这三个Android的APP,一个是付费的NFC Tools,另两个是NXP的免费的Tag Writer和TagInfo。

可以分别在google  Play Store和NXP官网上下载。

NFC Tools是有iOS版本的。

使用Android平台的APP ”NFC Tools - Pro Edition“可以读取到信息,显示Tag type: ISO 15693, 是type 5的标签。

这个IC出厂时里面有初始数据,是一个网址:www.nxp.com/nfc。

数据读取或擦除每次一个block,每个block有4个字节。

在程序内用I2C读取芯片EEPROM数据的打印出来为:

0xE1, 0x40, 0x80, 0x09,0x03, 0x10, 0xD1, 0x01,0x0C, 0x55, 0x01, 0x6E,0x78, 0x70, 0x2E, 0x63,0x6F, 0x6D, 0x2F, 0x6E,0x66, 0x63, 0xFE, 0x00,

NDEF的消息里面有若干个TLV组成,比如按上面就是3个TLV。

TLV:Tag,Length,Value组成的数据单元。Tag一个字节,Length一个字节,然后是接着数据payload,数据长度和length一样。

第一个TLV数据:0xE1, 0x40, 0x80, 0x09,

第二个TLV数据:

0x03, 0x10, 0xD1, 0x01,

0x0C, 0x55, 0x01, 0x6E,

0x78, 0x70, 0x2E, 0x63,

0x6F, 0x6D, 0x2F, 0x6E,

0x66, 0x63,

第三个TLV数据:

0xFE,

TLV Block的类型,就是第一个字节Tag的含义:

Value

Explanation

0xE1

Magic number (Tag contains NFC Forum defined data)

0x03

Block contains an NDEF message

0x00

Empty NDEF Record

0xFE

Last TLV block in the data area

0xFD

Block contains proprietary information

第一个TLV,

0xE1,表示Capability Container (CC),

0x40,Version (Major and Minor of nfc spec supported, v4.0)

0x80,Memory size ,value multiplied by 8: 0x80*8 = 1K  (但实际芯片是2KB存储空间)

0x09,Read and Write access (0x00 denotes no restriction)

第二个TLV里面存储的是Record记录信息,这里只有一个记录,是URL类型的一个网址www.nxp.com/nfc。

0x03,表示NDEF消息的TLV类型。

0x10,表示数据长度为16个字节。

后面的表示数据内容。

具体Record的格式信息请查阅文章最后参考。

这里可以包含多个Record。

第三个TLV,是结束的block。

再举一个包含多个record的例子,

包含了两个Record:

Record 0:

URL: 13 bytes

http://abcd.com

Record 1:

Text: 13 bytes

Hello!

数据如下:

0xE1, 0x40, 0x80, 0x09,

0x03, 0x1A, 0x91, 0x1,

0x09, 0x55, 0x03, 0x61,

0x62, 0x63, 0x64, 0x2E,

0x63, 0x6F, 0x6D, 0x51,

0x01, 0x09, 0x54, 0x02,

0x65, 0x6E, 0x48, 0x65,

0x6C, 0x6C, 0x6F, 0x21,

0xFE,

我们在实际使用中,可以使用TagWriter来构造相应的Record然后写入,再使用I2C接口把数据读取出来,数据按需要经过加工,再使用I2C的接口把数据写入到其他芯片。

这就完成了一个NFC tag的创建和拷贝工作,创建由手机APP完成,读取和拷贝由自己开发程序完成。

如果不用程序拷贝数据到NFC芯片,每次用带NFC功能的Android手机,使用TagWriter或NFC tools也可以完成数据写入或拷贝,但这样就要手工完成。

在构造NFC标签Record时,如果是想写入蓝牙地址,可以选择手机已经匹配过的蓝牙设备,然后选择此设备,将其信息保存成一个记录。

如果要写多个record,在构造时就要添加多个record进去。

而使用TagInfo,可以将NFC标签内的数据的格式分析出来,方便理解和自己构造。

这个NTA5332芯片的第一个Block是特殊block,就是0xE1开头的Capability container,可以擦除再写入,要注意内容正确。

但还是尽量不要操作这个block,可能会引发无法挽回的错误。因为按照Datasheet上说,这里的信息是特殊数据。

注意向此芯片EEPROM写入数据时,需要一定的时间,如果不检查返回状态的话,要注意延时足够。

否则芯片正忙,会造成部分数据写失败。

用手机匹配了一个蓝牙设备,然后生成一个蓝牙的NDEF的消息。把这个蓝牙的信息写入NFC标签,下次带有NFC功能的设备只要读取NFC标签,就知道了里面的蓝牙设备信息,直接完成配对。

比如经典蓝牙的HID接口的NDEF消息:

这里面的类型信息是一个字符串: application/vnd.bluetooth.ep.oob

这里面还包括了蓝牙名字,蓝牙地址等其他信息。

0xE1, 0x40, 0x80, 0x09,

0x03 0x3E 0xDA 0x20

0x19 0x01 0x61 0x70 // application开始

0x70 0x6C 0x69 0x63

0x61 0x74 0x69 0x6F

0x6E 0x2F 0x76 0x6E

0x64 0x2E 0x62 0x6C

0x75 0x65 0x74 0x6F

0x6F 0x74 0x68 0x2E

0x65 0x70 0x2E 0x6F

0x6F 0x62 0x30 0x19  // ep.oob结束

0x00 0x29 0x83 0x7D  // 6个字节蓝牙地址

0x85 0xD2 0x74 0x05

0x09 0x61 0x61 0x61   // 蓝牙设备名称: aaaa

0x61 0x04 0x0D 0x04

0x04 0x20 0x05 0x03

0x1E 0x11 0x0B 0x11

0xFE

可以使用Python库NDEFlib来生成数据,如下所示。

生成的数据前面加上Tag值03和Length形成TLV结构。

还有,这个NTA5332芯片有个内存镜像模式,在芯片带电时,使用NFC读取的内容是存储在内存中的内容。但掉电后数据会消失。

使用时,芯片需要外部的天线,而数据是存储在芯片里的。

参考:

About the NDEF Format | Adafruit PN532 RFID/NFC Breakout and Shield | Adafruit Learning Systemhttps://learn.adafruit.com/adafruit-pn532-rfid-nfc/ndef

What is NFC (Near Field Communication), and What Can I Use It For?https://www.howtogeek.com/137979/htg-explains-what-is-nfc-and-what-can-i-use-it-for/

NDEF Decoder and Encoder for Python — ndeflib 0.3.3 documentationhttps://ndeflib.readthedocs.io/en/latest/

NFC标签IC - NTA5332相关推荐

  1. 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结

    关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结 文章目录 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结 1. 前言 2. ST25 ...

  2. VFP读写NFC标签Ntag卡

    本示例使用的读写器:Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) NTAG21x系列是恩智浦半导体(NXP Semico ...

  3. nfc标签 方案 防伪_商品追溯防伪NFC标签制作

    十八年制卡经验各种卡类制作,IC卡|ID卡|M1卡|CPU卡|磁条卡|条码卡等,厂家直销,量大价优,您值得信赖!欢迎光大客户来电咨询!我们一定竭诚为您服务! 免费拿样,量大价优! 产品简介 NFC是N ...

  4. ntag213和215有什么区别_【NFC标签,ntag213/ntag215/ntag216标签,可反复擦写,可加密可锁死】价格_厂家 - 中国供应商...

    NTAG213.NTAG215和NTAG216由恩智浦半导体公司开发,并作为标准NFC标签IC与NFC设备或NFC兼容型近距离耦合设备 配合,广泛用于市场应用,如零售.游戏和消费电子等.NTAG213 ...

  5. 选择适当的NFC标签类型

    来自: Innovision 研究技术有限公司 目录 1. 简介 3 2. NFC的主要应用 4 3. NFC的规定标签类型 5 4. 选择适当的标签 6 5. 小结 11 6. 术语表 12 1. ...

  6. android nfc标签类型,Android NFC标签 开发深度解析 触碰的艺术

    原标题:Android NFC标签 开发深度解析 触碰的艺术 本文来自于CSDN博客,作者:郭朝,已获授权,版权归原作者所有,未经作者同意,请勿转载. 欢迎同有博客好文章的作者加微信(ID:tm_fo ...

  7. Android NFC 标签读写Demo与历史漏洞概述

    文章目录 前言 NFC基础 1.1 RFID区别 1.2 工作模式 1.3 日常应用 NFC标签 2.1 标签应用 2.2 应用实践 2.3 标签预览 2.4 前台调度 NFC开发 3.1 NDEF数 ...

  8. Android NFC标签 开发深度解析 触碰的艺术

    这篇博客是在鸿洋的微信公众号看到的感觉收益非浅.于是转存于自己博客上以后可查阅. 本文由郭朝投稿. 郭朝的博客地址: http://blog.csdn.net/smartbetter 有几天没有更新博 ...

  9. 购买恩智浦的NFC标签NFC支付系统由中国RFID

    购买恩智浦的NFC标签NFC支付系统由中国RFID 作为(近场通信),恩智浦NFC标签已被广泛应用在NFC支付系统,中国RFID(射频识别日报)发布了最新的恩智浦NFC标签(NFC:近场通信),以帮助 ...

最新文章

  1. 如何删除微软账户下的历史头像,及恢复默认头像
  2. ZYNQ UARTLite接收不定长数据
  3. 如何搭建一个打印荣誉证书的网站_如何搭建一个免费的作品集网站
  4. Kai - Golang实现的目标检测云服务
  5. linux 文件重命名或文件移动
  6. swift:创建滚动视图的图片轮播器
  7. python全栈之巅_Linux Crontab 定时任务
  8. VC++6.0:一点击【打开】就闪退
  9. Linux系统中如何查看日志信息
  10. .satan勒索病毒加密文件恢复手记
  11. pygame 入门实例教程 1 - 复古方块赛车游戏
  12. 企业舆情监测的意义是什么?为什么要做舆情监测?
  13. 伴随着三维全息投影技术的升级,物理屏幕将彻底消失
  14. 3D刷脸支付推动新零售行业发展
  15. C++编程-腐烂的橘子-广度优先搜索
  16. 如何组织编程教育培训
  17. 为啥说外包公司不能去?
  18. 第8周 项目5 定期存款利息计算器
  19. JS基础-尚硅谷-滚动条-视频P110
  20. 360和广点通广告SDK注意事项

热门文章

  1. [LUOGU]P5149 会议座位
  2. C语言,给定字符串,切分输出
  3. 自学AE AK大神笔记021_模拟枪口火光
  4. Piwik在代理后端获取真实IP
  5. 如何培养解决复杂问题的能力
  6. RC4算法python编程实现
  7. 提升测试效率的神器 - xmind2testcase,高效测试用例导出工具~
  8. 微信小程序用好这两招,就能快速低成本获取新用户
  9. 《算法笔记》菜菜籽的入门之旅(2)
  10. 微信小程序图片比例被压缩