Skip to main content
Associate II
June 12, 2026
Question

STM32N6 + ST67W611 UsageFault and 'sem_if_ready not received'

  • June 12, 2026
  • 0 replies
  • 5 views

Hello 

I am trying to use STM32N6 with ST67W611.

What works so far:
STM32N6570-DK with X-NUCLEO-67W61M1, I am able to run my firmware that creates an AP and runs a web server with files from the SD card. 
Based on the discovery board and the ST67 nucleo, I have designed my own PCB. I have three times the exact same board. 001, 002 and 003.

Board 001 works fine, AP and web server start. This is the console output:

--------------- ST67W6X info ------------
ST67W6X MW Version: 1.2.0
AT Version: 1.0.0
SDK Version: 2.0.97
Wi-Fi MAC Version: 1.6.44
BT Controller Version: 1.6.121
BT Stack Version: 1.10.70
Build Date: Nov 19 2025 11:35:01
Module ID: C6AFDBD111400004 (-B)
BOM ID: 2
Manufacturing Year: 2025
Manufacturing Week: 13
Battery Voltage: 3.348 V
Trim Wi-Fi hp: 5,5,5,5,5,5,4,4,4,4,5,5,5,5
Trim Wi-Fi lp: 5,5,6,6,6,7,7,7,7,7,8,8,8,8
Trim BLE: 4,3,3,4,5
Trim XTAL: 36
MAC Address: 40:82:7b:02:5d:84
Anti-rollback Bootloader: 0
Anti-rollback App: 0
-----------------------------------------
Wi-Fi init is done
Wi-Fi init is done
Soft-AP configuration done

Netif AP : Link is up
ip_start: [192.168.4.2]
ip_end: [192.168.4.254]
Soft-AP started
AP IP Address: 192.168.4.1

 

I have flashed the ST67s on all three boards with:
X-CUBE-ST67W61/1.2.0/Projects/ST67W6X_Scripts/Binaries/NCP_update_mission_profile_t02.sh
The output looked like this:

Board 001
Parsed e-Fuse Data (0x00 to 0x1FF):
JTAG : Disabled
Public Key : Filled
Anti-rollback : Enabled
Anti-rollback Bootloader : 0
Anti-rollback Application : 0
Default MAC Address : 40:82:7B:02:5D:84
Customer MAC Address1 : 00:00:00:00:00:00
Customer MAC Address2 : 00:00:00:00:00:00
Part Number : C6AFDBD111400004
Manufacturing Year/Week : Year 2025 | Week 13
BOM Id : 0002
wifi_hp_poffset : [5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5]
wifi_lp_poffset : [5, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8]
ble_poffset : [4, 3, 3, 4, 5]
xtal : 36
Press any key to continue...



Board 002
Parsed e-Fuse Data (0x00 to 0x1FF):
JTAG : Disabled
Public Key : Filled
Anti-rollback : Enabled
Anti-rollback Bootloader : 0
Anti-rollback Application : 0
Default MAC Address : 40:82:7B:02:14:B8
Customer MAC Address1 : 00:00:00:00:00:00
Customer MAC Address2 : 00:00:00:00:00:00
Part Number : C6AFDBD111400004
Manufacturing Year/Week : Year 2025 | Week 13
BOM Id : 0002
wifi_hp_poffset : [8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]
wifi_lp_poffset : [7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11]
ble_poffset : [6, 5, 5, 6, 6]
xtal : 32
Press any key to continue...

Board 003
Parsed e-Fuse Data (0x00 to 0x1FF):
JTAG : Disabled
Public Key : Filled
Anti-rollback : Enabled
Anti-rollback Bootloader : 0
Anti-rollback Application : 0
Default MAC Address : 40:82:7B:02:5B:C6
Customer MAC Address1 : 00:00:00:00:00:00
Customer MAC Address2 : 00:00:00:00:00:00
Part Number : C6AFDBD111400004
Manufacturing Year/Week : Year 2025 | Week 13
BOM Id : 0002
wifi_hp_poffset : [8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 7, 7, 7, 7]
wifi_lp_poffset : [6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10]
ble_poffset : [6, 5, 5, 5, 6]
xtal : 38
Press any key to continue...


For flashing the firmware, I have used the N6-Nucleo connected to a header on my custom PCB.

