Elechouse PN532 время ожидания возврата при эмуляции карты - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу эмулировать Elechouse PN532 NF C Модуль V3 в качестве карты ISO / IEC 1443-4A. Я использую Arduino Uno в качестве доски для разработки. Я также скачал их библиотеку с Github и запустил несколько примеров, чтобы проверить, нормально ли работает модуль NF C (чтение карт 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 приведены все параметры. И они отличаются от тех, которые есть в библиотечной функции. Я попытался вставить параметры из этой заметки приложения, но это не решает проблему 3) На мой взгляд, проблема в том, что после того, как MCU отправил данные (записал кадр) в чип PN532, он не может прочитать регистр RDY - или PN532 не устанавливает его в 1, когда получил эту команду. И именно поэтому он зависает на readResponse () функция

P. C - согласно справочному руководству, регистр RDY является специальным регистром ", который разрешает хост-контроллер узнать, готов ли PN532 к приему или отправке данных обратно ".

...