PN5180 SPI protocol takes a long time

oferrer
Posts: 2
Joined: Mon May 08, 2023 1:14 am

PN5180 SPI protocol takes a long time

Postby oferrer » Mon May 08, 2023 1:34 am

Hi, I implemented an iso15693 inventory16 command on an esp32 controller using Arduino IDE AND a PN5180 nfc reader.

It works well, although collisions happen. But i had to delay the flow control 1ms after asserting NSS before wait for busy pin high. If i didnt that it doesn't work.

The problem Is the inventory take almost a second for few tags. This Is a long time for my application.

I tried delayMicroseconds with values under 1000us, but it didn't work either, inventory fails.

Pn5180 datasheet say nothing about this. The protocol Is
1. Assert NSS to low
2. Performa data exchange
3. Wait until BUSY Is high
4. Deassert NSS
5. Wait until BUSY Is love

I had to code a delay 1ms between 1 AND 3 in order to algorithm works. I don't know why but it works with 1000us delay, it doesn't work with 990us delay, no matter how many tags are in the field.

Has anyone had this problem?


Any help. Thanks in Advance.

oferrer
Posts: 2
Joined: Mon May 08, 2023 1:14 am

Re: PN5180 SPI protocol takes a long time

Postby oferrer » Mon May 08, 2023 11:06 am

More details
Esp32 DevKitC
VSPI bus, mosi 23, miso 19, CLK 18, NSS 5, BUSY 21, RST 22.
I coded
1. waitForPinValue(busyPin, LOW, cmdTimeout) //cmdTimeout Is 10ms, checking interval 10us.
2. digitalWrite(nssPin, LOW)
3. delayMicroseconds(1000) // delay(1)
4. spi->transfer
5. waitForPinValue(busyPin, HIGH, cmdTimeout)
6. digitalWrite(nssPin, HIGH)

/* Process must be repeated when response have to be read, because of half duplex behaviour. */

Líne #3 have to be, or inventory fails. Why?
I tried microsecondsDelay(value), with values under 1000us, AND inventory fails either.

Some help, please!

Who is online

Users browsing this forum: No registered users and 81 guests