RFID Sticker (mit PN5180)

Das EEProm wird beim Firmware-Update auf jeden Fall mit neuen Werten überschrieben.
Im Projekt liegt auch ein DumpFirmware bei, vielleicht hilft es das Problem zu finden.
Ich probiere das hier auch mal aus…

Habe eben schnell den eeprom von meinem verbauten PN5180 ausgelesen, also im Zweifel schon der vergiftete. Ich muss an den anderen noch Kabel löten und ihn anschließen, das aber frühestens heute Abend.

Sketch:

#include <Arduino.h>
#include <PN5180.h>
#include <PN5180ISO15693.h>

#define PN5180_NSS  13
#define PN5180_BUSY 5
#define PN5180_RST  4


#define POWER 0
#define POWER_ON  0
#define POWER_OFF 1


PN5180ISO15693 nfc(PN5180_NSS, PN5180_BUSY, PN5180_RST);

void setup() {
  pinMode(POWER, OUTPUT);
  digitalWrite(POWER, POWER_OFF);

  Serial.begin(115200);
  Serial.println(F("=================================="));
  Serial.println(F("Uploaded: " __DATE__ " " __TIME__));
  Serial.println(F("PN5180 ISO15693 Demo Sketch"));

  nfc.begin();

  Serial.println(F("----------------------------------"));
  Serial.println(F("PN5180 Hard-Reset..."));
  nfc.reset();

  Serial.println(F("----------------------------------"));
  Serial.println(F("Reading product version..."));
  uint8_t productVersion[2];
  nfc.readEEprom(PRODUCT_VERSION, productVersion, sizeof(productVersion));
  Serial.print(F("Product version="));
  Serial.print(productVersion[1]);
  Serial.print(".");
  Serial.println(productVersion[0]);

  if (0xff == productVersion[1]) { // if product version 255, the initialization failed
    Serial.println(F("Initialization failed!?"));
    Serial.println(F("Press reset to restart..."));
    Serial.flush();
    exit(-1); // halt
  }
  
  Serial.println(F("----------------------------------"));
  Serial.println(F("Reading firmware version..."));
  uint8_t firmwareVersion[2];
  nfc.readEEprom(FIRMWARE_VERSION, firmwareVersion, sizeof(firmwareVersion));
  Serial.print(F("Firmware version="));
  Serial.print(firmwareVersion[1]);
  Serial.print(".");
  Serial.println(firmwareVersion[0]);

  Serial.println(F("----------------------------------"));
  Serial.println(F("Reading EEPROM version..."));
  uint8_t eepromVersion[2];
  nfc.readEEprom(EEPROM_VERSION, eepromVersion, sizeof(eepromVersion));
  Serial.print(F("EEPROM version="));
  Serial.print(eepromVersion[1]);
  Serial.print(".");
  Serial.println(eepromVersion[0]);

  /*
  Serial.println(F("----------------------------------"));
  Serial.println(F("Reading IRQ pin config..."));
  uint8_t irqConfig;
  nfc.readEEprom(IRQ_PIN_CONFIG, &irqConfig, 1));
  Serial.print(F("IRQ_PIN_CONFIG=0x"));
  Serial.println(irqConfig, HEX);
  Serial.println(F("----------------------------------"));
  Serial.println(F("Reading IRQ_ENABLE register..."));
  uint32_t irqEnable;
  nfc.readRegister(IRQ_ENABLE, &irqEnable));
  Serial.print(F("IRQ_ENABLE=0x"));
  Serial.println(irqConfig, HEX);
  */

  Serial.println(F("----------------------------------"));
  Serial.println(F("Enable RF field..."));
  nfc.setupRF();
}

 char strBuf[100];

void loop() {
  // put your main code here, to run repeatedly:
  uint8_t eepromValue[1];
  for (uint8_t addr = 0; addr < 255; addr++)  {
    eepromValue[0] = addr;
    nfc.readEEprom(addr, eepromValue, sizeof(eepromValue));
    sprintf(strBuf, "addr %u, read %x", addr, eepromValue[0]);
    Serial.println(strBuf);

    delay(100);
  }  
}

Ausgabe:

Uploaded: Dec 27 2021 13:06:07
PN5180 ISO15693 Demo Sketch
----------------------------------
PN5180 Hard-Reset...
----------------------------------
Reading product version...
Product version=4.1
----------------------------------
Reading firmware version...
Firmware version=4.1
----------------------------------
Reading EEPROM version...
EEPROM version=153.0
----------------------------------
Enable RF field...
addr 0, read 0
addr 1, read 0
addr 2, read 0
addr 3, read 0
addr 4, read 0
addr 5, read 0
addr 6, read b9
addr 7, read 5
addr 8, read 37
addr 9, read 99
addr 10, read 9c
addr 11, read 4
addr 12, read f
addr 13, read 16
addr 14, read a
addr 15, read 3
addr 16, read 1
addr 17, read 4
addr 18, read 1
addr 19, read 4
addr 20, read 0
addr 21, read 99
addr 22, read 1
addr 23, read 0
addr 24, read c4
addr 25, read 9
addr 26, read 0
addr 27, read 0
addr 28, read 38
addr 29, read 51
addr 30, read d3
addr 31, read 2
addr 32, read 58
addr 33, read e1
addr 34, read e0
addr 35, read 2
addr 36, read 20
addr 37, read e2
addr 38, read a2
addr 39, read 82
addr 40, read 60
addr 41, read 1
addr 42, read e2
addr 43, read 2
addr 44, read 64
addr 45, read 64
addr 46, read 2
addr 47, read 1
addr 48, read 3
addr 49, read 1
addr 50, read 0
addr 51, read 5
addr 52, read 8
addr 53, read 0
addr 54, read f0
addr 55, read 3
addr 56, read 1
addr 57, read f0
addr 58, read f0
addr 59, read 3
addr 60, read a
addr 61, read 4
addr 62, read 0
addr 63, read 10
addr 64, read 42
addr 65, read 0
addr 66, read aa
addr 67, read bb
addr 68, read cc
addr 69, read 60
addr 70, read 1
addr 71, read fe
addr 72, read 1
addr 73, read 14
addr 74, read 1
addr 75, read 14
addr 76, read 98
addr 77, read 11
addr 78, read 14
addr 79, read 8
addr 80, read 10
addr 81, read b
addr 82, read 4b
addr 83, read 42
addr 84, read 84
addr 85, read 85
addr 86, read d0
addr 87, read ff
addr 88, read 0
addr 89, read 73
addr 90, read 20
addr 91, read 4e
addr 92, read 0
addr 93, read 40
addr 94, read 25
addr 95, read 72
addr 96, read 1
addr 97, read 73
addr 98, read 1
addr 99, read 72
addr 100, read 1
addr 101, read 6e
addr 102, read 1
addr 103, read 66
addr 104, read 1
addr 105, read 63
addr 106, read 1
addr 107, read 5d
addr 108, read 1
addr 109, read 4e
addr 110, read 1
addr 111, read 90
addr 112, read 1
addr 113, read ad
addr 114, read 0
addr 115, read a7
addr 116, read 0
addr 117, read 9e
addr 118, read 0
addr 119, read 96
addr 120, read 0
addr 121, read 87
addr 122, read 0
addr 123, read 4a
addr 124, read 0
addr 125, read 0
addr 126, read 0
addr 127, read 0
addr 128, read 5
addr 129, read 9
addr 130, read f9
addr 131, read f1
addr 132, read f3
addr 133, read f5
addr 134, read f7
addr 135, read f0
addr 136, read f2
addr 137, read f4
addr 138, read f6
addr 139, read 96
addr 140, read 66
addr 141, read 46
addr 142, read 36
addr 143, read 26
addr 144, read 16
addr 145, read 20
addr 146, read 4e
addr 147, read a8
addr 148, read 61
addr 149, read 90
addr 150, read 1
addr 151, read 5d
addr 152, read 91
addr 153, read 99
addr 154, read 7
addr 155, read 8
addr 156, read 91
addr 157, read 99
addr 158, read 8
addr 159, read 0
addr 160, read 91
addr 161, read 99
addr 162, read a0
addr 163, read 37
addr 164, read 91
addr 165, read f9
addr 166, read 40
addr 167, read 0
addr 168, read 92
addr 169, read b9
addr 170, read 10
addr 171, read 0
addr 172, read a2
addr 173, read 9b
addr 174, read 20
addr 175, read 0
addr 176, read a2
addr 177, read e9
addr 178, read 40
addr 179, read 0
addr 180, read 92
addr 181, read 9a
addr 182, read 8
addr 183, read 0
addr 184, read 92
addr 185, read f9
addr 186, read 80
addr 187, read 0
addr 188, read 93
addr 189, read 90
addr 190, read 47
addr 191, read 8
addr 192, read a7
addr 193, read 99
addr 194, read 7
addr 195, read 8
addr 196, read 97
addr 197, read 99
addr 198, read 8
addr 199, read 0
addr 200, read 97
addr 201, read 99
addr 202, read 30
addr 203, read 37
addr 204, read 81
addr 205, read 16
addr 206, read 9
addr 207, read 0
addr 208, read 81
addr 209, read 2
addr 210, read 0
addr 211, read c
addr 212, read 81
addr 213, read 2
addr 214, read 0
addr 215, read 30
addr 216, read d1
addr 217, read 2
addr 218, read 0
addr 219, read 40
addr 220, read 85
addr 221, read 1a
addr 222, read 10
addr 223, read 0
addr 224, read 0
addr 225, read 0
addr 226, read 0
addr 227, read 0
addr 228, read 0
addr 229, read 0
addr 230, read 0
addr 231, read 0
addr 232, read 3
addr 233, read 6
addr 234, read 17
addr 235, read 30
addr 236, read a1
addr 237, read 36
addr 238, read 5e
addr 239, read a
addr 240, read 1
addr 241, read 0
addr 242, read 0
addr 243, read 0
addr 244, read 0
addr 245, read 0
addr 246, read 0
addr 247, read 0
addr 248, read 0
addr 249, read 0
addr 250, read 0
addr 251, read 0
addr 252, read 0
addr 253, read 0
addr 254, read fe