Now to the problems:
Board002 and 003 end in a UsageFault when running the exact same firmware as on board001. If i remove MX_ST67W6X_Init();, the rest of my firmware runs fine. Here are some debug prints from my fault handler:
 

========== USAGE FAULT ==========
PC : 0xA5A5A5A5
LR : 0xA5A5A5A5
R0 : 0xA5A5A5A5
R1 : 0xA5A5A5A5
R2 : 0xA5A5A5A5
R3 : 0x3408BB1C
R12 : 0xA5A5A5A5
xPSR : 0xA5A5A5A5

--- Fault Status Registers ---
CFSR : 0x00100000
HFSR : 0x00000000
DFSR : 0x00000001
BFAR : 0xBE14EBF8
MMFAR : 0xBE14EBF8

--- CFSR Decode ---
MSTKERR : fault on exception entry stacking
=================================

--- Stack around fault ---
SP-16 [0x3408B9F8] = 0x00000000
SP-12 [0x3408B9FC] = 0x00000000
SP-08 [0x3408BA00] = 0x00000000
SP-04 [0x3408BA04] = 0x80000308
SP+00 [0x3408BA08] = 0xA5A5A5A5
SP+04 [0x3408BA0C] = 0xA5A5A5A5
SP+08 [0x3408BA10] = 0xA5A5A5A5
SP+12 [0x3408BA14] = 0x3408BB1C
SP+16 [0x3408BA18] = 0xA5A5A5A5
SP+20 [0x3408BA1C] = 0xA5A5A5A5
SP+24 [0x3408BA20] = 0xA5A5A5A5
SP+28 [0x3408BA24] = 0xA5A5A5A5
SP+32 [0x3408BA28] = 0xA5A5A5A5
SP+36 [0x3408BA2C] = 0x00000000
SP+40 [0x3408BA30] = 0xA53020A5
SP+44 [0x3408BA34] = 0xA5A5A5A5
SP+48 [0x3408BA38] = 0xA5A5A5A5
SP+52 [0x3408BA3C] = 0xA5A5A5A5
SP+56 [0x3408BA40] = 0xA5A5A5A5
SP+60 [0x3408BA44] = 0xA5A5A5A5

This looks like a stack overflow, but stack of XYXY task seems reasonable:

 

Meanwhile i have also tried version 1.3.0 of the NCP script. Still no success.

One more thing. I can stop the code from ending in a UsageFault by adding this EN pin toggling into the ST67 task:

static void ST67W6X_Task(void *argument)
{
/* USER CODE BEGIN ST67W6X_Task_1 */
HAL_GPIO_WritePin(ST67_EN_GPIO_Port, ST67_EN_Pin, GPIO_PIN_RESET);
vTaskDelay(200);
HAL_GPIO_WritePin(ST67_EN_GPIO_Port, ST67_EN_Pin, GPIO_PIN_SET);
vTaskDelay(2000);
/* USER CODE END ST67W6X_Task_1 */

main_app();

/* Infinite loop */
for (;;)
{
vTaskDelay(pdMS_TO_TICKS(1000));
}

/* USER CODE BEGIN ST67W6X_Task_End */

/

This will stop the UsageFault but the module is still not working:

[ERROR] [6200] [ST67W6XTask] (w61_at_sys.c:340) sem_if_ready not received
[ERROR] [6200] [ST67W6XTask] (w61_at_common.c:375) sem_if_ready not received
[ERROR] [6200] [ST67W6XTask] (w61_at_sys.c:312) Could not init Modem handler
[ERROR] [6200] [ST67W6XTask] (main_app.c:380) [ERROR] in W6X_Init API
[ERROR] [6200] [ST67W6XTask] (w6x_sys.c:115) W61 Init failed
[ERROR] [6200] [ST67W6XTask] (main_app.c:195) Failed to initialize ST67W6X Driver, 2
##### Application end

The hardware itself looks okay. I have already resoldered one of the ST67 modules, but nothing changed. My schematic is very basic. VDDIO_ST67 is correct on all boards.
 

 

I do not understand, how one out of three boards does not end in a UsageFault with the exact same firmware (eval boards work as well). Does someone have any more suggestions for debugging? I do not know how to continue. Any help is appreciated!
Thank you!

Best regards

 

fisy