我从seeedstudio为我的arduino单板买了一个NFC屏蔽v2.0。我将盾牌连接到arduino,在破坏板上我有两个LED和一个液晶显示器,它们似乎工作得很好。我已经下载了官方库(http://www.seeedstudio.com/wiki/File:PN532_SPI_V2.zip),我尝试启动示例readAllMemoryBlocks(以及所有其他示例......),当程序开始运行时,我得到的是:
Found chip PN532, Firmware ver. 1.6, Supports 7
非常好....现在,当我尝试联系我的标签(mifare 1k卡,或nfc论坛类型2标签)时,我得到了
Found 1 tags, Sens Response: 0x4, Sel Response: 0x8, 0x94 0x6F 0xFB 0xA6, Read card #2490366886
其中#旁边的数字是标签的id。一切都很好,除非它不读或写任何东西(没有一个例子)。经过一些基本的调试后,我发现问题出在函数
上nfc.authenticateBlock(1, id ,blockn,KEY_A,keys)
其中blockn从0到63,根据库的cpp文件;在另一个例子中(readMemoryBlock),块是0x08,以及readMemoryBlock函数 它永远不会返回真实....所以我试图避免使用该函数,并放一个
nfc.readMemoryBlock(1,0x8,block)
但它也总是返回false ...所以看起来库本身在使通信工作正常方面存在问题。可以在此处找到示例代码:https://github.com/5v3n/Seeedstudio-PN532-RFID-NFC-Shield/blob/master/examples/readAllMemoryBlocks/readAllMemoryBlocks.pde
任何人都知道发生了什么事吗?我是否必须安装某种我缺少的驱动程序(不要想,但是......)?有人经历过这种盾牌吗?只想得到样品才能起作用......
提前致谢! :)
Ps:所有标签工作正常,我可以使用智能手机应用程序读取写入擦除等...
编辑:抱歉这些小错误..答案 0 :(得分:1)
我在不同的盾牌上使用了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是什么?