Ich habe eben die Firmware 4.1 neu geflasht. Das klappt nur wenn die Minor-Version unterschiedlich zu der auf dem PN5180 ist. NXP bietet da so eine Dummy-Firmware Version 4.FF an. Die muss einmal drauf, danach kann man wieder 4.1 flashen.

Also das EEProm scheint nicht „vergiftet“ zu sein: Die Lesefehler sind nicht geringer als zuvor.

Bist du sicher, dass es eine Veränderung in der Erkennung gab? Sollte ja eigentlich bei einem Minimalbeispiel und gleicher Firmware dann alles gleich sein.

Ich meine das im Minimalbeispiel die Erkennungsrate schon mal so 20:1 war. Jetzt wird teilweise nur bei jedem 5 Durchlauf die UID erkannt.
Es könnte aber auch an den Karten liegen. Ich habe gute und schlechte hier. Alles normale 14443 Karten von AZ-Delivery. Die Karten haben gleiches Format und gleiche UID Länge (4/7 Bytes)

Update: Ich habe mit 5V getestet, mit 3.3V bekomme ich den PN5180 im Moment gar nicht zum laufen. Kann gut sein dass es daran lag…

So, erster Test mit jungfräulichem reader ist durch. Der eeprom ist definitiv unterschiedlich. Die Erkennung ist auch nahezu perfekt. Selbst die Sticker werden durchgängig erkannt, ohne den oben genannten Fehler mit anderen IDs zwischendrin.
Ich würde also sagen deine erste Vermutung war richtig.

Getestet mit GitHub - tueddy/PN5180-Library: PN5180 library for Arduino.

# diff rfid1.txt rfid2.txt  
24,26c24,26
< addr 8, read 37
< addr 9, read 99
< addr 10, read 9c
---
> addr 8, read 1a
> addr 9, read 95
> addr 10, read 1c
42c42
< addr 26, read 0
---
> addr 26, read 1
70,72c70,72
< addr 54, read f0
< addr 55, read 3
< addr 56, read 1
---
> addr 54, read 5
> addr 55, read 5
> addr 56, read 18

Jungfräulicher PN5180:

