使用STM32WB55RGV6作为主控设计了一款智能锁应用,请问怎么配置蓝牙到低功耗广播状态?目前根据例程,蓝牙运行期间cpu1进入stop2之后仍有4mA左右的电流,如何配置可以达到更低的功耗?或者临时关闭蓝牙之后再根据需要重新打开? |
RF部分没有工作时应该自动进入低功耗,通常应用只需要管理好M4这部分。 官方有关于进入STOP的例程,可以参考一下。
哪几个例程可以参考?cpu1进入stop2模式后仍有200多uA电流,是我进入的方式不对么?
RF部分没有工作时应该自动进入低功耗,通常应用只需要管理好M4这部分。 官方有关于进入STOP的例程,可以参 ...
如何停止RF部分?并且在需要时重新打开?
1射频 RF**无需工作** 如果射频 RF**无需工作(Active活跃) (如BLE未广播,未扫描,未连接),即M0+从未启动,这样系统低功耗模式就可以由M4和配置和控制啦!STM32WB系统最低可进入Standby或Shutdown模式。** 需要配置**LL_C2_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN)** 2射频 RF**需要工作,不能关停** 如果射频 RF**需要工作(Active活跃)(如BLE广播,扫描,连接)** 对于**STM32WB55/50/35/30, STM32WB系统最低可进入的最低功耗模式是STOP2,此时M4核处于Stop2模式,负责射频RF的M0+核可仍然保持工作(Active活跃),当然没有射频数据收发时,M0+会自主的选择进入最优的超低功耗模式,M4核是无法配置和控制的。如BLE_HeartRate例程。** 对于**STM32WB15/10,STM32WB系统最低可进入的最低功耗模式是standby with RTC。如BLE_HeartRate**例程。
[md]1. 1**射频** **RF****无需工作****** * **如果射频** **RF****无需工作****(Active****活跃****) (** ...
厂家也有个STOP2 的例程,适合第二种情况,可以参考一下。
- 1射频 RF**无需工作**
- 如果射频 RF**无需工作(Active活跃**) ( ...
[md]在“射频 RF** 需要工作,不能关停**”模式下M4核进入stop2后,如果不停止BLE广播,则会有4mA左右的电流消耗,如果使用app_entry.c中Reset_Device()函数关闭蓝牙后,系统功耗降低至300uA,关闭之后蓝牙也不能再次打开了。 请问如何配置蓝牙可以做到低功耗广播?
蓝牙工作时,这部分电路(RF 工作时)确实耗电,这是省不下来的。相对于低功耗时比较多。 所以只有停止RF工作(M0+ 进入低功耗),电流才会明显下降。如果想更低,可以将M4进入STOP2。 不停止蓝牙,是不能省下更多电流的。也就是说低功耗广播是不存在的。
蓝牙工作时,这部分电路(RF 工作时)确实耗电,这是省不下来的。相对于低功耗时比较多。 所以只有停止RF工 ...
请问有什么方法可以在不复位的情况下关闭并再次打开蓝牙?
请问有什么方法可以在不复位的情况下关闭并再次打开蓝牙?
有个其他小伙伴的程序,你试试看 static void Adv_Cancel(void) { / USER CODE BEGIN Adv_Cancel_1 / BSP_LED_Off(LED_GREEN); / USER CODE END Adv_Cancel_1 / if (BleApplicationContext.Device_Connection_Status != APP_BLE_CONNECTED_SERVER) { tBleStatus ret = BLE_STATUS_INVALID_PARAMS; ret = aci_gap_set_non_discoverable(); BleApplicationContext.Device_Connection_Status = APP_BLE_IDLE; if (ret != BLE_STATUS_SUCCESS) { APP_DBG_MSG(" STOP ADVERTISING Failed \r\n\r"); } else { APP_DBG_MSG(" \r\n\r"); APP_DBG_MSG(" STOP ADVERTISING \r\n\r"); } } / USER CODE BEGIN Adv_Cancel_2 / / USER CODE END Adv_Cancel_2 / return; } 打开蓝牙: static void Adv_Request(APP_BLE_ConnStatus_t NewStatus)
有个其他小伙伴的程序,你试试看
[md]M4在进入stop4前执行了: tBleStatus ret = BLE_STATUS_INVALID_PARAMS; ret = aci_gap_set_non_discoverable(); BleApplicationContext.Device_Connection_Status = APP_BLE_IDLE; 蓝牙被成功关闭,但是在唤醒后执行: Adv_Request(APP_BLE_FAST_ADV); 却卡死,还需要哪里需要配置?
很难说卡在哪里,官方的这个软件可以参考一下 STM32Cube_FW_WB_V1.16.0\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer