我正在使用 Adafruit PN532 分线板来模拟 NTAG213 ISO/IEC 14443-2 标签。我已将板配置为使用 TgInitAsTarget 进行仿真,如下所示:
[ 0x8C, 0x01, 0x44, 0x00, 0x7B, 0x58, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00 , 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00];
作为回应,我收到了对原创签名的 ReadSig 请求:
[0x8D,0x00,0x3C]
这确认与发起者的通信正在工作。我通过返回部分显示的原创性签名成功地处理了请求,并且由于显而易见的原因在这里被遮盖了:
[ 0x90, 0x??, 0x??, 0x??, ... ]
我得到了积极的回应:
[0x91,0x00]
然后,我以 100 毫秒的间隔重复发送明确的 GetInitiatorCommand 指令(我尝试了长达 250 毫秒但没有运气),以便从发起者那里检索下一个命令:
[0x88]
PN532 以 CRC 错误响应每一个:
[0x89,0x02]
当我发送它们时,我使用相同的算法来计算所有这些命令的校验和,所以我不认为我的 CRC 实际上是错误的,但要明确的是,发送到 PN532 的完整数据帧是:
[0x00、0x00、0xFF、0x02、0xFE、0xD4、0x88、0xA4、0x00]
当我手动运行计算时,这似乎对长度和数据都有正确的 CRC。
顺便说一句,如果我使用完全不同的设备作为启动器,它的行为类似 - 尽管最初使用读取命令 (0x30) 响应 - 这表明问题出在我的尽头。
CRC错误是否可能适用于其他东西,可能是PN532和发起者之间的数据包?我是否以错误的顺序提交指令?我承认我不完全理解 TgInitAsTarget 数据集中所有选项的含义,这些选项是从另一个已知的好应用程序复制的,也许我的 PN532 仿真器设置不正确?显然我做错了什么。
关于我做错了什么或如何诊断根本原因的任何提示?