Uploaded: Dec 27 2021 13:06:07
PN5180 ISO15693 Demo Sketch
----------------------------------
PN5180 Hard-Reset...
----------------------------------
Reading product version...
Product version=4.1
----------------------------------
Reading firmware version...
Firmware version=4.1
----------------------------------
Reading EEPROM version...
EEPROM version=153.0
----------------------------------
Enable RF field...
addr 0, read 0
addr 1, read 0
addr 2, read 0
addr 3, read 0
addr 4, read 0
addr 5, read 0
addr 6, read b9
addr 7, read 5
addr 8, read 1a
addr 9, read 95
addr 10, read 1c
addr 11, read 4
addr 12, read f
addr 13, read 16
addr 14, read a
addr 15, read 3
addr 16, read 1
addr 17, read 4
addr 18, read 1
addr 19, read 4
addr 20, read 0
addr 21, read 99
addr 22, read 1
addr 23, read 0
addr 24, read c4
addr 25, read 9
addr 26, read 1
addr 27, read 0
addr 28, read 38
addr 29, read 51
addr 30, read d3
addr 31, read 2
addr 32, read 58
addr 33, read e1
addr 34, read e0
addr 35, read 2
addr 36, read 20
addr 37, read e2
addr 38, read a2
addr 39, read 82
addr 40, read 60
addr 41, read 1
addr 42, read e2
addr 43, read 2
addr 44, read 64
addr 45, read 64
addr 46, read 2
addr 47, read 1
addr 48, read 3
addr 49, read 1
addr 50, read 0
addr 51, read 5
addr 52, read 8
addr 53, read 0
addr 54, read 5
addr 55, read 5
addr 56, read 18
addr 57, read f0
addr 58, read f0
addr 59, read 3
addr 60, read a
addr 61, read 4
addr 62, read 0
addr 63, read 10
addr 64, read 42
addr 65, read 0
addr 66, read aa
addr 67, read bb
addr 68, read cc
addr 69, read 60
addr 70, read 1
addr 71, read fe
addr 72, read 1
addr 73, read 14
addr 74, read 1
addr 75, read 14
addr 76, read 98
addr 77, read 11
addr 78, read 14
addr 79, read 8
addr 80, read 10
addr 81, read b
addr 82, read 4b
addr 83, read 42
addr 84, read 84
addr 85, read 85
addr 86, read d0
addr 87, read ff
addr 88, read 0
addr 89, read 73
addr 90, read 20
addr 91, read 4e
addr 92, read 0
addr 93, read 40
addr 94, read 25
addr 95, read 72
addr 96, read 1
addr 97, read 73
addr 98, read 1
addr 99, read 72
addr 100, read 1
addr 101, read 6e
addr 102, read 1
addr 103, read 66
addr 104, read 1
addr 105, read 63
addr 106, read 1
addr 107, read 5d
addr 108, read 1
addr 109, read 4e
addr 110, read 1
addr 111, read 90
addr 112, read 1
addr 113, read ad
addr 114, read 0
addr 115, read a7
addr 116, read 0
addr 117, read 9e
addr 118, read 0
addr 119, read 96
addr 120, read 0
addr 121, read 87
addr 122, read 0
addr 123, read 4a
addr 124, read 0
addr 125, read 0
addr 126, read 0
addr 127, read 0
addr 128, read 5
addr 129, read 9
addr 130, read f9
addr 131, read f1
addr 132, read f3
addr 133, read f5
addr 134, read f7
addr 135, read f0
addr 136, read f2
addr 137, read f4
addr 138, read f6
addr 139, read 96
addr 140, read 66
addr 141, read 46
addr 142, read 36
addr 143, read 26
addr 144, read 16
addr 145, read 20
addr 146, read 4e
addr 147, read a8
addr 148, read 61
addr 149, read 90
addr 150, read 1
addr 151, read 5d
addr 152, read 91
addr 153, read 99
addr 154, read 7
addr 155, read 8
addr 156, read 91
addr 157, read 99
addr 158, read 8
addr 159, read 0
addr 160, read 91
addr 161, read 99
addr 162, read a0
addr 163, read 37
addr 164, read 91
addr 165, read f9
addr 166, read 40
addr 167, read 0
addr 168, read 92
addr 169, read b9
addr 170, read 10
addr 171, read 0
addr 172, read a2
addr 173, read 9b
addr 174, read 20
addr 175, read 0
addr 176, read a2
addr 177, read e9
addr 178, read 40
addr 179, read 0
addr 180, read 92
addr 181, read 9a
addr 182, read 8
addr 183, read 0
addr 184, read 92
addr 185, read f9
addr 186, read 80
addr 187, read 0
addr 188, read 93
addr 189, read 90
addr 190, read 47
addr 191, read 8
addr 192, read a7
addr 193, read 99
addr 194, read 7
addr 195, read 8
addr 196, read 97
addr 197, read 99
addr 198, read 8
addr 199, read 0
addr 200, read 97
addr 201, read 99
addr 202, read 30
addr 203, read 37
addr 204, read 81
addr 205, read 16
addr 206, read 9
addr 207, read 0
addr 208, read 81
addr 209, read 2
addr 210, read 0
addr 211, read c
addr 212, read 81
addr 213, read 2
addr 214, read 0
addr 215, read 30
addr 216, read d1
addr 217, read 2
addr 218, read 0
addr 219, read 40
addr 220, read 85
addr 221, read 1a
addr 222, read 10
addr 223, read 0
addr 224, read 0
addr 225, read 0
addr 226, read 0
addr 227, read 0
addr 228, read 0
addr 229, read 0
addr 230, read 0
addr 231, read 0
addr 232, read 3
addr 233, read 6
addr 234, read 17
addr 235, read 30
addr 236, read a1
addr 237, read 36
addr 238, read 5e
addr 239, read a
addr 240, read 1
addr 241, read 0
addr 242, read 0
addr 243, read 0
addr 244, read 0
addr 245, read 0
addr 246, read 0
addr 247, read 0
addr 248, read 0
addr 249, read 0
addr 250, read 0
addr 251, read 0
addr 252, read 0
addr 253, read 0
addr 254, read fe

