本文檔描述如何讓STM32WB在沒有LSE時(shí)運(yùn)行BLE應(yīng)用程序所需的流程和步驟。LSE 可作為 STM32WB RF Wakeup 和 RTC 的時(shí)鐘源。STM32WB RF Wakeup 和 RTC 的時(shí)鐘源可配置為 LSE,LSE 時(shí)鐘相對(duì)比較穩(wěn)定且準(zhǔn)確,不需要校準(zhǔn),而且 LSE 可在所有的低功耗模式下保持工作。
目錄預(yù)覽
1為什么 STM32WB BLE 應(yīng)用需要 LSE ?
2在需要 BLE 使能時(shí),什么情況下可考慮不使用 LSE?
3如何配置 HSE 作為 RF Wakeup 和 RTC 的時(shí)鐘源?
為什么 STM32WB BLE 應(yīng)用需要 LSE ?
首先LSE 可作為 STM32WB RF Wakeup 和 RTC 的時(shí)鐘源。
STM32WB RF Wakeup 和 RTC 的時(shí)鐘源可配置為 LSE,LSE 時(shí)鐘相對(duì)比較穩(wěn)定且準(zhǔn) 確,不需要校準(zhǔn),而且 LSE 可在所有的低功耗模式下保持工作。
STM32WB RF Wakeup 和 RTC 的時(shí)鐘源也可配置為 HSE,由于 HSE 只能在 RUN/LP RUN/SLEEP/LP SLEEP 模式保持,進(jìn)入 STOP/STANDBY/STUTDOWN 模式 后,HSE 會(huì)被關(guān)掉,這樣系統(tǒng)就無法進(jìn)入 STOP/STANDBY/STUTDOWN 模式,導(dǎo)致系 統(tǒng)功耗會(huì)更高。另外 HSE 可能沒那么穩(wěn)定,可能需要校準(zhǔn),從而可能導(dǎo)致 STM32WB RF Wakeup 時(shí)鐘不穩(wěn),也影響 BLE stack 運(yùn)行,導(dǎo)致 BLE 工作不穩(wěn)。
在需要 BLE 使能時(shí),什么情況下可考慮不使用 LSE?
在以下情況下,還需要使能 BLE 并進(jìn)行開發(fā),調(diào)試時(shí)可配置 STM32WB 使用 HSE 做 RF Wakeup 和 RTC 的時(shí)鐘源。
1.設(shè)計(jì)時(shí),遺漏 LSE,但是樣機(jī)已做好
2.生產(chǎn)了樣機(jī),忘記貼 LSE 了
3. 生產(chǎn)了樣機(jī),LSE 不匹配,暫時(shí)可去掉
4.環(huán)境或應(yīng)用使用某些 GPIO(PC13) 影響 LSE,導(dǎo)致 LSE 時(shí)鐘異常或不穩(wěn)
5. 不關(guān)心功耗,系統(tǒng)不需要進(jìn)入低功耗
3. 如何配置 HSE 作為 RF Wakeup 和 RTC 的時(shí)鐘源?
本 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。
3.3 失能 LPM 配置 RTC 預(yù)分頻
在 Pinout Configuration => Middleware => STM32_WPAN =>Configuration=>
Generic parameters=>CFG_LPM_SUPPORT=>Disabled,失能低功耗 LPM,系統(tǒng)會(huì) 保持在 RUN 模式
Applicationparameters=>CFG_RTC_ASYNCH_PRESCALER=>127
Applicationparameters=>CFG_RTC_SYNCH_PRESCALER =>7812
其實(shí),生成代碼后在 CoreIncapp_conf.h 中,如果使能了 CFG_DEBUG_BLE_TRACE 或 CFG_DEBUG_APP_TRACE,會(huì)自動(dòng)的失能 CFG_LPM_SUPPORTED。
3.4配置 RTC 和 LSE 的時(shí)鐘源為 HSE
在 Clock Configuration 中,修改 RTC/LCD Source Mux 的時(shí)鐘源為 HSE_RTC;修改 RFWKP Source Mux 的時(shí)鐘源為 HSE。
3.5重生代碼
點(diǎn)擊【GENERATE CODE】重新生成代碼,用相應(yīng)的 IDE 打開工程。
3.6使能 BLE_LSE 校準(zhǔn)
打開 CoreIncapp_conf.h,修改 CFG_BLE_LSE_SOURCE,使能 SHCI_C2_BLE_INIT_CFG_BLE_LSE_CALIB,如下
3.7修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS
打開 CoreIncapp_conf.h,修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS, 如下
3.8檢查 RF 喚醒時(shí)鐘源為 HSE
在 CoreSrcmain.c 的 PeriphCommonClock_Config 函數(shù)中檢查確認(rèn)RFWakeUpClockSelection配置為RCC_RFWKPCLKSOURCE_HSE_DIV1024 。
3.9檢查 RTC 時(shí)鐘源為 HSE
在 CoreSrc stm32wbxx_hal_msp.c 的 HAL_RTC_MspInit 函數(shù)中檢查確認(rèn) RTCClockSelection 配置為 RCC_RTCCLKSOURCE_HSE_DIV32。
3.10驗(yàn)證
重新編譯工程,并下載到 STM32WB 中,此時(shí) STM32WB 不再使用 LSE 了。使用 ST BLE Sensor 手機(jī) app,搜索 STM32WB,并連接進(jìn)行測(cè)試。
來源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
LSE
+關(guān)注
關(guān)注
0文章
10瀏覽量
10253 -
BLE
+關(guān)注
關(guān)注
12文章
660瀏覽量
59413
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論