STM32WB09KE PAwR Setting Maximum Connection Interval
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-05-09 9:38 AM - edited 2025-05-09 10:10 AM
Hello Folks,
I started playing with STM32WB09 after some difficulties related to entering in bootloader mode (thanks again to the community) and i wanted to try setting the maximum SCAN_INTERVAL + maximum CONNECTION_INTERVAL to see the best low power footprint i can obtain.
All the setting i'm playing with are in app.conf.h and are basically those:
#define PAWR_NUM_SUBEVENTS 4
#define PAWR_SUBEVENT_INTERVAL_MS 30
#define PAWR_RESPONSE_SLOT_DELAY_MS 2.5
#define PAWR_RESPONSE_SLOT_SPACING_US 500
#define PAWR_NUM_RESPONSE_SLOTS 8
#define PAWR_INTERVAL_MS (PAWR_SUBEVENT_INTERVAL_MS * PAWR_NUM_SUBEVENTS + 200)
#define SCAN_INTERVAL_MS 2000
#define SCAN_WINDOW_MS 100
#define CONNECTION_INTERVAL_MS 200
#define SUPERVISION_TIMEOUT_MS 500
Strating from the Broadcaster example, i'm able to set the maximum "SCAN_INTERVAL_MS" up to 32000ms (32s).
I can see that from the power consumption footprint the system wake up every 32s scanning for observers.
However i'm getting a strange behavior while changing the CONNECTION_INTERVAL_MS.
The maximum working value i obtained experimentally is 200 or lower.
The call where this defines is used, to configure the lower hardware level is in app.ble.c
status = aci_gap_set_connection_configuration(LE_1M_PHY_BIT,
(CONNECTION_INTERVAL_MS*100)/125, (CONNECTION_INTERVAL_MS*100)/125,
0u,
SUPERVISION_TIMEOUT_MS/10,
2, 2);
if (status == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("==>> aci_gap_set_connection_configuration Success , result: 0x%02x\n", status);
}
else
{
APP_DBG_MSG("==>> aci_gap_set_connection_configuration Failed , result: 0x%02x\n", status);
Error_Handler();
}
As per AN6142 the maximum value configurable on this call, for "Connection_Interval_Min" and "Connection_Interval_Max" is 0x0C80 (corresponding to 4s).
Even by setting raw values on the aci_gap_set_connection_configuration, nothing changes as i always get correct return values (0x00) ;however the next call which is to aci_gap_start_procedure failed with return code 0x12.
status = aci_gap_start_procedure(GAP_AUTO_CONNECTION_ESTABLISHMENT_PROC, LE_1M_PHY_BIT, 0, 0);
if (status != BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("aci_gap_start_procedure - fail, result: 0x%02X\n", status);
Error_Handler();
}
else
{
APP_DBG_MSG("==>> aci_gap_start_procedure (auto connection) - Success\n");
}
UART Debug is as follows:
SYSTEM RESET!!!!!!!!!<LF>
<LF>
Success: aci_hal_set_tx_power_level command<LF>
Success: aci_gatt_srv_profile_init command<LF>
Success: aci_gap_init command<LF>
Static Random Bluetooth Address: e5:f9:53:f8:b3:22<LF>
Success: Gap_profile_set_dev_name - Device Name<LF>
Success: Gap_profile_set_appearance - Appearance<LF>
Success: aci_gap_set_io_capability command<LF>
Success: aci_gap_set_security_requirements command<LF>
Success: aci_gap_configure_filter_accept_and_resolving_list command<LF>
Success: aci_gap_set_le_event_mask command<LF>
==>> End BLE_Init function<LF>
==>> Success: aci_gap_set_advertising_configuration<LF>
==>> Success: hci_le_set_periodic_advertising_parameters_v2<LF>
==>> Success: hci_le_set_periodic_advertising_enable<LF>
==>> Success: hci_le_set_extended_advertising_enable<LF>
==>> aci_gap_add_devices_to_filter_accept_and_resolving_list - Success<LF>
==>> aci_gap_set_scan_configuration - Success<LF>
==>> aci_gap_set_connection_configuration Success , result: 0x00<LF>
aci_gap_start_procedure - fail, result: 0x12<LF>
<LF>
<LF>
SYSTEM RESET!!!!!!!!!<LF>
<LF>
Success: aci_hal_set_tx_power_level command<LF>
Success: aci_gatt_srv_profile_init command<LF>
Success: aci_gap_init command<LF>
Static Random Bluetooth Address: e5:f9:53:f8:b3:22<LF>
Success: Gap_profile_set_dev_name - Device Name<LF>
Success: Gap_profile_set_appearance - Appearance<LF>
Success: aci_gap_set_io_capability command<LF>
Success: aci_gap_set_security_requirements command<LF>
Success: aci_gap_configure_filter_accept_and_resolving_list command<LF>
Success: aci_gap_set_le_event_mask command<LF>
==>> End BLE_Init function<LF>
==>> Success: aci_gap_set_advertising_configuration<LF>
==>> Success: hci_le_set_periodic_advertising_parameters_v2<LF>
==>> Success: hci_le_set_periodic_advertising_enable<LF>
==>> Success: hci_le_set_extended_advertising_enable<LF>
==>> aci_gap_add_devices_to_filter_accept_and_resolving_list - Success<LF>
==>> aci_gap_set_scan_configuration - Success<LF>
==>> aci_gap_set_connection_configuration Success , result: 0x00<LF>
aci_gap_start_procedure - fail, result: 0x12<LF>
<LF>
<LF>
SYSTEM RESET!!!!!!!!!<LF>
Anyone already encountered similar problem?
Regards
Davide
- Labels:
-
STM32WB0 series
