1. 問題描述
客戶調(diào)試STM32WLE5JB 樣機的時候遇到這樣一個問題:在調(diào)試LPUART,不打開外部時鐘的時候,能夠正常打印,若開啟外部的HSE 和LSE 后就沒有打印。
2. 問題確認(rèn)
發(fā)現(xiàn)上述問題時,客戶使用STM32CubeMX 生成的工程,所以首先建議客戶檢查LPUART 的時鐘配置有沒問題,并且讓客戶嘗試使用STM32Cube_FW_WL_V1.2.0\Projects\NUCLEOWL55JC\Examples\UART\LPUART_WakeUpFromStop 例程對比驗證。后來客戶發(fā)現(xiàn)是開啟外部時鐘HSE 和LSE 后,程序直接卡死在HAL_RCC_OscConfig ,測量不到HSE 的32MHZ 信號。而客戶的程序移植到ST 官方的STM32WL NUCLEO 板上可以正常運行。通過前面的驗證很容易懷疑是不是客戶樣機外部HSE 32MHZ 的晶振沒有起振。拿到客戶的樣機后,嘗試更換32MHZ 晶振,調(diào)整晶振負載電容和使用TCXO,發(fā)現(xiàn)都沒辦法測量到32MHZ 信號,客戶程序依舊卡死在HAL_RCC_OscConfig.
3. 問題分析
由于前面都是用客戶的電腦和程序調(diào)試,客戶的電腦上的Keil 版本不能單步調(diào)試。針對客戶的問題,基于STM32WL AT slave 例程,運行在客戶樣機上發(fā)現(xiàn)現(xiàn)象一致,也是卡死在HAL_RCC_OscConfig 。但使用單步調(diào)試進入HAL_RCC_OscCongig 里面發(fā)現(xiàn),卡死具體的原因不是HSE,而是LSE 初始化出了問題,一直在等待LES ready 的信號。具體代碼如下:
針對上面的分析,把RTC時鐘源更改為HSE_RTC,如下圖一,圖二, AT slave例程可以正常運行,32MHZ晶振可以起振,使用AT指令可以測量出RF有正常發(fā)射出信號。
圖一
圖二
同時,對于客戶需要使用LPUART,可以按照圖三的時鐘配置驗證:
圖三
客戶用他們手上樣機同步驗證,發(fā)現(xiàn)結(jié)果一致。確實不使用LSE后,樣機可以正常工作,32MHZ晶振也可以正常起振。下一步就要分析導(dǎo)致LSE無法正常工作的原因。客戶有按建議嘗試更換32.768KHZ的晶振以及負載。并且調(diào)整LSEDRIVE為high 即__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH),發(fā)現(xiàn)依然無法正常使用LSE。
4.問題解決
針對LSE無法起振問題,嘗試了上面針對硬件和軟件多種方法后依然沒有解決。后來仔細檢查客戶原理圖發(fā)現(xiàn),客戶在32.768KHZ晶振上添加了1M的反饋電阻,如圖四R34
圖四
而在STM32WL 規(guī)格書 DS13105 Multiprotocol LPWAN 32-bit Arm Cortex-M4 MCUs, LoRa, (G)FSK, (G)MSK, BPSK, up to 256KB Flash, 64KB SRAM (version 8)中明確表示禁止在32.768KHz 晶振的OSC32_IN 和OSC32_OUT引腳中間添加反饋電阻。如下圖五:
圖五
后面按規(guī)格書要求,去掉客戶樣機上的R34 1M電阻,32.768KHz 晶振就可以正常起振,程序不會再卡死在LSE初始化。問題得到解決。
另外,根據(jù)AN2867 關(guān)于STM32MCU晶振的參考設(shè)計要求,從客戶晶振規(guī)格書查到下面參數(shù):
ESR=90K 歐姆
CL = 12.5pF
C0 = 1.3pF
計算得到跨導(dǎo):gmcrit=2.9032uA/V
可以看到跨導(dǎo)大于STM32WLE5JBI6規(guī)格書中LSE最大驅(qū)動能力2.7uA/V,如圖六示:顯然增益裕量不符合起振條件即Gainmargin>5
圖六
所以最后也建議客戶后續(xù)更換符合STM32WL規(guī)格書要求的32.768KHZ 晶振。具體晶振選型可以參考AN2867。
5.小結(jié)
本篇筆記分析了客戶使用外部時鐘調(diào)試STM32WL LPUART無法正常工作的問題。最后分析出問題是由LSE的32.768KHZ晶振沒有正常起振引起。而32.768KHZ晶振無法正常起振則是因為客戶在32.768KHZ晶振上添加了1M的反饋電阻。雖然在AN2867里有對STM32晶振使用反饋電阻的建議,但需要注意的是針對STM32WL這顆芯片,其規(guī)格書中有明確要求禁止在32.768KHz 晶振的OSC32_IN 和OSC32_OUT引腳中間添加反饋電阻。后面將客戶樣機上的1M的反饋電阻去掉后,樣機的32.768KHz 晶振可以正常起振,程序運行正常。雖然最后客戶樣機使用晶振可以正常起振,但根據(jù)AN2867,客戶晶振的增益裕量是不符合起振條件的。所以為了避免后續(xù)產(chǎn)品量產(chǎn)時出現(xiàn)低速晶振無法起振問題,建議客戶參考AN2867選擇合適的32.768KHz 晶振。
審核編輯:劉清
-
STM32
+關(guān)注
關(guān)注
2270文章
10896瀏覽量
355766 -
RCC
+關(guān)注
關(guān)注
0文章
93瀏覽量
26933 -
HSE
+關(guān)注
關(guān)注
0文章
17瀏覽量
9456 -
負載電容
+關(guān)注
關(guān)注
0文章
138瀏覽量
10438 -
反饋電阻器
+關(guān)注
關(guān)注
1文章
43瀏覽量
5228
原文標(biāo)題:關(guān)于STM32WL LSE 添加反饋電阻后無法起振問題
文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論