cancel
Showing results for 
Search instead for 
Did you mean: 

CR95HF / ISO15693 / Hibernate mode

AVRLibre
Associate II

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

 

https://www.st.com/content/ccc/resource/technical/document/application_note/93/7e/d9/bc/44/d4/40/d4/DM00034250.pdf/files/DM00034250.pdf/jcr:content/translations/en.DM00034250.pdf

1 ACCEPTED SOLUTION

Accepted Solutions
Brian TIDAL
ST Employee

!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

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

4 REPLIES 4
AVRLibre
Associate II

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..

AVRLibre_0-1704718818199.png

in the picture reading one block from tag.

 

Brian TIDAL
ST Employee

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:

  • do you use a custom board or an ST nucleo board + X-NUCLEO-NFC03A1 or CR95HF MB1054B demo board?
  • is your board connected to a PC and communicating through USB and CR95HF DLL?
  • Is there any error code returned by the Idle command?
  • where do you measure the current and does this include the MCU part or only the CR95HF part?

Thanks

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

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);
}

...
}

Brian TIDAL
ST Employee

!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

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.