Why can't I write to the tag?
Hi all. I'm coding an app in C# that uses the ST25R3916DISCOComm.dll native methods to access a ST25DV04 tag. I have got many things working, including bing able to read the tag memory passively, and some complex protocols using the Mailbox mode. However, the one thing I can't get working is passive write to tag memory.
Below is a debug log of my process.
- wait for a tag in the field and get its UID. [lines 1..3]
- Read the entire tag memory using iso15693ReadBlock() in a for loop [lines 5..7]
- Present the password to unlock user area 1 [lines 9..13]. This appears to work and doesn't return an error.
- Attempt to write a single block of memory to block 79 (0x004f) with value [x12,x34,x56,x78] [lines 15..19]. This is using the iso15693TxRxNBytes() method.
The command packet looks correct to me based on the data sheet and other commands in a similar format in the log, but I'm getting back no received data and a "No Memory" error code. Any ideas what I'm missing?
Debug log:
21/05/2025 15:30:04 [Info] Waiting for tag...
21/05/2025 15:30:06 [Info] Got tag UID=[E0,02,24,02,DA,28,8B,FA] BlockSize=4 Blocks=128 TotalMemory=512 Flags=00001111b 0x0F 15
21/05/2025 15:30:06 [Info] Reading tage memory 128 blocks x 4 bytes
21/05/2025 15:30:07 [Info] Read 512 bytes
21/05/2025 15:30:07 [Trace] Transceive 20 bytes, timeout 1, Normal mode
21/05/2025 15:30:07 [Trace] Transceive error code: NoError
21/05/2025 15:30:07 [Debug] NFC Transceive [20]: 22 b3 02 fa 8b 28 da 02 24 02 e0 01 30 63 65 61 6e 53 31 67 <=> [3]: 00 78 f0
21/05/2025 15:30:12 [Trace] Transceive 17 bytes, timeout 5000, Normal mode
21/05/2025 15:30:13 [Trace] Transceive error code: NoMemory
21/05/2025 15:30:13 [Debug] NFC Transceive [17]: 22 21 02 fa 8b 28 da 02 24 02 e0 4f 00 78 56 34 12 <=> [0]:
