【问题标题】:Elechouse PN532 return timeout when emulates cardElechouse PN532 模拟卡时返回超时
【发布时间】:2020-08-05 13:19:23
【问题描述】:

我想将 Elechouse PN532 NFC 模块 V3 模拟为 ISO/IEC 1443-4A 卡。我使用 Arduino Uno 作为开发板。我还从Github 下载了他们的库并运行了一些示例来检查 NFC 模块是否工作正常(ISO 卡读取)。检查模块后,我熟悉了 PN532 应用笔记,如何模拟 ISO/IEC 1443-4A 卡。所以,我使用 tgInitAsTarget() 函数来设置参数和 UID。但是这个函数返回超时错误。启用调试后,我得到以下输出:

write:  02
read:   03 32 01 06 07
Found chip PN532
Firmware ver. 1.6
write:  8C 00 00 00 00 00 00 40 01 FE 0F BB BA A6 C9 89 00 00 00 00 00 00 00 00 FF FF 01 FE 0F BB BA A6 C9 89 00 00 06 46 66 6D 01 01 10 00
0

我的 Arduino 划痕:

#include <PN532_SPI.h>
#include "PN532.h"

PN532_SPI pn532spi(SPI, 10);
PN532 nfc(pn532spi);

void setup(){    
  Serial.begin(115200);

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }

  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);

  Serial.println(nfc.tgInitAsTarget(1000));
}

void loop()
{}

如果我不向 tgInitAsTarget() 传递任何参数,它会卡在 readResponse() 函数中。

有什么想法吗?


1)PN532 模块正在工作 - 因为我能够获取固件版本(在本例中也是如此)或做其他事情。
2) 在终端输出的最后一行是 tgInitAsTarget() 函数的写帧。但是在第 57 页的application note 中,所有参数都给出了。而且它们不同于那些在库函数中的。我尝试粘贴此应用说明中的参数,但没有解决问题
3)在我看来,问题是MCU向PN532芯片发送数据(写帧)后,无法读取RDY寄存器-或者PN532在收到此命令时没有将其设置为1。这就是为什么它停留在 readResponse() 函数

P.C - 根据参考手册,RDY 寄存器是特定寄存器“它允许主机控制器知道 PN532 是否准备好接收或发送回数据”。

【问题讨论】:

    标签: c arduino embedded nfc pn532


    【解决方案1】:

    检查您用于与 PN532 通信的 Arduino 库支持的最大消息大小。我最近遇到了类似的情况——使用 I2C 在 Arduino Uno 和 PN532 之间进行通信。当我尝试发送 tgInitAsTarget 命令时出现超时,因为 Arduino“Wire”库具有 32 字节的 I2C 通信缓冲区大小,因此它无法将完整命令发送到 PN532(甚至虽然 Adafruit/Seeed PN532 库的调试输出在调试串行端口上打印了整个命令,这令人困惑)。

    您可能需要破解 Wire/SPI Arduino 库以增加缓冲区大小,或编写自己的 I2C/SPI 驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2015-07-23
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多