nfc - NFC标签存储大小

标签 nfc

我有一个 NXP NTAG216,我想知道标签的存储大小。从规范中我读到数据区域的大小位于 Block 3 Byte 2 中,在我的例子中为 7F ,即 十进制 127 乘以 8 字节 就是 1016 字节。来自 NXP 网站 它指出该标签只有 924 字节 NXP NTAG 213/215/216 .

[0]    04 : 91 : 52 : 4F
[1]    9A : 9A : 40 : 80 
[2]    C0 : 48 : 00 : 00 
[3]    E1 : 10 : 7F : 00 

与 NXP NTAG215 类似,十进制的 3E62 乘以 8 字节496 字节,其中网站显示 540 字节

[0]    04 : 34 : DB : 63 
[1]    6A : 83 : 5C : 81 
[2]    34 : 48 : 00 : 00 
[3]    E1 : 10 : 3E : 00 

有人可以向我解释一下这个数字是如何计算的吗?

最佳答案

如果您阅读卡的数据表 https://www.nxp.com/docs/en/data-sheet/NTAG213_215_216.pdf

上面写着

NTAG216 EEPROM:

  • 924 字节,分为 231 页,每页 4 字节。
  • 为制造商和配置数据保留 26 个字节
  • 37 位用于只读锁定机制
  • 4 个字节可用作功能容器
  • 888 字节用户可编程读/写存储器

来自 2 类卡的规范 http://apps4android.org/nfc-specifications/NFCForum-TS-Type-2-Tag_1.1.pdf

The Capability Container Byte 2 indicates the memory size of the data area of the Type 2 Tag Platform. The value of byte 2 multiplied by 8 is equal to the data area size measured in bytes

注意你的问题说乘以8Bits(1字节),这是错误的,我确信这只是一个拼写错误,你的意思是8Bytes

因此,一些标题 924 字节实际上保留用于其他用途,并且永远不会包含在功能容器中列出的大小中,从而留下 888 字节供用户可用内存使用。

数据表称 中的值应为 6Dh,即 109 * 8 = 872 字节。
我所有的 NTAG216 的值为 6Dh

我不确定为什么这个值 Capability Container 值小于实际可用内存大小,可能是因为规范的措辞不清楚,但它可能是 NDEF 消息的“可用数据区域”,并且可能不包括构成有效 NDEF 消息和记录的强制 header (TLV 等)。

因此,3Eh 的 NTAG215 示例值与数据表中所述的值完全相同,并且小于上面概述的总内存大小,因为某些内存页是为非 NDEF 数据等保留的。

下一个问题是为什么您的 NTAG216 示例没有正确的 6Dh

Type 2 卡的规范和 NTAG21x 卡的数据表显示:-

The Capability Container CC (page 3) is programmed during the IC production according to the NFC Forum Type 2 Tag specification (see Ref. 2). These bytes may be bit-wise modified by a WRITE or COMPATIBILITY_WRITE command. The parameter bytes of the WRITE command and the current contents of the CC bytes are bit-wise OR’ed. The result is the new CC byte contents. This process is irreversible and once a bit is set to logic 1, it cannot be changed back to logic 0.

能力容器的 4 个字节必须是可写的,因为只能以 4 字节为单位进行写入,而能力容器的字节 3 表示 2 类标签的数据区和 CC 区的读写访问能力因此可以合法地更改平台以使卡只读。

因此,对功能容器的错误写入可能已将 Byte 2 的值(大小值)增加到该特定卡上的无效值。

另一种可能性是,周围有很多假 NTAG21x 卡,这可能是假卡,实际上比正品 NXP 卡具有更多内存。
使用数据表中概述的原创性签名方法来验证其真伪,或者恩智浦的Taginfo智能手机应用程序也将验证其真伪。

关于nfc - NFC标签存储大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63945205/

相关文章:

android - NDEF URI 负载中的非法字符

java - 有没有人使用 Java,javax.microedition.contactless 使用 NFC?

android - 如何在 MIFARE Ultralight EV1 标签上设置和取消设置密码?

android - 在Android上读取RFID标签并在网页中插入数据

java - 如何获取所有 NFC 类型的事件?

ios - 在iOS swift中从后台扫描标签时在appDelegate中读取NFC标签UID

android - 有条件地禁用 Android Beam

Android NFCV 保持安静命令

java - 使用 Java 和 Android 从 NFC 读取特定值

c# - 如何使我的 NFC 应用程序在 Windows Phone 中成为 "trusted app"?