0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记|如何让STM32WB在没有LSE时运行BLE应用程序

STM32单片机 来源:未知 2023-04-12 23:10 次阅读

本文档描述如何让STM32WB在没有LSE时运行BLE应用程序所需的流程和步骤。LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准确,不需要校准,而且 LSE 可在所有的低功耗模式下保持工作。

目录预览

1 为什么 STM32WB BLE 应用需要 LSE ?2 在需要 BLE 使能时,什么情况下可考虑不使用 LSE?3 如何配置 HSE 作为 RF Wakeup 和 RTC 的时钟源?

为什么 STM32WB BLE 应用需要 LSE ?

首先LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。

STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准确,不需要校准,而且 LSE 可在所有的低功耗模式下保持工作。

STM32WB RF Wakeup 和 RTC 的时钟源也可配置为 HSE,由于 HSE 只能在RUN/LP RUN/SLEEP/LP SLEEP 模式保持,进入 STOP/STANDBY/STUTDOWN 模式后,HSE 会被关掉,这样系统就无法进入 STOP/STANDBY/STUTDOWN 模式,导致系统功耗会更高。另外 HSE 可能没那么稳定,可能需要校准,从而可能导致 STM32WB RF Wakeup 时钟不稳,也影响 BLE stack 运行,导致 BLE 工作不稳。

56e880b6-d943-11ed-bfe3-dac502259ad0.png

在需要 BLE 使能时,什么情况下可考虑不使用 LSE?

在以下情况下,还需要使能 BLE 并进行开发,调试时可配置 STM32WB 使用 HSE 做RF Wakeup 和 RTC 的时钟源。

1.设计时,遗漏 LSE,但是样机已做好

2.生产了样机,忘记贴 LSE 了

3. 生产了样机,LSE 不匹配,暂时可去掉

4.环境或应用使用某些 GPIO(PC13) 影响 LSE,导致 LSE 时钟异常或不稳

5. 不关心功耗,系统不需要进入低功耗

3. 如何配置 HSE 作为 RF Wakeup 和 RTC 的时钟源?

本 LAT 基于CubeMX v6.6.1 和 CubeWB v1.14.1 介绍。

3.1 打开 BLE_p2pServer.ioc

用CubeMXv6.6.1打开 STM32Cube_FW_WB_V1.14.1Projects P-NUCLEOWB55.NucleoApplicationsBLEBLE_p2pServerBL E_p2pServer.ioc,以此为例。

3.2失能 LSE

Pinout& Configuration => System Core => RCC=>Low Speed Clock (LSE)=>Disable,失能 LSE。

5711f5c2-d943-11ed-bfe3-dac502259ad0.png

3.3 失能 LPM & 配置 RTC 预分频

在 Pinout& Configuration => Middleware => STM32_WPAN =>Configuration=>

Generic parameters=>CFG_LPM_SUPPORT=>Disabled,失能低功耗 LPM,系统会 保持在 RUN 模式

Applicationparameters=>CFG_RTC_ASYNCH_PRESCALER=>127

Applicationparameters=>CFG_RTC_SYNCH_PRESCALER =>7812

57381928-d943-11ed-bfe3-dac502259ad0.png

其实,生成代码后在 CoreIncapp_conf.h 中,如果使能了 CFG_DEBUG_BLE_TRACE 或 CFG_DEBUG_APP_TRACE,会自动的失能 CFG_LPM_SUPPORTED。

576b7ac0-d943-11ed-bfe3-dac502259ad0.png

3.4配置 RTC 和 LSE 的时钟源为 HSE

在 Clock Configuration 中,修改 RTC/LCD Source Mux 的时钟源为 HSE_RTC;修改 RFWKP Source Mux 的时钟源为 HSE。

57969ae8-d943-11ed-bfe3-dac502259ad0.png

57bd562e-d943-11ed-bfe3-dac502259ad0.png

3.5重生代码

点击【GENERATE CODE】重新生成代码,用相应的 IDE 打开工程。

3.6使能 BLE_LSE 校准

打开 CoreIncapp_conf.h,修改 CFG_BLE_LSE_SOURCE,使能 SHCI_C2_BLE_INIT_CFG_BLE_LSE_CALIB,如下

57d89790-d943-11ed-bfe3-dac502259ad0.png

3.7修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS

打开 CoreIncapp_conf.h,修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS, 如下

57f4df4a-d943-11ed-bfe3-dac502259ad0.png

3.8检查 RF 唤醒时钟源为 HSE

在 CoreSrcmain.c 的 PeriphCommonClock_Config 函数中检查确认RFWakeUpClockSelection配置为RCC_RFWKPCLKSOURCE_HSE_DIV1024 。

58158d58-d943-11ed-bfe3-dac502259ad0.png

3.9检查 RTC 时钟源为 HSE

在 CoreSrc stm32wbxx_hal_msp.c 的 HAL_RTC_MspInit 函数中检查确认 RTCClockSelection 配置为 RCC_RTCCLKSOURCE_HSE_DIV32。

5844e9cc-d943-11ed-bfe3-dac502259ad0.png

3.10验证

