我用SeeedStudio NFC shield 2.0拼凑了Arduino Mega 2560,并使用了以下库:
我正在尝试向MiFare Classic卡(1024位,32个分区,64位ID)中写入一些文本,但我一直收到错误消息:
错误块身份验证失败4。
以下是我使用的程序:
#include <SPI.h>
#include "PN532_SPI.h"
#include "PN532.h"
#include "NfcAdapter.h"
PN532_SPI interface(SPI, 10);
NfcAdapter nfc = NfcAdapter(interface);
void setup(void) {
Serial.begin(9600);
Serial.println("NDEF Reader");
nfc.begin();
}
void loop(void) {
Serial.println("\nScan a NFC tag\n");
if (nfc.tagPresent())
{
NfcTag tag = nfc.read();
tag.print();
Serial.println("Writing to tag...");
NdefMessage message = NdefMessage();
message.addTextRecord("Hello, Arduino!");
nfc.write(message);
}
delay(5000);
}
任何人都可以帮助我吗?
该库仅适用于根据NXP的使用MIFARE Classic作为NDEF标签(请参阅AN1304和AN1305)的恩智浦应用说明进行了预格式化的MIFARE Classic卡1 键A 2。您收到的错误表明,对于扇区1(通常是NDEF应用程序的第一个扇区),无法使用NDEF应用程序的密钥A(D3F7D3F7D3F7
)进行身份验证。因此,MF经典标签似乎未预先格式化(例如,它可能处于传输配置中,并且所有键都设置为FFFFFFFFFFFF
)。
因此,您需要
E103
)的应用程序目录。有关示例,请参见AN1304中的附件D。D3F7D3F7D3F7
,将GPB设置为40
,将您的应用程序专用(秘密)密钥B设置,并将访问条件设置为a明智的价值。有关示例,请参见AN1304中的附件D。1
)实际上,该库并不遵循AN1304 / AN1305,甚至NDEF消息的reading仅适用于用作NDEF标签的MIFARE Classic标签的非常有限的子集。2
)用作NDEF标签的MIFARE Classic标签通常不能与公钥A一起写入,而只能与私钥B一起写入(如果有的话)。因此,该库的写功能用途非常有限。