cancel
Showing results for 
Search instead for 
Did you mean: 

How to start ST25R100 in Wakeup mode?

SametKorur
Associate II

I want to use ST25R100 directly with register settings without a library. How can I start it in wake up mode? When I try the code I gave below, the Interrupt pin comes to a fixed 3.3V and does not change.

void st25r100_WakeUp_Init(void)
{
// 0. Wake-up ve reader disable → reset mantığı
st25r100_write_register(0x00, 0x00); // EN=0, WU_EN=0
nrf_delay_ms(10); // Donanım beklesin

// 1. Her ihtimale karşı IRQ flag temizle
st25r100_read_register(0x3E); // Temizle

// 2. Wake-Up kontrol: auto-ref aktif, IRQ her seferde
st25r100_write_register(0x28, 0x0F); // b00001111

// 3. Auto-ref ayarları → yavaş güncellenen, stabil
st25r100_write_register(0x29, 0x3A); // iq_aaw = 11 (32), td = 010 (~34 µs)

// 4. Eşik değeri: yüksek (farkı zor algılasın)
st25r100_write_register(0x2B, 0x20); // i_diff = 32

// 5. Wake-up periyodu: orta (~100 ms)
st25r100_write_register(0x2A, 0x05); // td_mt=010, wut=101

// 6. Sadece wake-up IRQ açık
st25r100_write_register(0x3B, 0xFD); // mask_wut = 0, diğerleri maskeli

// 7. Wake-up modunu başlat
st25r100_write_register(0x00, 0x01); // WU_EN=1, EN=0

// 8. Wake-up sonrası olası anlık IRQ'yu temizle
st25r100_read_register(0x3E); // Bu sayede IRQ pin LOW olur
}

 


Edited to apply source code formatting - please see How to insert source code for future reference.

This discussion is locked. Please start a new topic to ask your question.
1 ACCEPTED SOLUTION

Accepted Solutions
Brian TIDAL
ST Employee

Hi,

In line #11, register 28h is set to 0Fh:

  • wut<3:0>=0 ==> WUT timer=9.7 ms
  • wuti=1 ==> I_wut IRQ at every WU timeout
  • RFU values are set to 1 which is incorrect

With this configuration, I_wut is signaled after every Wake-up timer expiry causing a rise of the IRQ pin. When reading the IRQ status, make sure to read IRQ status register 1, IRQ status register 2 and IRQ status register 3

In line 14: iq_aaw is not a field of the register 29h

I would recommend to check the configuration of the various register from the ST25R100 datasheet.

Also I would recommend to use the driver part of the RFAL to access the registers and to use the mnemonics from st25r200.h/st25r200_com.h for the various fields of the various registers.

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

1 REPLY 1
Brian TIDAL
ST Employee

Hi,

In line #11, register 28h is set to 0Fh:

  • wut<3:0>=0 ==> WUT timer=9.7 ms
  • wuti=1 ==> I_wut IRQ at every WU timeout
  • RFU values are set to 1 which is incorrect

With this configuration, I_wut is signaled after every Wake-up timer expiry causing a rise of the IRQ pin. When reading the IRQ status, make sure to read IRQ status register 1, IRQ status register 2 and IRQ status register 3

In line 14: iq_aaw is not a field of the register 29h

I would recommend to check the configuration of the various register from the ST25R100 datasheet.

Also I would recommend to use the driver part of the RFAL to access the registers and to use the mnemonics from st25r200.h/st25r200_com.h for the various fields of the various registers.

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.