找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 39975|回復(fù): 23
收起左側(cè)

STM單片機(jī)很容易受干擾而程序丟失-一個(gè)MCU應(yīng)用異常的案例分享

  [復(fù)制鏈接]
ID:98618 發(fā)表于 2015-12-19 16:24 | 顯示全部樓層 |閱讀模式
本文作者:Miler Shao
,有個(gè)客戶跟我電話,他在用STMCU開發(fā)車載產(chǎn)品,STM32STM8都有用。STM32芯片用在他的多路控制板上,STM8S105用在另外顯示面板上。多路控制板上的STM32與顯示板上的STM8S105進(jìn)行UART通訊,電源由從多路控制板這邊送過去,兩塊板之間用了根近2米的普通信號(hào)連接線作供電和UART信號(hào)傳送。STM8S105 的供電電壓為5V。


客戶反映他的產(chǎn)品已經(jīng)生產(chǎn)1000多套,小批量送樣出去。他的客戶反映產(chǎn)品的STM8S105很容易受干擾而程序丟失。他拿到退貨后如果重新燒錄又能正常工作。


因其進(jìn)度緊,相約于一晚上見面繼續(xù)了解情況,探討問題原因。

見面后他進(jìn)一步反映,每次STM8S105頭次燒錄后能正常工作,如果無外來干擾,也能保持正常狀態(tài)。但如果STM8s105這端的顯示板受到外來干擾,比方電源波動(dòng)[其實(shí)不一定限于電源波動(dòng),只是找了這么個(gè)簡單而有效的比較粗暴的辦法,他們用手指在多路控制板端的電源供電線路的器件上一派亂摸,導(dǎo)致給顯示板的供電異常波動(dòng)]后,STM8S105工作異常屬實(shí)。斷電后再上電也不能恢復(fù)正常,即使多次掉電上電也無濟(jì)于事。的確很有點(diǎn)像程序丟失的味道。


連上STLINK,打開STVP查看程序[客戶之前沒有做讀保護(hù)],讀出后進(jìn)一步跟原始燒錄文件比對(duì),一模一樣。說明程序并未丟失。既然程序沒有丟,而STM8S105顯示板受干擾導(dǎo)致功能異常后即使斷電再上電都沒法回歸正常。難道芯片在電源波動(dòng)干擾時(shí)壞了?


檢測(cè)STM8S105VCAP腳電源,1.8v,內(nèi)核供電穩(wěn)穩(wěn)的。其復(fù)位電路為10K104電容,參數(shù)沒什么異常。測(cè)試RST復(fù)位腳電平,結(jié)果是2.5v,顯然不正常,正常應(yīng)該是5v。因?yàn)樗f產(chǎn)品都測(cè)試過了,小批量出貨。首先比較懷疑電源劇烈波動(dòng)時(shí)個(gè)別器件或STM8s105出了故障,還有那根近兩米的電源傳輸纜線讓電源波動(dòng)時(shí)的情況變得更為復(fù)雜。


當(dāng)晚作罷,建議其第二天做電源線路的自行檢查,外圍器件和STM8S105芯片的更換比對(duì)測(cè)試。


第二天上午客戶反饋,他把所謂的壞板的復(fù)位電路處的那個(gè)外接電阻從10K更換為110歐就正常工作了。聽后一驚,覺得沒道理。但人家說行,就只好先建議他多測(cè)試下,然后自己心里繼續(xù)思考到底怎么回事。


到了下午客戶反饋回來,說按上午的接法是比之前穩(wěn)定多了,當(dāng)用手摸供電模塊時(shí)還是會(huì)出狀況。要命的是,當(dāng)他在110歐的條件下更換MCU芯片做燒錄時(shí)幾乎沒法正常燒錄。這是跟之前接10K時(shí)是不一樣的新狀況。說明他隨手更換為110歐并不靠譜,也沒理論支撐。當(dāng)時(shí)他更換后感覺好些了,并非真的穩(wěn)定好了。


記得前一天晚上我隨便掃了幾眼他的源代碼,不復(fù)雜。他使用外部晶體做時(shí)鐘源,UART通信和部分GPIO及顯示控制。不過,經(jīng)過近2天我對(duì)該客戶的接觸,感覺他因?yàn)樘?duì)整個(gè)開發(fā)沒花什么心思,代碼是基于ST庫代碼修改而來,基本沒時(shí)間做太多研究。


鑒于此,想到他使用外部時(shí)鐘,需要他做代碼配置。突然懷疑會(huì)不會(huì)是他的時(shí)鐘配置出了問題,而且如果時(shí)鐘配置出了問題,比如超頻了,那上面的那些奇怪現(xiàn)象就不難理解了。想到這里,我電話他屏蔽跟HSE時(shí)鐘配置有關(guān)的所有代碼,使用系統(tǒng)默認(rèn)HSI做主時(shí)鐘。


功夫不負(fù)有心人,還真是他在利用HSE進(jìn)行時(shí)鐘配置的地方出了問題。改用HSI后,復(fù)位線路回歸正常接法。他們繼續(xù)用手去觸摸電源供電線路的器件會(huì)讓STM8S105產(chǎn)生復(fù)位,但復(fù)位后能回歸正常運(yùn)行狀態(tài)。不像之前受干擾后就回不去了。之前被懷疑因?yàn)殡娫串惓2▌?dòng)可能致?lián)p的芯片都能正常工作了。


看到這里會(huì)有人好奇,他為什么會(huì)想到把那個(gè)RC中的電阻改為110呢?這點(diǎn)出乎我意料,呵呵。因?yàn)轭^天晚上我測(cè)試異常板的復(fù)位腳電平時(shí)發(fā)現(xiàn)電平才2.5V,不正常。沒想到他第二天為了想把RST腳電平湊到接近VDD,他就不停減小電阻直到復(fù)位腳電平接近5V。當(dāng)然湊巧的時(shí)是,此時(shí)功能還真有改善,這更加讓他自信這個(gè)動(dòng)作的合理性了。


當(dāng)然還有個(gè)原因,后來他告訴這個(gè)問題也拖了幾個(gè)月了一直沒找到原因,病急亂投醫(yī)也可以理解。這種情況在產(chǎn)品開發(fā)過程中也較普遍,在時(shí)間進(jìn)度緊急時(shí)先應(yīng)付了再說。


這里或許有人覺得疑惑,既然他MCU內(nèi)部時(shí)鐘配置錯(cuò)誤了,為什么第一次燒錄后能妥妥地的工作,還可以給客戶送樣,直到受到外在干擾時(shí)才出現(xiàn)異常呢?第一次燒錄后的代碼和受干擾再次上電的代碼并無差別。這點(diǎn)我也迷惑不解,有知道的歡迎留言交流。


但可以肯定的是,他的超頻時(shí)鐘問題代碼總歸是讓芯片工作在技術(shù)手冊(cè)參數(shù)約定之外的不可靠無保障的狀態(tài)。即使某種條件下的正常運(yùn)行也不能視為真正的正常狀態(tài),就像個(gè)醉漢個(gè)別的正確言行并不代表他的言行可靠一樣,因?yàn)楸旧砭褪浅鲇谝环N不靠譜狀態(tài)。


應(yīng)該說事情并不復(fù)雜,但往往由于客戶在出現(xiàn)狀況時(shí)不夠冷靜淡定去找原因,往往急于片面下結(jié)論而使得自己的項(xiàng)目進(jìn)展緩慢;或者無意地把誤判信息再傳達(dá)給別人而讓事情復(fù)雜化或玄奧化,類似情況可謂不勝枚舉。


比方說,前些天有個(gè)工程師問我,說某STM32 芯片的某管腳怎么不聽使喚,奇怪納悶,問是否有特別之處。我查看手冊(cè),該管腳跟別的絕大部分GPIO并無特性上的差異,讓其繼續(xù)檢查。后來發(fā)現(xiàn)是代碼在兩處作了不一致的配置。再說個(gè)實(shí)例,也是幾天前有個(gè)工程師反映說在SWIM燒錄時(shí),只要配置了某管腳輸出時(shí)就沒法燒錄。咋聽起來兩個(gè)東西應(yīng)該是不著邊際,讓其檢查該腳控制了些什么。后來發(fā)現(xiàn)該腳控制了某個(gè)電源開關(guān)管,它的通斷直接影響到MCU的供電。


套用一句類似評(píng)價(jià)家庭幸福的話來結(jié)尾,正常產(chǎn)品的結(jié)果是一致的,異常產(chǎn)品的癥狀和原因是五花八門的。

評(píng)分

參與人數(shù) 2黑幣 +17 收起 理由
wj1994 + 5 很給力!
YJGG + 12 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:58310 發(fā)表于 2016-2-27 13:18 | 顯示全部樓層
受益匪淺。
我在這里也補(bǔ)充點(diǎn),
我使用的是STM8S003F3。 在RX這塊加一個(gè)上拉電阻也能消除一定的干擾。
回復(fù)

使用道具 舉報(bào)

ID:150064 發(fā)表于 2016-11-25 09:53 | 顯示全部樓層
受益匪淺。
我使用的是stm32f103c8t6,剛開始用幾個(gè)月都沒問題,最近幾個(gè)月也出現(xiàn)程序丟失的情況,還沒找到原因。謝謝樓主分享,受益良多.
回復(fù)

使用道具 舉報(bào)

ID:164100 發(fā)表于 2017-2-10 09:55 | 顯示全部樓層
最近幾天老化測(cè)試產(chǎn)品時(shí),我也發(fā)現(xiàn)丟失程序的問題了。用的STM8S207,生產(chǎn)出貨大半年了。初步認(rèn)為是買到散新貨,IC質(zhì)量差。
回復(fù)

使用道具 舉報(bào)

ID:136256 發(fā)表于 2017-3-19 23:58 | 顯示全部樓層
偶爾進(jìn)來的,看完后,倒是滿載而歸,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

ID:176767 發(fā)表于 2017-3-21 14:03 | 顯示全部樓層
學(xué)習(xí)了  有時(shí)間請(qǐng)教下么   PIC單片機(jī)的程序丟失也是這個(gè)原因么
回復(fù)

使用道具 舉報(bào)

ID:98591 發(fā)表于 2017-3-24 02:10 | 顯示全部樓層
看標(biāo)題好可怕,打算8s003做電源驅(qū)動(dòng)呢,看完原來是代碼問題
回復(fù)

使用道具 舉報(bào)

ID:66396 發(fā)表于 2017-7-11 10:43 | 顯示全部樓層
我用的也是STM8。也出現(xiàn)上面的狀況?墒俏乙呀(jīng)在了等待。HSE是24M的。數(shù)據(jù)表上顯示最大24M也是可以用的啊
回復(fù)

使用道具 舉報(bào)

ID:221051 發(fā)表于 2017-7-23 11:51 | 顯示全部樓層
謝謝,很實(shí)在的經(jīng)驗(yàn)分享,對(duì)我很有幫助!
回復(fù)

使用道具 舉報(bào)

ID:283221 發(fā)表于 2018-2-9 00:26 | 顯示全部樓層
我也遇到過這樣的情況,有一款用STM8S003F3做的車載儀表,部分三包品不開機(jī),重新燒一下程序就OK了。但是這個(gè)板子用的是內(nèi)部時(shí)鐘,可以確定的是肯定與干擾有關(guān),具體原因沒有查到。
回復(fù)

使用道具 舉報(bào)

ID:650619 發(fā)表于 2019-11-27 10:43 | 顯示全部樓層
您好,請(qǐng)問用散新芯片會(huì)引起程序丟失嗎?
回復(fù)

使用道具 舉報(bào)

ID:650619 發(fā)表于 2019-11-27 11:15 | 顯示全部樓層
散新的芯片會(huì)引起程序丟失嗎?
回復(fù)

使用道具 舉報(bào)

ID:646188 發(fā)表于 2020-12-31 17:54 | 顯示全部樓層
謝謝分享,這種問題很難發(fā)現(xiàn)。病急亂投醫(yī)是不可取的,做一些沒有道理的騷操作要能成功那就怪了。
回復(fù)

使用道具 舉報(bào)

ID:830831 發(fā)表于 2021-1-1 10:43 | 顯示全部樓層
分析的真詳細(xì),謝謝樓主的分享,受益
回復(fù)

使用道具 舉報(bào)

ID:851416 發(fā)表于 2021-1-1 10:54 | 顯示全部樓層
受益匪淺,多多學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

ID:519089 發(fā)表于 2021-7-14 22:05 | 顯示全部樓層
肯定是代碼問題,不用多說,最后也沒給出超頻還能工作的原因分析,,有點(diǎn)不靠譜
回復(fù)

