問(wèn)題描述
客戶(hù)反饋STM32F030作為他們產(chǎn)品的控制芯片,在常溫下工作是正常的,但是稍微冷凍下就會(huì)啟動(dòng)失敗,重現(xiàn)率100%,再次加熱或者恢復(fù)到常溫又能正常工作。
此問(wèn)題已經(jīng)困擾了客戶(hù)四五年,一直沒(méi)有頭緒,每次都更換一塊芯片就好了,因?yàn)榭蛻?hù)自己也知道,換芯片時(shí)會(huì)將其吹下來(lái),必定會(huì)加熱芯片,這樣MCU也就能恢復(fù)正常了。但這種辦法終究不是解決方法,客戶(hù)急切想找到原因并解決問(wèn)題。
分析問(wèn)題與解決
從客戶(hù)描述上來(lái)看,猜測(cè)很大可能是硬件問(wèn)題,因此帶了一塊STM32F030-NUCLEO板過(guò)去,想著做個(gè)芯片交換測(cè)試看下結(jié)果。
到達(dá)客戶(hù)現(xiàn)場(chǎng),了解到客戶(hù)只是使用了內(nèi)部高速晶振HSI。先使用示波器抓下VDD和NRST的啟動(dòng)波形,在常溫下發(fā)現(xiàn)并沒(méi)有明顯異常。于是做低溫測(cè)試,為了對(duì)比,基于STM32F030-NUCLEO板了寫(xiě)了一個(gè)只使用內(nèi)部高速晶振HSI , 翻轉(zhuǎn)一個(gè)LED燈的程序。
結(jié)果顯示,STM32F030-NUCLEO板能正常啟動(dòng),而客戶(hù)的板子問(wèn)題重現(xiàn),再次測(cè)量其VDD和NRST的啟動(dòng)波形,發(fā)現(xiàn)VDD上電過(guò)程中有稍微不規(guī)則波形,但感覺(jué)不至于導(dǎo)致MCU無(wú)法啟動(dòng)??紤]到當(dāng)前客戶(hù)板子上的MCU跑的是客戶(hù)自己的程序,為了統(tǒng)一對(duì)比,將客戶(hù)板子上的MCU燒錄成NUCELO板上一樣的程序,再次做低溫測(cè)試,結(jié)果顯示客戶(hù)的板子也能正常啟動(dòng)!
于是可以初步斷定,此問(wèn)題與客戶(hù)自己的軟件有關(guān),而與外圍電路無(wú)關(guān)。
接下來(lái)對(duì)比測(cè)試代碼與客戶(hù)自己的代碼,并再次做低溫測(cè)試驗(yàn)證結(jié)果,最終發(fā)現(xiàn)客戶(hù)的時(shí)鐘樹(shù)配置有個(gè)參數(shù)有問(wèn)題:
Figure 1
如上紅色代碼所示,
RCC_OSCILLATORTYPE_NONE
改成RCC_OSCILLATORTYPE_HSI后,
問(wèn)題現(xiàn)象明顯改善,但經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)偶爾還會(huì)啟動(dòng)不正常的時(shí)候。但相對(duì)于之前100%可以重現(xiàn)的現(xiàn)象,至少說(shuō)明之前軟件的失誤至少是一個(gè)因素。
現(xiàn)在問(wèn)題變成偶爾重現(xiàn),已經(jīng)向前邁進(jìn)一大步。接下來(lái)懷疑與硬件有關(guān)了,理由是同樣的測(cè)試軟件跑在用戶(hù)的板子上和跑在NUCELO軟件上的結(jié)果不一致。
因此接下來(lái)首先對(duì)于用戶(hù)的板子的外圍電路與STM32F030-NUCLEO板子的外圍電路,發(fā)現(xiàn)客戶(hù)MCU的BOOT0引腳是懸空的,于是加上一個(gè)外部10K下拉電路,再次測(cè)試問(wèn)題不再重現(xiàn)。
至此,問(wèn)題解決!
后話(huà)
回過(guò)頭來(lái)看這個(gè)問(wèn)題,發(fā)現(xiàn)客戶(hù)知道MCU使用的是HSI,可偏偏在代碼中配置時(shí)鐘樹(shù)時(shí)使用的晶振類(lèi)型卻是NONE !這種問(wèn)題現(xiàn)在看來(lái)是非常低級(jí)的問(wèn)題,但在代碼量大,或者代碼迭代的過(guò)程中,之前寫(xiě)代碼的人離職,后續(xù)接手的工程師又不能全盤(pán)了解所有代碼的情況下時(shí)就會(huì)變成非常束手無(wú)策,當(dāng)碰到此類(lèi)莫名其妙的問(wèn)題,特別是無(wú)法判斷到底是硬件問(wèn)題還是軟件問(wèn)題的時(shí)候,保持清晰的思路是非常重要的。
這里我需要強(qiáng)調(diào)的是,最有效的解決方法就是快速找到一個(gè) “參照物”,而ST的DEMO板和示例代碼就是在硬件上和軟件上扮演這樣一個(gè)參照物的角色??梢酝ㄟ^(guò)MCU交換測(cè)試來(lái)判斷是不是芯片外圍電路的問(wèn)題或者芯片問(wèn)題,可以使用Cube庫(kù)下的示例代碼,對(duì)比其運(yùn)行結(jié)果來(lái)判斷是否與軟件有關(guān)。先從大方向明確問(wèn)題到底是與硬件有關(guān)還是與軟件有關(guān),然后再做下一步分析,這種方法希望讀者能有效掌握。
來(lái)源: STM32單片機(jī)
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
147文章
18375瀏覽量
378683 -
示波器
+關(guān)注
關(guān)注
113文章
6874瀏覽量
193064 -
led燈
+關(guān)注
關(guān)注
22文章
1602瀏覽量
110702 -
晶振
+關(guān)注
關(guān)注
35文章
3384瀏覽量
71934
發(fā)布評(píng)論請(qǐng)先 登錄
STM32常見(jiàn)問(wèn)題:低溫下部分產(chǎn)品RTC不工作的問(wèn)題探析
連續(xù)開(kāi)機(jī)半年死機(jī),STM32F030使用內(nèi)部晶體,現(xiàn)在冬天出現(xiàn)...
STM32F030低溫下RTC不工作怎么解決
STM32F030數(shù)據(jù)手冊(cè)
STM32F030的定時(shí)器PWM使用設(shè)置與ADC的dma代碼
STM32F030的終結(jié)者HC32F030 橫空出世
STM32F030新建工程模板資料免費(fèi)下載

STM32F030系列微控制器的數(shù)據(jù)手冊(cè)免費(fèi)下載

如何建一個(gè)STM32F030工程模板(標(biāo)準(zhǔn)庫(kù)版)

解決LAT1015_STM32F030在低溫下無(wú)法啟動(dòng)的問(wèn)題
stm32f030系列時(shí)鐘介紹

STM32F030在低溫下無(wú)法啟動(dòng)

評(píng)論