@SZenglein Danke erstmal für Deine Mühe! Wäre ja schön wenn wir das Problem der schlechten ISO-14443 Erkennung finden würden!

Hmm, so ganz habe ich das noch nicht verstanden: Ein neuer Leser mit Firmware 4.1 funktioniert bei Dir gut? Die Spannungsversorgung von 3.3 auf 5V hochgeschraubt?
Der PN5180 hat ja einen 3.3 und einen 5V Anschluss. Soweit ich das verstanden habe sind die Logiklevel alle 3.3V und nur für die Antennenspannung kann man 5V drauf geben. Normalerweise sollte der Leser gut funktionieren wenn auf beiden Pins 3.3V anliegen. Hier der Schaltplan:

Interessant wären jetzt die Unterschiede im EEProm. Hier werden ja die Vorgabewerte gesetzt. Kannst Du sagen wo etwas anders ist?
Das Demo schreibt ja nix ins EEProm. Nur für LPCD werden EEProm Werte geschrieben…

Ich habe nicht bewusst mit 5V getestet, das ist mir nur hinterher aufgefallen. Normalerweise läuft er auf 3.3V, aber bei mir geht im Moment gar nichts, weder mit nur 3.3V oder mit 3.3 und 5V kurzgeschlossen.

Also im Moment muss ich nochmal schauen ob es an eeprom Änderungen oder der Spannung liegt.

Siehe mein erster erster Codeausschnitt (Ergebnis von diff rfid1.txt rfid2.txt )

OK, kann jetzt Dein Diff noch nicht den EEProm Registern der Dokumentation ab Seite 45 zuordnen, Du?
Für die Empfindlichkeit des PN5180 spielen die Einstellungen für DPC (Dynamic power control) und AWC (adaptive waveform control) eine Rolle. Diese sollten aber in den Standardeinstellungen verbleiben…

0x24 = PLL_DEFAULT_SETTING_ALM → PLL configuration for the Active Load
Modulation → nie gehört!

0x42 = NFCID1 → If Random UID is disabled (EEPROM address
0x51), the content of these addresses is used
to generate a Fixed UID. The order is byte 0,
byte 1, byte 2; the first NFCID1 byte is fixed to
08h, the check byte is calculated automatically

