2024-03-04 02:34 PM - edited 2024-03-06 01:54 PM
I am working off of Custom Hardware using the ST25R95 and I can read tags but I am trying to keep the device into IDLE mode but can't get it to work.
I have ran tag detect calibration without a tag in the field and came up with a result of 0x5C. (See attached Traces from boot)
I used 0x5C as the base for IDLE mode and use the +/-0x08 to setup the thresholds.
Using 0x5C, the device keeps telling me that there is a tag and starts to read a tag, goes into IDLE and repeats without a tag in the field. (See attached Traces from boot).
Do you have any ideas why this will not stay in IDLE?
Solved! Go to Solution.
2024-03-07 12:55 AM
Hi,
the IDLE command is erroneous:
the command contains only 07 and then zeroes.
Therefore, the device does not enter into WFE mode.
I've seen also a second issue: the protocolSelect(fieldOFF) command is erroneous and the device replies 0x82 00 (invalid length).
The proper command is 00 02020000 (the example in the Datasheet is obviously erroneous).
Also, I've seen that the SPI CS signals seems to stay low for more than 4ms after the sending of the ProtocolSelect command (between event 11 and 12 in the SPI_monitor_Leaves_IDLE trace). This is not erroneous but just an odd behavior.
Rgds
BT
2024-03-07 12:55 AM
Hi,
the IDLE command is erroneous:
the command contains only 07 and then zeroes.
Therefore, the device does not enter into WFE mode.
I've seen also a second issue: the protocolSelect(fieldOFF) command is erroneous and the device replies 0x82 00 (invalid length).
The proper command is 00 02020000 (the example in the Datasheet is obviously erroneous).
Also, I've seen that the SPI CS signals seems to stay low for more than 4ms after the sending of the ProtocolSelect command (between event 11 and 12 in the SPI_monitor_Leaves_IDLE trace). This is not erroneous but just an odd behavior.
Rgds
BT
2024-03-08 07:06 AM - edited 2024-03-08 07:10 AM
Wierd. I don't understand why the IDLE command is almost all zeros. It must be the for() loop that i am using to spit out the IDLE commands because I send out the Control Send, the Command Idle, then use a for() loop to send out an array holding the rest of the bytes. For troubleshooting, I sent out the bytes without the for() loop. Now the trace is showing the correct bytes and the device stays in IDLE. It doesn't jump out of IDLE with a tag in the field but that is for another thread if I can't figure it out.
I also implemented the Field OFF command that you mentioned above and it is happy about that.
As for the Chip Select being held low for 4ms after, I can't see a reason for that. I don't have any delays built in after sending bytes and releasing the CS.
Thanks for your help again!!
2024-03-08 08:37 AM
Well done! The logic analyzer should also help you in your future investigations.
Rgds.
BT