Arduino 无法读取/写入PN532的mifare标记

Arduino 无法读取/写入PN532的mifare标记,arduino,nfc,mifare,Arduino,Nfc,Mifare,我从seeedstudio为我的arduino单板购买了NFC shield v2.0。我把防护罩连接到arduino上,在防护板上我有两个LED和一个lcd,它们看起来工作正常。我下载了官方库(),并尝试启动ReadAllMemoryBlock示例(以及所有其他示例…),当程序开始运行时,我得到的是: Found chip PN532, Firmware ver. 1.6, Supports 7 很好……现在,当我尝试联系我的标签(mifare 1k卡,或nfc论坛类型2标签)时,我得到了

我从seeedstudio为我的arduino单板购买了NFC shield v2.0。我把防护罩连接到arduino上,在防护板上我有两个LED和一个lcd,它们看起来工作正常。我下载了官方库(),并尝试启动ReadAllMemoryBlock示例(以及所有其他示例…),当程序开始运行时,我得到的是:

Found chip PN532, Firmware ver. 1.6, Supports 7
很好……现在,当我尝试联系我的标签(mifare 1k卡,或nfc论坛类型2标签)时,我得到了

其中#旁边的数字是标签的id。一切正常,除非它不读或写任何东西(示例中没有人)。经过一些基本的调试,我发现问题出在函数上

nfc.authenticateBlock(1, id ,blockn,KEY_A,keys)
其中,根据库的cpp文件,blockn从0到63;在另一个示例(readMemoryBlock)中,块是0x08,在readMemoryBlock函数中也是如此 它永远不会返回true…因此我试图避免使用该函数,并将

nfc.readMemoryBlock(1,0x8,block)
但它也总是返回false…因此,似乎图书馆本身在使通信工作正常进行方面存在问题。可在此处找到示例代码:

有人知道发生了什么吗?我是否必须安装一些我缺少的驱动程序(不要认为,但是…)?有人用过这个盾牌吗?只是想得到,至少,样品来工作

提前感谢!:)

Ps:所有标签都很好用,我可以用我的智能手机应用程序读取、写入、擦除等等


编辑:为这些小错误感到抱歉。

我在不同的护盾上使用了PN532。必须使authenticateBlock()成功,因为没有该步骤,卡将无法读取或写入

你可能是按照NDEF标准格式化标签,因为你说你正在用手机应用程序阅读。您不显示键的值。目录和数据记录的标准键A为:

/**
 * @brief MAD directory standard key A
 */
uint8_t NdefReadWrite::keyDirA[6] = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 };

/**
 * @brief NFC application standard key A
 */
uint8_t NdefReadWrite::keyAppA[6] = { 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7 };
每个NDEF格式标记上的键A将是这些值。你在用那些钥匙吗


此外,密钥是6个字节。authenticateBlock()调用中的8是什么?

首先,谢谢!我忘了说我对arduino和pn532都是新手;关于键,我有
uint8_t键[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//新卡的默认密钥
(这是sdk示例代码)。现在我已经改为你的,但它没有通过身份验证块。关于authenticateblock 8(请参见编辑),在sdk示例代码中,我有:
nfc.authenticateblock(1,id,blockn,KEY_A,keys)
,其中blockn从0更改为63(in表示cicle out)。在库的头文件中,写着该数字必须介于0和63之间:(好的,jdr5ca是对的!这是标签格式的问题…因为我用手机写和读标签,它们被格式化为ndef格式,所以示例不起作用。我尝试使用新卡(从未用手机应用程序写或读)现在的问题是,我不知道ndef格式的卡必须使用哪些密钥(答案中的密钥不适用于我:();但我认为,为此,我将提出另一个问题……太多jdr5ca了!我使用的一个Android标记应用程序是NFC研究实验室Hagenberg的NFC Taginfo。该应用程序将读取整个标记内存,并显示为文本和十六进制。你会发现该应用程序或类似应用程序对于调试此类内容非常有用。
/**
 * @brief MAD directory standard key A
 */
uint8_t NdefReadWrite::keyDirA[6] = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 };

/**
 * @brief NFC application standard key A
 */
uint8_t NdefReadWrite::keyAppA[6] = { 0xD3, 0xF7, 0xD3, 0xF7, 0xD3, 0xF7 };