2025-12-28 6:24 PM
I am using a custom PCB based on ST25R3911B + STM32F072C8T6, and I am encountering an issue where FeliCa cards cannot be read.
Initially, I used the X-CUBE-NFC5 software package downloaded from ST’s official website, along with the integrated RFAL library (the RFAL version should be V2.0.10). With this version, I was able to correctly implement most of the required functionality, including polling cards using ISO14443 / FeliCa / ISO15693 protocols. However, after running for several hours, the reader would occasionally enter a strange freeze/hang state. Because of this, I decided to upgrade the RFAL library.
I then downloaded the STSW-ST25RLIB001 package from ST and ported the RFAL library from it (RFAL version should be V4.0.0). After the upgrade, the problem changed: as soon as a FeliCa card is detected, the system freezes immediately.
To isolate the issue, I discarded all my own application logic and ran only demoCycle. In the demo, ISO14443 and ISO15693 cards work correctly, but FeliCa cards still have problems. At this stage, the behavior is as follows:
Sometimes the FeliCa card has no response at all.
Sometimes the FeliCa card can be read successfully, but if the card is not removed, after several polling cycles the reader freezes again.
These two behaviors seem to occur randomly. Occasionally, modifying some completely unrelated code causes the issue to randomly switch between these two states.
I also tried porting RFAL V3.x and RFAL V2.8, but with no improvement.
At this point, I am completely stuck. If needed, I am willing to share my full source code and PCB design publicly to help diagnose the issue.
Thank you very much for your help.
Solved! Go to Solution.
2025-12-29 1:57 PM
I have resolved the issue.
I created a brand-new project, and although I used the same configuration as the old one, it now works correctly. It seems that there was some unknown issue in the previous project setup.
The working project has been uploaded as an attachment. If anyone else encounters the same problem, feel free to download and use it.
2025-12-29 1:51 AM
void demoCycle( void )
{
static rfalNfcDevice *nfcDevice;
rfalNfcWorker(); /* Run RFAL worker periodically */
switch( state )
{
/*******************************************************************************/
case DEMO_ST_START_DISCOVERY:
platformLedOff(PLATFORM_LED_A_PORT, PLATFORM_LED_A_PIN);
platformLedOff(PLATFORM_LED_B_PORT, PLATFORM_LED_B_PIN);
platformLedOff(PLATFORM_LED_F_PORT, PLATFORM_LED_F_PIN);
platformLedOff(PLATFORM_LED_V_PORT, PLATFORM_LED_V_PIN);
platformLedOff(PLATFORM_LED_AP2P_PORT, PLATFORM_LED_AP2P_PIN);
platformLedOff(PLATFORM_LED_FIELD_PORT, PLATFORM_LED_FIELD_PIN);
multiSel = false;
state = DEMO_ST_DISCOVERY;
break;
/*******************************************************************************/
case DEMO_ST_DISCOVERY:
if( rfalNfcIsDevActivated( rfalNfcGetState() ) )
{
uint8_t tmp = 0x77;
CDC_Transmit(0, &tmp, 1);
rfalNfcGetActiveDevice( &nfcDevice );
switch( nfcDevice->type )
{
case RFAL_NFC_LISTEN_TYPE_NFCF:
platformLedOn(PLATFORM_LED_F_PORT, PLATFORM_LED_F_PIN);
if( rfalNfcfIsNfcDepSupported( &nfcDevice->dev.nfcf ) )
{
platformLog("NFCF Passive P2P device found. NFCID: %s\r\n", hex2Str( nfcDevice->nfcid, nfcDevice->nfcidLen ) );
}
else
{
platformLog("Felica/NFC-F card found. UID: %s\r\n", hex2Str( nfcDevice->nfcid, nfcDevice->nfcidLen ));
}
break;
...Thank you for your suggestion. At the moment, I am not accessing any FeliCa blocks. I am simply running demoCycle and expecting to retrieve the NFCID2, which should be within the supported functionality of the ST25R3911.
2025-12-29 1:57 PM
I have resolved the issue.
I created a brand-new project, and although I used the same configuration as the old one, it now works correctly. It seems that there was some unknown issue in the previous project setup.
The working project has been uploaded as an attachment. If anyone else encounters the same problem, feel free to download and use it.