Tag 标签分类:

NFC 1 型标签

• 标准:ISO-14443A
• 内存大小:96 字节,可被扩充到2k字节
• 速度:106 Kbps
• 数据访问:读/写或只读
• 碰撞机制:数据碰撞保护不可用。
• 兼容产品:Innovision Topaz
• 价格:低

NFC 2 型标签

• 标准:ISO-14443A
• 内存大小:48 字节/144 字节,内存可被扩充到2k字节
• 速度:106 Kbps
• 数据访问:读/写或只读
• 碰撞机制:提供防碰撞支持
• 兼容产品:NXP Mifare Ultralight、NXP Mifare Ultralight C
• 价格:低

NFC 3 类标签

• 标准:ISO-18092、JIS-X-6319-4
• 内存大小:1/2/4/9 KB
• 速度:212 或 424 kbps
• 数据访问:读/写或只读
• 碰撞机制:提供防碰撞支持
• 兼容产品:Sony Felica
• 价格:高

NFC 4 类标签

• 标准:NXP DESFire 标签 (ISO-14443A)
• 内存大小:2KB/4 KB/8KB/32 KB
• 速度:106/212/424 Kbps
• 数据访问:读/写或只读
• 碰撞机制:提供防碰撞支持
• 兼容产品:NXP DESFire、NXP SmartMX-JCOP
• 价格:中高

NFC 类型 5 标签

• 标准:ISO-14443A、MF1 IC S50
• 内存大小:192 字节/768 字节/3584 字节
• 速度:106Kbps
• 数据访问:读/写或只读
• 碰撞机制:提供防碰撞支持
• 兼容产品:NXP Mifare Classic 1K、NXP Mifare Classic 4K、NXP Mifare Classic Mini
• 价格:低

每种 NFC 标签类型都具有独特的优势,具体取决于应用。类型 1 和 2 标签由于内存和速度较低,非常适合简单任务,而类型 4 和 5 标签则具有更高的性能和安全功能,适合支付系统等复杂应用。

NFC Tag NVM布局:

Tag Type1/2/5

小内存情况(T1/T2/T5)

Block NumberByte0Byte1Byte2Byte3Type
0Internal 0Internal 1Internal 2Internal 3Reserved
1Internal 4Internal 5Internal 6Internal 7Reserved
2Internal 8Internal 9Static Lock 0Static Lock 1Reserved
3CC 0CC 1CC 2CC 3Reserved
4Data 0Data 1Data 2Data 3Data
5Data 4Data
Data
NData nData
N+1Dynamic Lock 1Dynamic Lock 2Lock
...Lock
N+XDynamic Lock nLock
...RsvdRsvdRsvdRsvdLock
...RsvdRsvdRsvdRsvdLock

大内存情况(T5)

Block NumberByte0Byte1Byte2Byte3Type
0InternalInternal 1Internal 2Internal 3Reserved
1Internal 4Internal 5Internal 6Internal 7Reserved
2Internal 8Internal 9Static Lock 0Static Lock 1Reserved
3CC 0CC 1CC 2CC 3Reserved
4CC 4CC 5CC 6CC 7Reserved
5Data 0Data 1Data 2Data 3Data
6Data 4Data
Data
NData nData
N+1Dynamic Lock 1Dynamic Lock 2Lock
...Lock
N+XDynamic Lock nLock
...RsvdRsvdRsvdRsvdLock
...RsvdRsvdRsvdRsvdLock

字段说明

UUID bytes:
Byte NumberByte Name4-byte UID7-byte UID10-byte UIDDescription
0Internal0UID0UID0UID0
1Internal1UID1UID1UID1
2Internal2UID2UID2UID2
3Internal3UID3BCC0 = CT ^ UID0 ^ UID1 ^ UID2UID3ISO/IEC 14443-3 A
中CT 取 0x88
4Internal4BCC0 = UID0 ^ UID1 ^ UID2 ^ UID3UID3UID4
5Internal50xFFUID4UID5
6Internal60xFFUID5UID6
7Internal70xFFUID6UID7
8Internal80xFFBCC1 = UID3 ^ UID4 ^ UID5 ^ UID6UID8
9Internal9RsvdRsvdUID9
Static Lock bytes:

此区域一般具有比特位只写"1"属性,也就是一旦在对应的bit 位写入1,则此比特位不允许再次修改,区域下的每个bit位用于控制静态存储区下指定个数的 Block 是否允许非接触面(NFC空口)对 NFC tag 进行写操作,具体情况请参考对应芯片的描述。

