1. 問(wèn)題描述
客戶調(diào)試STM32WLE5JB 樣機(jī)的時(shí)候遇到這樣一個(gè)問(wèn)題:在調(diào)試LPUART,不打開外部時(shí)鐘的時(shí)候,能夠正常打印,若開啟外部的HSE 和LSE 后就沒(méi)有打印。
2.問(wèn)題確認(rèn)
發(fā)現(xiàn)上述問(wèn)題時(shí),客戶使用STM32CubeMX 生成的工程,所以首先建議客戶檢查L(zhǎng)PUART 的時(shí)鐘配置有沒(méi)問(wèn)題,并且讓客戶嘗試使用STM32Cube_FW_WL_V1.2.0ProjectsNUCLEOWL55JCExamplesUARTLPUART_WakeUpFromStop 例程對(duì)比驗(yàn)證。后來(lái)客戶發(fā)現(xiàn)是開啟外部時(shí)鐘HSE 和LSE 后,程序直接卡死在HAL_RCC_OscConfig ,測(cè)量不到HSE 的32MHZ 信號(hào)。而客戶的程序移植到ST 官方的STM32WL NUCLEO 板上可以正常運(yùn)行。通過(guò)前面的驗(yàn)證很容易懷疑是不是客戶樣機(jī)外部HSE 32MHZ 的晶振沒(méi)有起振。拿到客戶的樣機(jī)后,嘗試更換32MHZ 晶振,調(diào)整晶振負(fù)載電容和使用TCXO,發(fā)現(xiàn)都沒(méi)辦法測(cè)量到32MHZ 信號(hào),客戶程序依舊卡死在HAL_RCC_OscConfig.
3. 問(wèn)題分析
由于前面都是用客戶的電腦和程序調(diào)試,客戶的電腦上的Keil 版本不能單步調(diào)試。針對(duì)客戶的問(wèn)題,基于STM32WL AT slave 例程,運(yùn)行在客戶樣機(jī)上發(fā)現(xiàn)現(xiàn)象一致,也是卡死在HAL_RCC_OscConfig 。但使用單步調(diào)試進(jìn)入HAL_RCC_OscCongig 里面發(fā)現(xiàn),卡死具體的原因不是HSE,而是LSE 初始化出了問(wèn)題,一直在等待LES ready 的信號(hào)。具體代碼如下:
針對(duì)上面的分析,把RTC時(shí)鐘源更改為HSE_RTC,如下圖一,圖二, AT slave例程可以正常運(yùn)行,32MHZ晶振可以起振,使用AT指令可以測(cè)量出RF有正常發(fā)射出信號(hào)。
圖一
圖二
同時(shí),對(duì)于客戶需要使用LPUART,可以按照?qǐng)D三的時(shí)鐘配置驗(yàn)證:
圖三
客戶用他們手上樣機(jī)同步驗(yàn)證,發(fā)現(xiàn)結(jié)果一致。確實(shí)不使用LSE后,樣機(jī)可以正常工作,32MHZ晶振也可以正常起振。下一步就要分析導(dǎo)致LSE無(wú)法正常工作的原因??蛻粲邪唇ㄗh嘗試更換32.768KHZ的晶振以及負(fù)載。并且調(diào)整LSEDRIVE為high 即__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH),發(fā)現(xiàn)依然無(wú)法正常使用LSE。
4.問(wèn)題解決
針對(duì)LSE無(wú)法起振問(wèn)題,嘗試了上面針對(duì)硬件和軟件多種方法后依然沒(méi)有解決。后來(lái)仔細(xì)檢查客戶原理圖發(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ī)格書要求,去掉客戶樣機(jī)上的R34 1M電阻,32.768KHz 晶振就可以正常起振,程序不會(huì)再卡死在LSE初始化。問(wèn)題得到解決。
另外,根據(jù)AN2867 關(guān)于STM32MCU晶振的參考設(shè)計(jì)要求,從客戶晶振規(guī)格書查到下面參數(shù):
ESR=90K 歐姆
CL = 12.5pF
C0 = 1.3pF
計(jì)算得到跨導(dǎo):gmcrit=2.9032uA/V
可以看到跨導(dǎo)大于STM32WLE5JBI6規(guī)格書中LSE最大驅(qū)動(dòng)能力2.7uA/V,如圖六示:顯然增益裕量不符合起振條件即Gainmargin>5
圖六
所以最后也建議客戶后續(xù)更換符合STM32WL規(guī)格書要求的32.768KHZ 晶振。具體晶振選型可以參考AN2867。
5.小結(jié)
本篇筆記分析了客戶使用外部時(shí)鐘調(diào)試STM32WL LPUART無(wú)法正常工作的問(wèn)題。最后分析出問(wèn)題是由LSE的32.768KHZ晶振沒(méi)有正常起振引起。而32.768KHZ晶振無(wú)法正常起振則是因?yàn)榭蛻粼?2.768KHZ晶振上添加了1M的反饋電阻。雖然在AN2867里有對(duì)STM32晶振使用反饋電阻的建議,但需要注意的是針對(duì)STM32WL這顆芯片,其規(guī)格書中有明確要求禁止在32.768KHz 晶振的OSC32_IN 和OSC32_OUT引腳中間添加反饋電阻。后面將客戶樣機(jī)上的1M的反饋電阻去掉后,樣機(jī)的32.768KHz 晶振可以正常起振,程序運(yùn)行正常。雖然最后客戶樣機(jī)使用晶振可以正常起振,但根據(jù)AN2867,客戶晶振的增益裕量是不符合起振條件的。所以為了避免后續(xù)產(chǎn)品量產(chǎn)時(shí)出現(xiàn)低速晶振無(wú)法起振問(wèn)題,建議客戶參考AN2867選擇合適的32.768KHz 晶振。
來(lái)源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
電阻
+關(guān)注
關(guān)注
86文章
5514瀏覽量
172041 -
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356042 -
LSE
+關(guān)注
關(guān)注
0文章
10瀏覽量
10253
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論