为不带LSE晶体的蓝牙LE配置STM32WB
问题如何在没有LSE晶体的情况下在STM32WB上运行蓝牙LE应用程序摘要本文总结了一种删除外部32.768 LSE晶体并用32MHz HSE的时钟参考源替换其功能的方法。。。
问题
如何在没有LSE晶体的情况下在STM32WB上运行蓝牙LE应用程序总结
本文总结了一种移除外部32.768 LSE晶体并用来自32MHz HSE的时钟参考源替换其功能的方法。它还描述了必要的配置修改,以实现蓝牙LE固件项目,在没有外部LSE晶体的情况下运行,并从HSE时钟运行。概述
蓝牙低能量规范要求低频晶体的频率偏差不超过500 ppm。在STM32WB上,这种低频功能由外部LSE晶体提供(通常)。LSE用作BLE无线电的RF唤醒子系统的时钟参考。当主系统时钟在低功率模式期间关闭时,如果低功率模式(如STOP/STOP2)已启用,则主系统时钟将在此事件期间保持运行。这与由32MHz系统时钟生成的其余系统时钟的操作不同。由于无线电需要准确地按时唤醒以服务于连接间隔,因此它总是需要一个活动时钟源。该功能通常由LSE时钟提供。此外,LSE还用于对RTC进行应用定时的时钟,因为与内部LSI振荡器相比,LSE是准确且稳定的时钟源。可以移除外部LSE晶体,并在其位置使用32MHz HSE,该HSE已被用作主系统时钟源。这种配置的折衷是不再能够进入低于睡眠模式的低功率模式。例如,STOP/STOP2/STANDBY模式将不再对用户可用,因为当系统进入这些更深层次的低功率模式时,HSE不可避免地会关闭。在不存在低功率要求的系统实现中,例如由电源供电(而不是由电池供电)的设备,这可能是可行的替代方案。如果您的应用程序不支持低于睡眠模式的低功耗模式,则可以按照以下步骤将STM32WB程序配置为仅从HSE运行,而不使用LSE。
请注意,STM32CubeWB固件包中的所有示例都已预配置为将LSE用于RF唤醒和RTC,因此任何示例都可以用于演示为此需要进行的更改。在这种情况下,“STM32Cube_FW_WB_V1.12.0\Projects\P-NUCLEO-WB5.NUCLEO\Applications\BLE\BLE_p2pServer”下的“BLE_p2pServer”示例将用于演示如何做到这一点。这些更改将从其各自的CubeMX项目中应用。
-
使用CubeMX v6.3.0+打开其BLE_p2pServer.ioc。
-
从“RCC”配置窗口,将LSE模式更改为“禁用”
-
从“STM32_WPAN”中间件配置窗口,转到“配置”选项卡
-
将CFG_LPM_SUPPORTED参数更改为“禁用”。这将禁用低功耗管理器支持,以使系统始终处于运行模式。
-
-
-
将CFG_BLE_LSE_SOURCE参数更改为“启用”,以选择外部HSE作为RF唤醒源。
-
-
-
将CFG_RTC_ASYNCH_PRESCALER参数更改为127,将CFG_RTC _SYNCH_PRESCAL参数更改为7812,以获得1 Hz的内部时钟频率(ck_spre)。这也将为虚拟定时器实用程序(来自hw_timerserver.c)保持相同的实时基础。
-
-
更改时钟树配置
-
为RTC Source Mux选择“HSE_RTC”(HSE_RTC)
-
选择“HSE”进行射频系统唤醒
-
-
为您喜爱的IDE重新生成代码项目。
-
在IDE中打开代码项目后,找到app_conf.h对#define CFG_TS_TICK_VAL进行以下手动编辑。请注意,此参数在CubeMX中不可用,因为它被认为是示例应用程序用户代码的一部分。
-
找到stm32wbxx_hal_msp.c,并在hal_RTC_MspInit()中添加以下代码行。
-
建立项目并按目标运行(NUCLEO-WB55RG)。此时,STM32WB不再使用LSE。
上一篇: 如何实现USB通信设备类(CDC) 下一篇: 可以施加到STM32 GPIO的最大输入电压是多少?
