PN532 NFC无法通过HCE

时间:2018-01-22 16:41:44

标签: android arduino nfc ndef

一些背景知识:我正在使用带有PN532屏蔽的Arduino Uno向运行HCE应用的Android手机发送命令。

我尝试了两种方法来发送APDU以使用以下APDU数据执行SELECT FILE操作。我正在使用I2C接口,因为我怀疑我试图使用的屏蔽不支持SPI。

下面的SELECT FILE命令确实可以使用SPI接口使用不同的屏蔽,但我不能在我的生活中使用I2C与其他屏蔽一起工作。

uint8_t apdu[] = {
  0x00, /* CLA */
  0xA4, /* INS SELECT FILE command */
  0x04, /* P1 - select by DF name */
  0x00, /* P2  Get the first record*/
  0x07, /* Length of AID  */
  0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* AID  */
  0x00  /* Le  */
};
  1. 方法1
  2. 发送NDEF格式的命令:

    A)inListPassiveTarget

    这有效,我看到了Android的UID / ncfid

    B)inDataExchange,数据如上APDU缓冲区。

    这将返回错误帧:

      <00> 00 00 ff 01 ff 7f 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0

    1. 方法2
    2. A)inListPassiveTarget

      这很有效。逻辑号1被分配给检测到的无源RFID标签(即我的Android手机)。

      B)inSelect命令

      这很有效。我发送预期的NDEF格式字节:

        

      0xD4 0x54 0x01

      然后回来:

        

      0xD5 0x55 0x00

      C)使用inCommunicateThru命令发送上面的SELECT FILE命令。

      这不起作用。我收到一个表示超时的响应。

        <00> 00 00 ff 03 fd d5 43 01 e7 00

      总而言之,尝试inDataExchange会导致应用程序错误失败并尝试inSelect + inCommunicateThru会给出超时。

      我尝试使用RF命令增加超时值,但这没有帮助。

      非常感谢任何有关调试的帮助。

      *****问题已解决******

      当我使用较新的三星手机型号三星Galaxy S8尝试使用我的代码时,使用inDataExchange时出现的错误框架神秘地消失了。因此,它可能是新S8上的Android操作系统版本,也可能是旧手机和新手机之间的固件/硬件差异导致的早期错误。

0 个答案:

没有答案