2025-06-24 1:10 AM - last edited on 2025-06-24 1:18 AM by Andrew Neil
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.
Solved! Go to Solution.
2025-06-24 1:47 AM
Hi,
In line #11, register 28h is set to 0Fh:
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
2025-06-24 1:47 AM
Hi,
In line #11, register 28h is set to 0Fh:
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