使用道具 舉報(bào)

ID:977059 發(fā)表于 2021-11-12 14:29 | 顯示全部樓層
很使用的解決問題辦法
回復(fù)

使用道具 舉報(bào)

ID:989726 發(fā)表于 2021-12-8 18:25 來自手機(jī) | 顯示全部樓層
我們用S105S4,也遇到這個(gè)問題,一定比例客戶開機(jī)就單片機(jī)不能正常啟動(dòng)了,刷程序也沒用,后面網(wǎng)上找到個(gè)類似案例,說是配置字節(jié)不正常,重新寫下就行了。后來折騰了幾個(gè)月,研發(fā)改了程序就不會(huì)再有了。具體原因不清楚,但好像是某種特殊情況(比如上電瞬間電壓不穩(wěn)定時(shí))程序無意中改寫了配置字節(jié),導(dǎo)致單片機(jī)不能正常復(fù)位,一直在反復(fù)復(fù)位,用示波器能看到復(fù)位腳一直有鋸齒波。
回復(fù)

使用道具 舉報(bào)

ID:92231 發(fā)表于 2021-12-9 08:17 來自手機(jī) | 顯示全部樓層
我是菜鳥,學(xué)習(xí)來的
回復(fù)

使用道具 舉報(bào)

ID:369365 發(fā)表于 2022-7-11 13:15 | 顯示全部樓層
liyuan0607 發(fā)表于 2021-12-8 18:25
我們用S105S4,也遇到這個(gè)問題,一定比例客戶開機(jī)就單片機(jī)不能正常啟動(dòng)了,刷程序也沒用,后面網(wǎng)上找到個(gè)類 ...
類似情況搞了大半年
https://blog.csdn.net/weixin_44407238/article/details/125621935
回復(fù)

使用道具 舉報(bào)

ID:93667 發(fā)表于 2022-7-14 17:05 | 顯示全部樓層
學(xué)習(xí)了。。。!STM32經(jīng)常有小項(xiàng)目,有不穩(wěn)定的問題。。。。。。。。!
回復(fù)

使用道具 舉報(bào)

ID:387591 發(fā)表于 2022-9-2 16:10 | 顯示全部樓層
我的經(jīng)驗(yàn)是如果發(fā)現(xiàn)程序丟失,這是不可以接受的,不論是超頻,還是干擾,還是其他原因。只要程序或者數(shù)據(jù)丟失,我的解決方法就是換片子,不用這個(gè)型號(hào)的芯片了。因?yàn)槟阒荒芨纳疲鵁o法杜絕這類情況,說直白點(diǎn), 你真的無法找到徹底解決問題的辦法,我有個(gè)產(chǎn)品,不丟程序,但是丟片內(nèi)數(shù)據(jù),最后會(huì)白屏,不用燒程序,重新把數(shù)據(jù)輸入又好了。想了無數(shù)方法,懷疑電源,用電池供電,還是會(huì)丟,干擾會(huì)從傳感器,通訊線進(jìn)來。給芯片加單獨(dú)電源,完全隔離,還是會(huì)丟,我反反復(fù)復(fù)搞了10年,都沒有解決。最后下決心換片子,重新設(shè)計(jì),這個(gè)問題就沒有了,當(dāng)時(shí)想得很好,一個(gè)芯片把AD,DA,EPROM都放在里面,減少了原件,故障點(diǎn)就少,產(chǎn)品維修就少,事實(shí)卻不是那樣,片子抗干擾弱,你繞不開,而且一個(gè)系列,改一堆產(chǎn)品,很是頭大。我現(xiàn)在的原則就是,只要發(fā)現(xiàn)丟程序這種故障,肯定換芯片,哪怕我重新開始學(xué)一種全新的芯片,我也不在哪上面花時(shí)間,因?yàn)槟阏娴目赡軣o法最后把這個(gè)產(chǎn)品做穩(wěn)定,這是心臟病
回復(fù)

使用道具 舉報(bào)

ID:1042652 發(fā)表于 2022-9-8 10:13 | 顯示全部樓層
暫未遇到類似問題,不過收益匪淺,為以后問題處理多了一份經(jīng)驗(yàn),感謝樓主的分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表