Hmm, das kann es nicht sein. Habe ich da etwas falsch gelesen?
Im Demo wird kein einziger Wert im EEProm verändert…

Okay, also addr wird als unsigned int ausgegeben, muss also erst in hex umgewandelt werden. Also zum Beispiel addr 26 ist IRQ_PIN_CONFIG. Das passt ja so weit.

Die ersten 3 sind innerhalb der 16 bytes von „Die identifier“, also für jeden chip unterschiedlich.

Bleiben 0x36, 0x37 und 0x38. Alles 1-Byte Werte die LPCD betreffen.

OK, das macht es klarer:
Die EEProm Register 0x36-0x38 ändere ich hier für LPCD:

0x36 = LPCD_FIELD_ON_TIME
0x37 = LPCD_THRESHOLD
0x38 = LPCD_REFVAL_GPO_CONTROL
0x39 = LPCD_GPO_TOGGLE_BEFORE_FIELD_ON

Hast Du im Demo LPCD überhaupt einmal aktiviert? Soweit ich das verstanden habe ändert sich hier nur das LPCD aber nicht die normale Kartenerkennung. Oder doch?

In der Demo ist LPCD nicht aktiviert. Ging ja eher um die generelle Kartenerkennung.

Ich bin im Moment nicht ganz sicher ob es nicht doch ein Holzweg ist und eher an 5V liegt. Nur will mein zweiter PN5180 gerade gar nicht mit 3.3V funktionieren.

Vielleicht erkennt der PN5180 generell auf 3.3V ISO14443 viel schlechter.

@SZenglein Es liegt an der Versorgungsspannung- Danke für den Hinweis!

Habe jetzt mal ein paar Tests gemacht mit Karten die so an der Grenze der Lesbarkeit sind (größerer Abstand zum Leser).
Der PN5180 Pin ist mit 5V beschriftet, laut Schaltplan ist das die Strromverorgung für die Antenne.
Deer Spannungsbereich darf hier 2.7-5.2V betragen. Also 3.3 oder 5V ist OK, bei 3.3 fließen ca. 30mA, bei 5V >50mA. Also bei 5V größere Antennenleistung und damit auch bessere Reichweite.

@biologist Das ist wohl auch ein wenig mein Fehler. Wenn 5V draufsteht soll auch 5V rein…
Der PN5180 hat ja auch mit 3.3V gute Reichweite, es gab jetzt hier nur wenige mit Problemen.
Kannst Du die Dokumentation dazu entsprechend anpassen?

Also ich kann drauf hinweisen. Aber so wirklich gelöst kriegen wir das ja nicht, oder? Mindestens im Batteriebetrieb haben wir keine 5 V mehr.

Ich muss hier übrigens gerade, wo was von falschen IDs lese, an folgenden CCC-Beitrag denken: - YouTube.

(Völlig offtopic aber KÖNIGLICH :smiley:.)

Batteriebetrieb, das war es wohl warum ich die Antennenspannun auf 3.3V gelegt hatte…

