Odd errors when using mailbox mode with a ST25DV04K tag
attn @Brian TIDAL et al
I have yet another issue I don't understand. I have code that I have run against two similar products using the same ST25DV04K tag. The products differ in that one has a slower CPU clock. On the product with the faster clock, my code works and produces the expected result, but on the other product I get the output below. I am transferring messages in mailbox mode. I have successfully sent my message, and I need to wait for the remote host to send back an acknowledgement message containing a 32-bit CRC. I start to poll the mailbox control register to see if the message is ready, but the command results in error code "No Memory". The error code doesn't appear to make much sense in this context, but it's repeatable and happens every time. Can anyone shed any light on how to interpret this?
NFC|INFO | | Mailbox/"ConnectState".Run
NFC|TRACE| | Present password {passwordNumber} as 0000000b 00x 0d
NFC|TRACE| | Transceive 20 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoError
NFC|DEBUG| | NFC Transceive "[20]: 22 b3 02 68 66 0c f6 01 24 02 e0 00 00 00 00 00 00 00 00 00" <=> "[3]: 00 78 f0"
NFC|DEBUG| | Disable Mailbox Mode
NFC|TRACE| | Disable Mailbox
NFC|TRACE| | Write Dynamic Config 0000110b 0Dx 13d
NFC|TRACE| | Transceive 13 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoError
NFC|DEBUG| | NFC Transceive "[13]: 22 ae 02 68 66 0c f6 01 24 02 e0 0d 00" <=> "[3]: 00 78 f0"
NFC|DEBUG| | Enable Mailbox Mode
NFC|TRACE| | Enable Mailbox
NFC|TRACE| | Write Dynamic Config 0000110b 0Dx 13d
NFC|TRACE| | Transceive 13 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoError
NFC|DEBUG| | NFC Transceive "[13]: 22 ae 02 68 66 0c f6 01 24 02 e0 0d 01" <=> "[3]: 00 78 f0"
NFC|TRACE| | Read Mailbox Control
NFC|TRACE| | Read Dynamic Config 0000110b 0Dx 13d
NFC|TRACE| | Transceive 12 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoError
NFC|DEBUG| | NFC Transceive "[12]: 22 ad 02 68 66 0c f6 01 24 02 e0 0d" <=> "[4]: 00 01 ce 1e"
NFC|INFO | | NFC Entered mailbox mode
NFC|INFO | | Mailbox/"ConnectState".OnExit
NFC|INFO | | Mailbox/"ReadyState".OnEnter
NFC|INFO | | Mailbox/"ReadyState".Run
NFC|INFO | | Mailbox/"ReadyState".BeginMailboxExchange: "[11]: 03 00 00 00 06 26 30 30 3a 0d 0a"
NFC|TRACE| | Write Mailbox Message "[11]: 03 00 00 00 06 26 30 30 3a 0d 0a"
NFC|TRACE| | Transceive 23 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoError
NFC|DEBUG| | NFC Transceive "[23]: 22 aa 02 68 66 0c f6 01 24 02 e0 0a 03 00 00 00 06 26 30 30 3a 0d 0a" <=> "[3]: 00 78 f0"
NFC|INFO | | Mailbox/"ReadyState".OnExit
NFC|INFO | | Mailbox/"ReceiveCrcState".OnEnter
NFC|INFO | | Mailbox/"ReceiveCrcState".Run
NFC|DEBUG| | Switching to fast mode Tx=26Kbps Rx=53Kbps
NFC|TRACE| | Fast Read Mailbox Control
NFC|TRACE| | Fast Read Dynamic Config 0000110b 0Dx 13d
NFC|TRACE| | Transceive 12 bytes, timeout 1000
NFC|TRACE| | Transceive error code: NoMemory
NFC|DEBUG| | NFC Transceive "[12]: 22 cd 02 68 66 0c f6 01 24 02 e0 0d" <=> "[0]:"
NFC|ERROR| | NFC error: "NFC: no memory"
NFC|INFO | | Mailbox/"ReceiveCrcState".OnExit
NFC|INFO | | Mailbox/"StoppedState".OnEnter
NFC|INFO | | Mailbox/"StoppedState".RunWhen I run the same code against another product with the same tag, everything works and I don't get the error. The firmware is similar but obviously different, and there are a lot of factors that could result in different behaviour. A colleague was able to get some code working by introducing lots of delays so there might be some timing condition in the firmware, but my feeling is that delays shouldn't be necessary because of all the handshaking in place.
I would welcome any suggestions.
