NFC系列之协议概述

8,021 阅读4分钟

摘要

NFC Forum SpecificationsNFC 的数据格式有明确的定义和规范,这节主要是了解一下NFC的一些协议以及数据格式

 具体的协议准则可以去NFC Forum官网查看文档

NFC系列之基础概述

NFC系列之协议概述

目录

一、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/s424kb/s之间

2、NXP特定的TAG类型

Mifare Classical Tag 基于ISO 14443A标准

  • 可读可写,可配置成只读
  • 可变内存 192/768/3584 bytes
  • 传输速率 106kb/s
  • 支持数据冲突保护
  • 市场上有兼容的产品,如NXP MIFARE Classic 1KMIFARE Classic 4KClassic Mini

3、TAG的获取

主要两种TAG

  • Mifare TAG
  • NFC 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 length1byte,否则占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

 如果判断出TYPETEXT类型的,后续内容就按照以下格式解析

我们可以看到,第一个表中第一个字节是状态码具体规则看第二个表,如果第7位(最高位)是1,说明是UTF16编码,然后0到5位是语言编码的长度,第6位是固定为0

2、RTD-URI

 

如果TypeURI类型,后面第一个字节解析如下图(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记录解析实例