重新编译工程,并下载到 STM32WB 中,此时 STM32WB 不再使用 LSE 了。使用 ST BLE Sensor 手机 app,搜索 STM32WB,并连接进行测试。

由于文章篇幅有限仅展示部分信息,完整内容请点击“阅读原文”下载原文档。

586837d8-d943-11ed-bfe3-dac502259ad0.png

长按扫码关注公众号

更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:应用笔记|如何让STM32WB在没有LSE时运行BLE应用程序

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44489

    浏览量

    631884
  • STM32
    +关注

    关注

    2264

    文章

    10854

    浏览量

    354245

原文标题:应用笔记|如何让STM32WB在没有LSE时运行BLE应用程序

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32WB5MMG只有第一次下载程序才能正常运行,为什么?

    我使用 STM32WB5MMG 制作了一个 Demo,用于与 USB 加密狗或手机通信(BLE NOTIFICATION),并通过触发下降沿中断从 MAX30001(两个中断引脚 PC10
    发表于 05-28 07:16

    STM32WBSTM32L4/L4+的区别和优劣势是什么?

    STM32WBSTM32L4 / L4+的区别,和优劣势
    发表于 04-26 08:07

    STM32WB thread启动错误是什么原因导致的?

    STM32Cube_FW_WB_V1.3.0ProjectsP-NUCLEO-WB55.NucleoApplicationsBLE_ThreadBle_Thread_Static 硬件环境:STM32WB nucleo 使用SW2切换协议为thread , 显示失败
    发表于 04-16 08:01

    STM32WB测试板上面焊接了最小系统,程序无法烧写且单片机也无法识别怎么解决?

    自己的STM32WB测试板上面焊接了最小系统发现程序无法烧写且单片机也无法识别,经过一系列测试发现与RF引脚连接的滤波网络焊接上之后程序就可以正常烧写,为此我把官方的NUCLEO开发
    发表于 03-28 06:32

    STM32WB能否连接蓝牙耳机?如果可以支持什么格式?

    STM32WB能否连接蓝牙耳机?如果可以支持什么格式?如果能得到回答将非常感谢!
    发表于 03-27 07:11

    项目开发时能不能同时用两块芯片,比如一块stm32WB一块stm32F4?

    请问项目开发时能不能同时用两块芯片,比如一块stm32WB,一块stm32F4?
    发表于 03-20 08:22

    STM32WB配置SMPS模块具体步骤是什么?

    想要降低STM32WB的功耗,查找手册发现开启SMPS模块可以降低功耗。配置SMPS模块具体步骤是什么有大佬知道吗?是开启SMPS宏定义,然后写PWR的寄存器就可以了吗?怎么证明自己的SMPS模块-配置正确了呢?
    发表于 03-20 08:18

    STM32WB55进入Stop2模式死机的原因?怎么解决?

    使用STM32WB55VGY开发应用,使用Ble协议栈,每4ms由外置ADC产生一次中断,中断处理函数中通过SPI读取ADC数值,每250次,
    发表于 03-15 06:28

    STM32WB的Zigbee终端调用ZbStartupWait加入网络时,选择rejoin入网后终端会在15s后自动退网的原因?

    STM32WB系列的Zigbee终端调用ZbStartupWait加入网络时,选择rejoin入网后,终端会在15s后,自动退网,这个是什么原因造成的。
    发表于 03-15 06:25

    基于STM32WB系列微控制器的构建射频应用

    本文档一步一步地指导设计人员基于 STM32WB 系列微控制器构建特定 Bluetooth®低功耗或802.15.4 应用。它汇集了最重要的信息,并且列出了需要处理的方面。为了充分利用本文档中的信息
    发表于 12-12 16:48 0次下载

    【应用笔记STM32WB 低功耗蓝牙无线接口

    ,同时保持了相似的通信范围。标准 HCI 指令“蓝牙核心规范 V5.3”(蓝牙®低功耗规范是其中一部分)中定义。此应用笔记描述了专有指令。
    发表于 12-12 16:30 1次下载

    STM32WB55开发(6)----FUS更新

    STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以你更新设备上的无线栈固件(如蓝牙、Zigbee或 Thread 栈
    的头像 发表于 12-01 16:49 810次阅读
    <b class='flag-5'>STM32WB</b>55开发(6)----FUS更新

    STM32WB55开发(4)----配置串口打印Debug调试信息

    STM32WB55系列微控制器上进行开发时,实时监控应用程序运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是
    的头像 发表于 12-01 15:48 1154次阅读
    <b class='flag-5'>STM32WB</b>55开发(4)----配置串口打印Debug调试信息

    STM32WB55开发(2)----修改蓝牙地址

    嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产设备,对蓝牙地址的定制化处理都是至关重要的。本文将
    的头像 发表于 12-01 15:42 737次阅读
    <b class='flag-5'>STM32WB</b>55开发(2)----修改蓝牙地址

    STM32WB55开发(1)----监测STM32WB连接状态

    STM32WB系列微控制器代表了STMicroelectronics无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中
    的头像 发表于 12-01 15:41 1050次阅读
    <b class='flag-5'>STM32WB</b>55开发(1)----监测<b class='flag-5'>STM32WB</b>连接状态