In meiner Box habe ich den 5V Anschluss jetzt auf die Batterie gelegt (Ist eh schon auf der Platine wg. Spannungsmessung. Dann habe ich zwar nicht volle 5V sondern nur 3.9-4.2V, das reicht auch schon für eine erhöhte Lesereichweite.
Bei „guten“ ISO-14443 Karten schafft der PN5180 jetzt bis 10cm. Das ist schon sehr ordentlich.

Ich versuche seit längerem das auch softwareseitig zu verbessern. Ein letzter Commit hat bei mir Verbesserungen gebracht:

Dazu müsste aber die State-Machine in RfidPn5180.cpp noch angepasst werden. Der State RFID_PN5180_NFC14443_STATE_SETUPRF ist dann zuviel da das RF-Feld schon in der Leseroutine der Bibliothek initialisiert wird. Das ist aber noch in der Testphase. Evt. kann @SZenglein das auch mal probieren?

Hatte mal testweise die neuste Version (die mit dem timeout) deiner lib im minimalen Beispiel laufen lassen.

Wenn ich mich recht erinnere hat das nichts gebracht, nach dem ganzen ausprobieren mit zweitem Reader, Spannung, etc. hab ich es aber nochmal probiert und das Ergebnis war durchaus akzeptabel. Braucht definitiv mehr tests.

Wenn die neue Version passt hätte ich definitiv Interesse die State Machine anzupassen. Bei meiner jetzigen Box ist es leider sonst unmöglich die Karte (oder Sticker) aufgelegt zu lassen.

Hab nur mal kurz reingeschaut, aber könnte die lange Verzögerung nicht Probleme mit der Schleife machen wie sie jetzt im Code ist? Also 1s nach 14443 scannen und dann 1s nach anderen. Oder hab ich das falsch gelesen?

Das mehrfache Lesen mit Timeout war nicht zielführend, das habe ich zurückgebaut.

Ich habe jetzt kurze delay() in PN5180ISO14443::activateTypeA eingebaut, damit bekomme ich deutlich weniger Erkennungsfehler. Du kannst meinen letzten Commit ja mal ausprobieren.
In der State-Machine in RfidPn5180.cpp habe ich nur den Schritt RFID_PN5180_NFC14443_STATE_SETUPRF durch einen Reset() ersetzt: Der State kann wohl auch ganz raus weil der Reset ja zuvor schon durchgeführt wurde:

       } else if (RFID_PN5180_NFC14443_STATE_SETUPRF == stateMachine) {
            nfc14443.reset();//nfc14443.setupRF();
        } else if (RFID_PN5180_NFC14443_STATE_READCARD == stateMachine) {

Damit läuft die Erkennungsschleife deutlich besser. Erkennungszeiten bei ca. 150ms und sehr selten Aussetzer…

Also mit den beiden letzten Commits kann ich eine wesentliche Verbesserung feststellen. Bloß wird im Minimalbeispiel nach einem Fehler nichts mehr erkannt. Nehme an das müsste auch geändert werden, schaue mir das gerade an.

Mit den aktuellen Änderungen ist die Erkennung bei mir ganz ok. Gut genug dass ich mit einem höheren Intervall (400ms-> 2500ms) os ziemlich alle Probleme überbrücken kann.

Was dennoch gelegentlich (auch seltener) auftritt ist die Erkennung einer falschen ID bei Stickern. Was mich stutzig macht ist die Ähnlichkeit zur richtigen ID. Teilweise ist ein Byte anders, teilweise ist die ID um ein Byte geshiftet. Kann es sein dass hier irgendwo ein buffer nur teilweise geschrieben oder zu früh kopiert wird?
Das soll jetzt aber keine Priorität sein, ich kann auch ohne die Sticker leben. An der Reichweite liegt es hier aber nicht, die ist gut genug…

Hier ein paar Beispiele.

RFID-Karte erkannt: (ISO-14443) ID: 88-04-f8-9e
RFID-Karte empfangen: 136004248158
[E][Preferences.cpp:472] getString(): nvs_get_str len fail: 136004248158 NOT_FOUND
RFID-Karte ist im NVS nicht hinterlegt.
detected nfc14443 card: 
RFID-Karte erkannt: (ISO-14443) ID: 04-f8-9e-e2
RFID-Karte erkannt: (ISO-14443) ID: 04-ec-9e-ff
RFID-Karte empfangen: 004236158255
[E][Preferences.cpp:472] getString(): nvs_get_str len fail: 004236158255 NOT_FOUND
RFID-Karte ist im NVS nicht hinterlegt.
detected nfc14443 card: 
RFID-Karte erkannt: (ISO-14443) ID: 04-ec-9e-e2
RFID-Karte erkannt: (ISO-14443) ID: 04-ec-9e-c5
RFID-Karte empfangen: 004236158197
[E][Preferences.cpp:472] getString(): nvs_get_str len fail: 004236158197 NOT_FOUND
RFID-Karte ist im NVS nicht hinterlegt.
did not detect nfc14443 card
did not detect nfc14443 card
detected nfc14443 card: 
RFID-Karte erkannt: (ISO-14443) ID: 04-ec-9e-e2
RFID-Karte empfangen: 004236158226