摘要
NFC Forum Specifications 对NFC 的数据格式有明确的定义和规范,这节主要是了解一下NFC的一些协议以及数据格式
具体的协议准则可以去NFC Forum官网查看文档
目录
一、NFC技术标准和规范
1、NFC技术标准
NFC技术标准包括四层,如图
-
RT Layer ISO层
-
射频层 ,包括一些射频协议
-
Mode Switch 层
-
模式切换层,可以理解为衔接层,射频层协议和NFC协议层之间的映射,标准的切换
-
NFC Protocol层
-
P2P模式、卡模拟模式、数据交互协议(NDEF)、记录类型定义协议(RTD)、Type类型等
-
Applications层
2、NFC常见的标准规范
-
ISO 14443(A/B)
-
NFCIP-1
-
MIFARE
二、NFC TAG
1、NFC Forum 定义的TAG类型
主要为四种,如下图所示
Type 1是基于ISO 14443 A标准,可以配置成可读可写、只读,内存大概为96 bit,可以扩展到2kb,传输速率是106kb/s,可以用来存网址或其他小量数据。Type 2也是基于ISO 14443 A标准,和Type 1一样,容量大概为48 bit,可以扩展到2kb,传输速率也是106kb/s。Type 3基于Sony FeliCa体系,容量为2kb,传输速率为212kb/s,这类标签适合复杂应用,成本比较高。Type 4此类标签被定义为与ISO 14443 A 、B标准兼容,制造时被预先设定为可读、可重写,或者只读,内存可达32kb传输速率介于106kb/s到424kb/s之间
2、NXP特定的TAG类型
Mifare Classical Tag 基于ISO 14443A标准
- 可读可写,可配置成只读
- 可变内存
192/768/3584 bytes - 传输速率
106kb/s - 支持数据冲突保护
- 市场上有兼容的产品,如
NXP MIFARE Classic 1K、MIFARE Classic 4K和Classic Mini
3、TAG的获取
主要两种TAG
Mifare TAGNFC TAG
具体官网地址如下
TAGAGE www.tagage.net
Seeed Studio www.seeedstudio.com/depot/
NFC category.SparkFun www.adafruit.com/category/55
三、NDEF协议
1、NEDF概述
NFC Data Exchange Format,实现一个NFC设备间通信的数据格式,通过二进制封装消息的数据格式。
2、NDEF组成和NDEF记录
NDEF由一系列的Record组成
NDEF Record记录
(从左往右,7代表第0位)
第一个字节是一些标志位,具体规则可以看后续[Record第一个字节的规范含义]介绍
第二个字节是TYPE LENGTH,表示Type的长度
第三个字节是PAYLOAD LENGTH 表示 payload的长度,如果SR为0,则PAYLOAD 长度占4个字节否则占1个字节
紧跟着的就是ID 长度
再后面就是可变长度内容了
Record第一个字节的规范含义
如果SR为1的话,说明是短记录,Payload length占1byte,否则占4byte
后三位TNF的类型,具体含义如下
四、RTD协议
1、RTD概述
NFC Record Type Definition NFC记录类型的定义
常见的几种类型如下,Android开发通过代码也能够查看到所有具体的类型
-
RTD_TEXT(T)记录描述文本信息 -
RTD_URI(U)存储网络地址,邮件或者电话号码 -
RTD_SMART_POSTER(Sp)综合URL,电话号码或者短信编入NFC论坛标签及如何在设备间传递这些信息
2、RTD-TEXT
如果判断出TYPE是TEXT类型的,后续内容就按照以下格式解析
我们可以看到,第一个表中第一个字节是状态码,具体规则看第二个表,如果第7位(最高位)是1,说明是UTF16编码,然后0到5位是语言编码的长度,第6位是固定为0。
2、RTD-URI
如果Type是URI类型,后面第一个字节解析如下图(URI前缀),截取协议中部分,总共有255种
3、RTD-Smart Poster
综合URL,电话号码或者短信等数据
五、RTD_TEXT、RTD_URI解析实例
1、RTD_TEXT记录解析实例
第一个字节D1,根据之前的规则可以计算出来,包括他的TNF TYPE
第4个字节54,这属于RTD的一个定义 ,代表T ,为文本记录类型
第5个字节为03,语言码长度 ,长度为2,说明后面2个字节内容为编码格式,不同TYPE这里都不一样
2、RTD_URI记录解析实例