我在试着理解一种超轻芯片是如何工作的。这个页面很好地解释了正常情况下的情况:https://learn.adafruit.com/adafruit-pn532-rfid-nfc/ndef (在页面的末尾)
但是现在我有一个问题,我想要在大于254字节的芯片上写数据。举个例子,我在上面写了493‘A’(7字节头的数据将是500字节)。下面是我从读取芯片中得到的信息(数字是十进制,而不是十六进制,所以不是'0xFF‘,而是'255'):
0:________ 4 34 42 132 144 0
1:________186 144 107 129 144 0
2:________192 72 0 0 144 0
3:________225 16 109 0 144 0
4:________ 3 255 1 247 144 0
5:________193 1 0 0 144 0
6:________ 1 240 84 2 144 0
7:________101 110 65 65 144 0
8:________ 65 65 65 65 144 0 ...`据我所知,前4个块是头,其中包含序列号等。然后第五个块以3开头,意思是"NDEF消息“,然后我得到大小。
例如,如果我只在芯片上写一个'A‘,那么给定的大小将是1 Byte有效载荷+7 Byte报头=8 Byte。所以第五座是这样的:
4:________ 3 8 209 1 144 0
(As the size doesn't exceed 254 byte, the 209 and 1 are not part of that size byte anymore)但是当我写248‘A时,总的大小将是255个字节,这会将第5个块更改为:
4:________ 3 255 0 255 144 0首先,我认为这将表明我需要计算x * y + z,在这个例子中,x= 255,y=0和z= 255,所以255 *0+ 255原因将给我255个整体大小,但是当我添加一个'A',所以大小是256字节时,标题更改为:
4:________ 3 255 1 0 144 0这再次表明计算是x * y + y + z,255*1+1+0 =256个。
但是,再一次,当我用659‘A来得到666 Byte时,我得到了这个:
4:________ 3 255 2 157 144 0这对于这两种算法都不起作用:
255*2+157 = 667
255*2+2+157 = 669最后一个例子是: 476位字节:
4:________ 3 255 1 223 144 0
255 * 1 + 223 = 478
255 * 1 + 1 + 223 = 479有人能向我解释我做错了什么,或者为什么我不能得到正确的算法,使我回到总体大小?
发布于 2020-09-17 05:24:17
我发现了。这不是关于乘法和加法,而是用二进制数来看待它。
首先,计算中不直接包含第一个完整字节。重要的是其他两个字节。
在476字节的例子中,我得到了
4:________ 3 255 1 223 144 0这意味着我必须以二进制方式查看1和223:
1 = 0000 0001
223 = 1101 1111现在我必须把它们合并在一起:
0000 0001 1101 1111 = 479如果总大小超过259字节,就会添加3个额外的字节(idk为什么,但这就是我的芯片的工作方式。它使用1或4个字节,取决于大小)
另一个例子是666 +3 Byte = 669:
4:________ 3 255 2 157 144 0
2 = 0000 0010
157 = 1001 1101
Total: 0000 0010 1001 1101 = 669发布于 2020-09-16 12:56:55
如果没有精确的芯片类型,然后检查它的数据表,这是很难回答的。
但是,我认为您可能会因为阅读Adafruit的信息而感到困惑,因为这并不是所有可能性的全部规格,而是用于Mifare经典1K卡,它不是NFC标准类型芯片,与超光速不一样。如何在此芯片上放置NDEF消息是对经典卡的一种安慰,并在https://www.nxp.com/docs/en/application-note/AN1304.pdf中详细说明。
对于Utralight芯片与NFC 2规范兼容,详细说明如何兼容在https://www.nxp.com/docs/en/application-note/AN1303.pdf上
对于完整的NFC类型2规范,可在http://apps4android.org/nfc-specifications/NFCForum-TS-Type-2-Tag_1.1.pdf上获得
完整的NDEF规范也可在https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-NDEF_1.0.pdf上使用。
因此,影响尺寸计算的因素有很多,包括缺少标准记录、春景等。
希望如果您阅读所有正确的文档,您将能够得到一个答案,因为Adafruit链接不适合您的芯片和一个非常简单的解释。
还要注意的是,用十进制而不是标准的十六进制来写数字,这使得读起来非常困难,因为大多数规范都是在十六进制中详细描述的。
https://stackoverflow.com/questions/63916741
复制相似问题