1、用戶代碼對Flash的誤操作不當(dāng)引起程序丟失或被錯(cuò)誤改寫
例如,在有對Flash寫入或擦除操作的代碼中,如果用戶誤調(diào)用了寫入或擦除函數(shù)或者由于程序跑飛而恰好執(zhí)行了Flash擦除或?qū)懭牒瘮?shù),這自然會(huì)導(dǎo)致數(shù)據(jù)丟失或改變。針對以上情況,可以在程序中設(shè)置多個(gè)允許操作的變量,當(dāng)執(zhí)行寫入或擦除操作時(shí),對這些變量進(jìn)行判斷,只有條件全部滿足時(shí),才執(zhí)行相應(yīng)的操作。
在一些不需要進(jìn)行擦除或?qū)懭氩僮鞯南到y(tǒng)中,對存儲(chǔ)區(qū)進(jìn)行寫保護(hù)或擦除保護(hù)設(shè)置,能有效的防止數(shù)據(jù)被意外修改。做到了寫入或擦除的可控性,基本可以避免此種情況發(fā)生。
圖1 Flash保護(hù)
2、電源失效
圖2 電源噪聲嚴(yán)重
電源電壓的異常可能會(huì)導(dǎo)致系統(tǒng)單片機(jī)系統(tǒng)工作異常的現(xiàn)象,如輸出電壓小于單片機(jī)系統(tǒng)工作所需的最小電壓,輸出電壓不干凈,噪音嚴(yán)重等,這些很容易引起單片機(jī)內(nèi)部電路的邏輯紊亂,F(xiàn)lash的讀寫信號處于不穩(wěn)定狀態(tài)。可能產(chǎn)生滿足Flash的寫操作,從而給系統(tǒng)帶來嚴(yán)重的損害。針對以上情況,可以在系統(tǒng)中加入電源監(jiān)控芯片或使能MCU本身的電源監(jiān)控電路,在電源異常的情況下禁止對Flash區(qū)域操作。
3、系統(tǒng)時(shí)鐘不穩(wěn)定
無論對于內(nèi)部Flash還是外部Flash,系統(tǒng)時(shí)鐘的不穩(wěn)定,都將導(dǎo)致MCU得不到可靠的工作時(shí)序信號,從而在讀寫Flash時(shí)產(chǎn)生不可預(yù)料的后果。
4、環(huán)境干擾
環(huán)境干擾的可能原因很多,如生產(chǎn)過程中的高溫焊接、靜電、使用環(huán)境的溫濕度,強(qiáng)磁場等,都可能影響到Flash或整個(gè)系統(tǒng)的穩(wěn)定。環(huán)境干擾的因素很多,在此不展開討論。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44979瀏覽量
650258 -
FlaSh
+關(guān)注
關(guān)注
10文章
1677瀏覽量
151737 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4379瀏覽量
64817
發(fā)布評論請先 登錄
請問28035的LIN模塊有詳細(xì)說明嗎
Flash數(shù)據(jù)丟失的原因

51單片機(jī)的頭文件有哪些代碼詳細(xì)說明

使用SQL語句創(chuàng)建數(shù)據(jù)庫的實(shí)例詳細(xì)說明
提高LabVIEW開發(fā)速度的方法有哪些25個(gè)技巧詳細(xì)說明

Altium Designer版本14.2的發(fā)行說明詳細(xì)說明

常用小型穩(wěn)壓LDO等芯片有哪些詳細(xì)說明
如何使用串口工具連接OneNET上報(bào)數(shù)據(jù)AT命令流程的代碼詳細(xì)說明

汽車構(gòu)造ECU的硬件設(shè)計(jì)詳細(xì)說明

如何使用Python繪制PDF文件教程詳細(xì)說明

評論