2024-01-08 04:29 AM
Hi,
I'm using a CR95HF NFC reader using the SPI. I have Hibernate mode problem
I'm sending a command :
CR95HF_Send(0x07, 14, 0x08, 0x04, 0x00 , 0x04 , 0x00, 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00);
If the tag is in the field then I can go into Hibernate mode
If the tag is not in the field then I cannot switch to the Hibernate mode.The generator remains on. Current consumption.
How to correctly switch the CR95HF to mode Hibernate? Thanks
From Ready state to Hibernate state and back to Ready state
In Hibernate state, most resources are switched off to achieve an ultra-low power
consumption.
The only way the CR95HF can wake-up from Hibernate state is by an external event (low
pulse on pin IRQ_IN).
A basic Idle command is:
>>>0x07 0E 08 04 00 04 00 18 00 00 00 00 00 00 00 00
Solved! Go to Solution.
2024-01-08 12:16 PM
!Hi,
regarding the wake up sequence I see in your code with a 4ms delay: the pulse on IRQ_IN has to follow the same sequence as the startup sequence. The pulse width has to be greater than t1 and then the t3 delay has to be respected to have the HF oscillator being stable before sending the next SPI command. Our code uses a 11ms delay for t3. After the t3 delay, send an SPI Poll frame (0x03). If the response flag indicates "Data can be read from the ST25R95", you can read the Idle response with the wakeup flags. Depending on the Idle parameters being used, there might be no response to the Idle command when exiting from Wait for Event (in particular for hibernate command). In that case the SPI Poll response flag indicates "Data can be sent to the ST25R95".
Can you connect a login analyzer on SPI (CLK/MOSI/MISO/CS) + IRQ _OUT + IRQ_IN and send me the trace?
Regarding your question "Tell me, can section "load" energy may be shorter? Now I can't do less than 30ms.." NFC Forum compliant tags such as ST25TV tags has to be able to answer to a command 5 ms after the field is turned on. For ISO15693 compliant tags (such as ST25TV), this is 1 ms after the field is turned on. Most application uses a guard time of 5 ms. What are the parameters of the ISO15693 protocolSelect command ?
If you only need to read a block of data from the tag, the Inventory command is useless. Just send the Read Single Block command in non addressed mode.
Rgds
BT
2024-01-08 05:09 AM
My device works with a battery. And I need to minimize consumption.
My antennas and pcb are not perfect. Tell me, can section "load" energy may be shorter? Now I can't do less than 30ms..
in the picture reading one block from tag.
2024-01-08 05:50 AM
Hi,
on my side, I have connected an ammeter on the 3V3 input of an X-NUCLEO-NFC03A1 board and I can see the current moving to the same low value in both cases (with or without a tag) when the field is ON in ISO15693 mode.
Can you share some information about your setup:
Thanks
Rgds
BT
2024-01-08 06:11 AM - edited 2024-01-08 10:40 AM
1. I use a special board
2. I output debugging information through the interfaces of the microcontroller that controls the CR
3. I'll check the messages the command returns. Thank you. I'll write about it
4. I measure the current on resistor in line power supply. The current consumption of the CR95HF (in the RF mode) differs. It's about 40mA. In addition, I see on the oscilloscope RF on the antenna.
In my project I need to always sleep, wake up once every 5 minutes, read one block from the tag and fall sleep again. Here is my simplified code:
int main( void ) {
...
SET_INTR();
SET_SSI_0(); // Set SPI Interface
CLR_SSI_1();
Delay_mSeconds(200);
CR95HF_Reset();
SetProtocol_Command() ;
Info_Command();
while (1) {
for (INT08U i=0; i<2;i++) {
if (Inventory_Command()) {
ReadCurrend();
break;
}
}
Hibernate_Command();
Delay_mSeconds(5000); // In a real project, the controller goes into low power mode
CLR_INTR();
Delay_mSeconds(4); // < 4ms not working..
SET_INTR();
SetProtocol_Command() ;
Delay_mSeconds(30);
}
...
}
2024-01-08 12:16 PM
!Hi,
regarding the wake up sequence I see in your code with a 4ms delay: the pulse on IRQ_IN has to follow the same sequence as the startup sequence. The pulse width has to be greater than t1 and then the t3 delay has to be respected to have the HF oscillator being stable before sending the next SPI command. Our code uses a 11ms delay for t3. After the t3 delay, send an SPI Poll frame (0x03). If the response flag indicates "Data can be read from the ST25R95", you can read the Idle response with the wakeup flags. Depending on the Idle parameters being used, there might be no response to the Idle command when exiting from Wait for Event (in particular for hibernate command). In that case the SPI Poll response flag indicates "Data can be sent to the ST25R95".
Can you connect a login analyzer on SPI (CLK/MOSI/MISO/CS) + IRQ _OUT + IRQ_IN and send me the trace?
Regarding your question "Tell me, can section "load" energy may be shorter? Now I can't do less than 30ms.." NFC Forum compliant tags such as ST25TV tags has to be able to answer to a command 5 ms after the field is turned on. For ISO15693 compliant tags (such as ST25TV), this is 1 ms after the field is turned on. Most application uses a guard time of 5 ms. What are the parameters of the ISO15693 protocolSelect command ?
If you only need to read a block of data from the tag, the Inventory command is useless. Just send the Read Single Block command in non addressed mode.
Rgds
BT