Capability Container bytes:
Byte NumberByte NameMeaningValueDescription
12CC0NFC magic number0xE1一般为0xE1或0xE2
13CC1Version number (v1.0)0x10版本号, [b7-b4]major number, [b3-b0]minor number
14CC2Size of data area (408 bytes / 8)0x33T2T 区域大小,单位是8Bytes,内存大于2KBytes 时为0,使用ExtMenSize 区域表示
15CC3R/W access0x00读写访问标志位(只读Tag或读写Tag),具体参考对应芯片的描述
16CC4Rsved10x00
17CC5Rsved10x00
18CC6Ext Memory Size H0x00扩展的T2T 区域大小,高字节
19CC7Ext Memory Size L0x00扩展的T2T 区域大小,低字节
Data bytes

用户数据以 TLV 块的形式组织,数据区域可以包含一个或多个 TVL 块,TLV 格式如下:

  • T(必需):块类型,不同类型用于存放不同用途的数据。
  • L(可选,取决于 T 值):块长度(以字节数表示),本身占有 1字节或3字节,内容长度小于255时,L本身占用1字节,长度大于255时,长度占用3字节,L[0] = x0FF,L[1] = LenH,L[2] = LenL。
  • V(可选,取决于 T 和 L 值):块内容(仅当 L 字段存在且大于 0 时才存在),长度等于 L 字段值的多字节字段,可以包含了多个NDEF Record。
TLV block typeValueDescription
NULL TLV0x00无效类型
Lock Control TLV0x01包含定义 Dynamic Lock 区域的位置信息
Memory Control TLV0x02包含定义保留的内存区域
NDEF Message TLV0x03包含 NDEF 消息
Proprietary TLV0xFD包含标签专有信息
Terminator TLV0xFE表示 NDEF 消息结束,一般没有长度和内容
Dynamic Lock bytes

此区域一般具有比特位只写"1"属性,每个bit位用于控制动态存储区下连续 Block 区域是否允许非接触面(NFC空口)对 NFC tag 进行写操作,具体情况请参考对应芯片的描述。

Tag Type3:

Block NumberByte0Byte1Byte2Byte3Type
0VersionNbrNbwNmaxb HReserved
1Nmaxb LRsvdRsvdRsvdReserved
2RsvdWriteFR/W FlagNLEN 1Reserved
3NLEN 2NLEN 3Checksum HChecksum LReserved
4Data 0Data 1Data 2Data 3Data
5Data 4Data
Data
NData nData
...RsvdRsvdRsvdRsvdLock
...RsvdRsvdRsvdRsvdLock

字段说明

Attribute bytes
Byte NumberByte NameMeaningValueDescription
0VersionMapping version (v1.0)0x10版本号, [b7-b4]major number, [b3-b0]minor number
1MbrMax block to read0x04单次写入的最大block个数
2MbwMax block to read0x01单次读取的最大block个数
3Nmaxb HMax block for NDEF stroage high0x00T2T 区域大小高字节
4Nmaxb LMax block for NDEF stroage low0x0DT2T 区域大小低字节(以block大小为单位)
5RsvdReserved0x00保留
6RsvdReserved0x00保留
7RsvdReserved0x00保留
8RsvdReserved0x00保留
9WriteFWrite Flag0x00写标志位,用于控制非接触面对应连续block区域的写入
10R/W FlagNEDF access read and write flag0x01读写访问标志位(只读Tag或读写Tag)
11NLEN 1Current NDEF message Length0x00当前NDEF 消息长度
12NLEN 20x00
13NLEN 30x1F
14Checksum HChecksum high0x00attribute 区域校验和,
Checksum = B0+B1+ ... +B13
15Checksum LChecksum low0x42
Data bytes

用于区域位于与NVM 区域偏移 16 的位置,从这个位置开始写入用户需要的多个NDEF Record 即可,需要注意的是,用户区域的数据长度需要反映在 Attribute 下的 NLEN 字段上,并且每次修改 Attribute 区域都需要重新进行 Checksum 的计算。

Tag Type4

在 Tag Type4 中不在时直接使用NVM 偏移进行数据读取和写入,从而引入了文件的概念,在操作不同文件时需要先使用 'Select" 指令进行文件选择,选择完成后进行文件操作,文件的偏移都是从 0开始。Tag Type4 中一般至少会包括两种文件,Capability Container 文件用于描述一些通用信息,NDEF file 则用于用户区数据的读写。CC File 的文件表示父固定为 0xE103,通过CC file 中的FileID字段可以找到 NDEF file ID。

CC File

File offsetNameMeaningValueDescription
0x0000CCLenNumber of bytes of CC file0xFFCC文件长度
0x0002VersionMapping version0x10版本号, [b7-b4]major number, [b3-b0]minor number
0x0003MLeMaximum number of bytes that can be read0x00FF最大可读字节数
0x0005MLcMaximum number of bytes that can be written0x0036最大可写字节数
0x0007NDEF TDEF file control TLV0x04T字段
0x0008NDEF L0x06L字段,6个字节的内容
0x0009FileID0x0001NDEF文件ID
0x000BMaxNLEN0x0100最大NDEF文件的大小
0x000DCCRD0x00读访问条件
0x000ECCRW0x00写访问条件

NDEF File

File offsetNameMeaningValueDescription
0x0000NLENCurrent NDEF message Length当前用户区数据长度
0x0002Data0Data byte 0用户数据
0x0003Data1Data byte 1用户数据
用户数据
N用户数据

NDEF Message

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

NDEF Message
NFC Record 1 (MB=1, ME=0)NFC Record ... (MB=0, ME=0)NFC Record n (MB=0, ME=1)

NFC Record:

记录格式:

偏移bits mapping备注
01234567
0MBMECFSRILTNFflags标识,必选项
1Type LengthType 长度,必选项
2Payload Length 3SR=0时存在,可选项
3Payload Length 2SR=0时存在,可选项
4Payload Length 1SR=0时存在,可选项
5Payload Length 0Payload 长度,必选项
6ID LengthSR=1时存在,可选项
7Type StringType 字符串,必选项
8ID StringSR=1时存在,可选项
9Payload数据内容,可选项

字段说明:

  • MB(消息开始):表示此记录是 NDEF Message 中第一条记录。
  • ME(消息结束): 表示此记录是 NDEF Message 中最后一天记录。
  • CF(块标志): 表示此记录是某个记录的分块片段,在除最后一个块之外的所有记录块中设置。
  • SR(短记录): 用于确定有效负载长度字段的大小。置位表示负载长度占用 1 个字节;否则占用 4 个字节。
  • IL(存在 ID 长度): 表示记录头中是否存在 ID 长度字段。如果设置了该标志,则存在 ID 长度字段。
  • TNF(类型名称格式): 指定负载类型字段数据的类型。NFC Forum定义类型如下:
ValueType Name FormatValueType Name Format
0x00Empty0x04NFC Forum external type [NFC RTD]
0x01NFC Forum well-known type [NFC RTD]0x05Unknown
0x02Media-type [RFC 2046]0x06Unchanged
0x03Absolute URI [RFC 3986]0x07Reserved
  • Type Length(类型长度):指明记录中 Type 字段的字符串长度。
  • Payload Length(负载长度):由SR 控制使用1个字节还是这4个字节来指明负载长度。
  • ID Length(ID长度):指明ID字段的长度。IL未设置,则 ID Length 和 ID 字段都不存在。
  • Type(记录类型):字段表明负载的具体类型,TNF是父类型,而Type字符串表示具体的类型。
  • ID(ID字符串):与URI类型的负载一起使用,使得一个记录能通过ID来指向另外一个记录。

Type 类型字符串如下:

TypeType StringTypeType String
URI"U"Text"T"
Signature"Sig"Smart Poster"Sp"
Generic Control"Gc""Gc"

URI Record

URI Record Type属于 NFC Forum Well-known Type 的一种,其对应的 Type 字段取值为 "U"。组织方式如下:

NameLengthDescription
Identifier Code1 Byte指明URI 的类型
URIN ByteURI 字符串内容

ID code

ID CodeMeaningID CodeMeaning
0x00无前缀,前缀包括在URI中0x05tel:
0x01http://www0x06mailto:
0x02https://www0x07ftp://anonymous:anonymous@
0x03http://0x08ftp://ftp.
0x04https://0x09ftps://

URI 示例

URI Record 内容:0xd1 0x01 0x08 0x55 0x01 0x6e 0x66 0x63 0x2e0x63 0x6f 0x6d

3-muus.png

TEXT Record

Text Record Type 属于 NFC Forum Well-known Type 的一种,其对应的 Type 字段取值为 "T"。组织方式如下:

NameLengthDescription
status1 Bytebit7 为0表示使用 UTF-8,为1表示使用 UTF-16
bit6 强制为0
bit5~0 表示语言码的长度
language codeN Bytes语言码字符串,ISO/IANA 中英语为"en"
TextN Bytes字符串内容,编码格式由status 最高位决定

Text 示例

Text Record 内容:0xd1 0x01 0x10 0x54 0x02 0x65 0x6e 0x22 0x48 0x65 0x6c 0x6c 0x2c 0x77 0x6f 0x72 0x6c 0x64 0x21 0x22
4-fwzu.png

文章作者: 路西法
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 以梦为马
NFC nfc
喜欢就支持一下吧