Skip to main content
Visitor II
June 24, 2025
Solved

How to start ST25R100 in Wakeup mode?

  • June 24, 2025
  • 1 reply
  • 278 views

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 topic has been closed for replies.
    Best answer by Brian TIDAL

    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

    1 reply

    Technical Moderator
    June 24, 2025

    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