PN532 Shield I2C IRQ Issues

Adafruit Ethernet, Motor, Proto, Wave, Datalogger, GPS Shields - etc!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
kdarr
 
Posts: 1
Joined: Mon Nov 22, 2021 4:30 pm

PN532 Shield I2C IRQ Issues

Post by kdarr »

Hello,

I'm using the PN532 Shield with an Arduino Uno in I2C mode. After soldering on the headers the device worked with the readMifare example sketch. All was well until I decided to solder additional headers into the shield to make connections to an external breadboard.

After soldering these headers, the device now does not function properly. After digging around on the forums, it seems that the IRQ pin should normally be LOW and then pull HIGH when an RFID card is near the shield.

In my case, the IRQ pin is normally HIGH but pulls LOW momentarily whenever the sketch calls:

Code: Select all

success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
I initially thought that my soldering shorted something to this pin, but everything seems normal when checking continuity (or lack thereof) with a multimeter. See imgur ink for images of soldering and oscilloscope reading.

https://imgur.com/a/oKuHir4

Running the example sketch with the Adafruit_PN532 library in debug mode (with an additional print statement for receiving the ACK frame) shows the following on the serial monitor. Note that there were no RFID/NFC cards nearby when running this:

Code: Select all

Hello!
Hello!

Sending:  0x0 0x0 0xFF 0x2 0xFE 0xD4 0x2 0x2A 0x0
IRQ received
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
ACK frame received
Reading:  0x0 0x0 0xFF 0x6 0xFA 0xD5 0x3 0x32 0x1 0x6 0x7 0xE8
Found chip PN532
Firmware ver. 1.6

Sending:  0x0 0x0 0xFF 0x5 0xFB 0xD4 0x14 0x1 0x14 0x1 0x2 0x0
IRQ received
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
ACK frame received
Reading:  0x0 0x0 0xFF 0x2 0xFE 0xD5 0x15 0x16
Waiting for an ISO14443A Card ...

Sending:  0x0 0x0 0xFF 0x4 0xFC 0xD4 0x4A 0x1 0x0 0xE1 0x0
IRQ received
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
ACK frame received
Waiting for IRQ (indicates card presence)
Reading:  0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80

Sending:  0x0 0x0 0xFF 0x4 0xFC 0xD4 0x4A 0x1 0x0 0xE1 0x0
IRQ received
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
ACK frame received
Waiting for IRQ (indicates card presence)
Reading:  0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80

Sending:  0x0 0x0 0xFF 0x4 0xFC 0xD4 0x4A 0x1 0x0 0xE1 0x0
IRQ received
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
ACK frame received
Waiting for IRQ (indicates card presence)
Reading:  0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80
The last message (Sending to Reading) repeats indefinitely. What this means is that the shield never detects an RFID card because the call to readPassiveTargetID always returns false immediately.

What would cause the shield to behave this way, and how can I fix it? Let me know if more info is needed.

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino Shields from Adafruit”