2025-09-04 9:04 AM
I am using the STEVAL 25R200 evaluation board for reading/ writing to/from NFC tag and using STM32CubeIDE for implementing the ndef example read and write (provided in the firmware folder of STEVAL 25R200). I have separately made NFC_read.c and NFC_write.c where I am using the example codes and calling them in the main.c code. The RFAL initializing is called once and then the actual polling/reading process is in the while(1) loop of main function.
However, the program execution hangs indefinitely inside the rfalNfcInitialize() function which I later on traced it to the st25r200Initialize() function. I have also successfully checked the correct execution of SPI communication by reading IC ID at 0x3F (= 0x54) without any problem. The program hangs before st25r200InitInterupts() routine is called according to me, since I am not getting the debug output in that I inserted in that function.
Also because of that, certain debug outputs present in the EXTI0_1_IRQHandler() and the HAL_GPIO_EXTI_IRQHandler functions (in the stm32g0xx_it.c) which are called inside the . I have configured the IRQ according to the documentation to PA0 pin of STM32G MCU in platform.c
I have attached my codes in a single text file and attached here for reference. I'd be grateful for your assistance.
2025-09-04 10:52 AM
Hi,
0x54 is not the correct value of the IC identity register:
Thus st25r200CheckChipID() returns false and causes the entry to the Error_handler function:
The incorrect IC identity register value is likely caused by an incorrect SPI configuration. Make sure CLKPolarity = SPI_POLARITY_LOW and CLKPhase = SPI_PHASE_2EDGE in your SPI configuration. See section 5.8.2 in the ST25R200 datasheet: "The ST25R200 has a standard serial peripheral interface with clock polarity of 0, a clock phase of 1, and an active low slave select signal. "
Rgds
BT