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.
PN5180 SPI protocol takes a long time
Re: PN5180 SPI protocol takes a long time
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!
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 56 guests