扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

STM32WB 无 LSE 运行 BLE 应用 完整配置实战指南

03/31 16:42
119
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在 STM32WB 双核蓝牙 MCU 开发中,32.768kHz LSE 低速外部晶振是 BLE 协议栈的标配时钟源,负责 RF 唤醒与 RTC 计时。但实际样机开发中,常遇到漏贴 LSE、LSE 损坏、GPIO 引脚冲突等问题,导致无法正常跑通 BLE 功能。

ST 官方 LAT1215 应用笔记给出了应急解决方案:在无 LSE 的情况下,使用 HSE 高速外部晶振替代,实现 BLE 正常广播、连接与通信。本文基于该笔记,以实操步骤带你完成全套配置,快速解决无 LSE 的 BLE 调试难题。

资料获取:【应用笔记】LAT1215 如何配置STM32WB在没有LSE时运行BLE应用程序

1. LSE 对 STM32WB BLE 的核心作用

STM32WB 的 BLE 射频唤醒(RF Wakeup)与 RTC 模块,默认依赖 LSE 提供时钟,核心优势:

  1. 低功耗模式下持续工作,支持 Stop/Standby 等深休眠模式;
  2. 时钟精度高、无需校准,保证 BLE 协议栈时序稳定;
  3. 功耗极低,适配电池供电的蓝牙设备。

而HSE 作为替代方案的局限:

  1. 仅在 Run/Sleep 模式下工作,无法进入深低功耗模式,整机功耗大幅升高;
  2. 时钟稳定性弱于 LSE,需软件校准;
  3. 仅适合样机调试、不计功耗的场景使用。

2. 无 LSE 运行 BLE 的适用场景

该配置为应急方案,仅适用于以下场景:

  1. 样机硬件遗漏焊接 LSE 晶振;
  2. 已生产样机的 LSE 晶振故障 / 不匹配;
  3. PC13 等 GPIO 占用导致 LSE 起振异常;
  4. 调试阶段、不关注设备功耗的场景。

3. 基于 CubeMX 的完整配置步骤

本文基于CubeMX 6.6.1 + CubeWB V1.14.1,以官方BLE_p2pServer例程为模板操作:

3.1 打开官方 BLE 例程

打开路径:STM32Cube_FW_WB_V1.14.1\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer\BLE_p2pServer.ioc

3.2 关闭 LSE 时钟配置

进入Pinout & Configuration → System Core → RCC

  • Low Speed Clock (LSE) 选择Disable,彻底关闭 LSE。

3.3 关闭低功耗模式 LPM

进入Middleware → STM32_WPAN → Configuration

  • Generic parameters 中,CFG_LPM_SUPPORT 设置为 Disabled(禁用低功耗,保证 HSE 持续工作);
  • Application parameters 中配置 RTC 预分频:
    • CFG_RTC_ASYNCH_PRESCALER = 127
    • CFG_RTC_SYNCH_PRESCALER = 7812

3.4 时钟树配置(核心步骤)

进入Clock Configuration界面,修改两项关键时钟源:

  1. RTC/LCD Source Mux:选择HSE_RTC;
  2. RFWKP Source Mux:选择HSE。

将 RF 唤醒时钟与 RTC 时钟全部切换为 HSE 提供。

3.5 生成工程代码

点击GENERATE CODE,重新生成 MDK/STM32CubeIDE 工程。

3.6 修改 app_conf.h 关键宏定义

打开Core\Inc\app_conf.h,完成两项关键修改:

  1. 配置 BLE LSE 校准(使用 HSE 需开启校准):
#define CFG_BLE_LSE_SOURCE (SHCI_C2_BLE_INIT_CFG_BLE_LSE_CALIB | SHCI_C2_BLE_INIT_CFG_BLE_LSE_OTHER_DEV)
  1. 修改 TS_TICK 计时值(适配 HSE 时钟):
#define CFG_TS_TICK_VAL DIVR((CFG_RTCCLK_DIV * 1000000), (HSE_VALUE/32))
#define CFG_TS_TICK_VAL_PS DIVR(((uint64_t)CFG_RTCCLK_DIV * 1e12), (uint64_t)(HSE_VALUE/32))

3.7 校验时钟配置(确保生效)

  1. 检查 RF 唤醒时钟:打开Core\Src\main.cPeriphCommonClock_Config函数,确认:RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_HSE_DIV1024
  2. 检查 RTC 时钟源:打开Core\Src\stm32wbxx_hal_msp.cHAL_RTC_MspInit函数,确认:RTCClockSelection = RCC_RTCCLKSOURCE_HSE_DIV32

4. BLE 功能验证

  1. 编译工程并下载到 STM32WB 开发板
  2. 打开手机ST BLE Sensor APP,扫描设备;
  3. 可正常搜索到设备名称,完成连接、数据通信,证明配置生效。

5. 关键注意事项

  1. 功耗显著升高:禁用 LSE+LPM 后,芯片无法进入深休眠模式,待机电流大幅上升,仅适合调试,不适合量产电池设备。
  2. 仅为应急方案:量产产品必须焊接 LSE 晶振,保证低功耗与时序稳定性。
  3. 校准不可省略:HSE 作为时钟源时,必须开启CFG_BLE_LSE_CALIB校准,否则 BLE 通信易出现丢包、断连。
  4. 开启 Debug Trace 时,LPM 会自动禁用,无需重复配置。

基于 ST LAT1215 应用笔记的配置方案,可快速实现STM32WB 在无 LSE 硬件下运行 BLE,完美解决样机调试、硬件异常的应急需求。

核心配置逻辑为:关闭 LSE→禁用 LPM→时钟源切换 HSE→软件校准,全程通过 CubeMX 图形化配置 + 少量宏定义修改即可完成。需牢记该方案仅适用于调试场景,量产产品务必恢复 LSE 硬件设计,保证低功耗与 BLE 稳定性。

相关推荐