在基于微控制器的電子系統(tǒng)中,強壯的軟件設(shè)計是提高 EMC 性能的主要因素。必須盡量在項目設(shè)計階段的早期考慮 EMC 干擾導(dǎo)致的問題。EMC 導(dǎo)向的軟件提高了應(yīng)用的安全性和可靠性。強化 EMC 性能的軟件的實施成本低,可提高最終的抗擾性能,并節(jié)約硬件和開發(fā)成本。用戶應(yīng)考慮到模擬或數(shù)字數(shù)據(jù)受到的 EMC 干擾,就像任何其它應(yīng)用參數(shù)一樣。
EMC 干擾導(dǎo)致的問題示例:
微控制器無響應(yīng)
程序計數(shù)器失控
執(zhí)行意外指令
地址指向錯誤
子程序執(zhí)行錯誤
寄生復(fù)位和 / 或寄生中斷
IP 配置損壞
I/O 失靈
軟件故障的后果示例:
產(chǎn)品意外響應(yīng)
上下文丟失
進程中的意外分支
中斷丟失
數(shù)據(jù)完整性缺失
輸入值誤讀
01使用看門狗或時間控制
為了確保 MCU 能夠從軟件失控故障中恢復(fù),看門狗是最有效的可用工具。它的原理非常簡單:它是一個在計數(shù)結(jié)束時產(chǎn)生 MCU復(fù)位的定時器。一旦看門狗啟動,防止看門狗復(fù)位控制器的唯一方式就是在程序中周期性更新計數(shù)器。
但是為了使看門狗發(fā)揮它的最大潛力,用戶必須在軟件中的恰當(dāng)位置插入使能和喂狗指令。
下圖演示了錯誤的看門狗使用方式:
需要執(zhí)行下列規(guī)則:
復(fù)位之后盡快啟用看門狗,或者開啟硬狗選項 (如果有)。
切勿在中斷服務(wù)函數(shù)中或在代碼中沒有超時保護的任何本地環(huán)路中刷新看門狗。 根據(jù)不同程序的持續(xù)時間,包括中斷程序,對兩個刷新指令之間的間隔時間進行優(yōu)化是非常重要的。
看門狗還有一種小用途,即可以使用它來復(fù)位 MCU,但這也意味著程序上下文的丟失,以及應(yīng)用數(shù)據(jù)完整性的丟失。復(fù)位之后,除了啟用看門狗外,在一些 MCU 上,你可以使用復(fù)位標志來區(qū)分上電或低電壓復(fù)位或看門狗復(fù)位。
正確使用看門狗的實例如下圖:
02保護閑置程序存儲區(qū)域
在大多數(shù)應(yīng)用中,程序存儲空間并沒有完全被用戶代碼占滿。為了更強的安全性,如果你不想產(chǎn)生復(fù)位,可以使用代碼填滿閑置存儲位置,這樣會強制看門狗復(fù)位或者跳向已知的程序位置。
即使程序計數(shù)器損壞,并且跳向閑置存儲位置,這都將確保 MCU 恢復(fù)和返回到正常操作。在這個閑置區(qū)域,還可以跳轉(zhuǎn)到恢復(fù)故障安全子程序,通過該子程序可恢復(fù)正常運行。
帶有 ARM Cortex-M 內(nèi)核的 STM32 微控制器使用故障異常,當(dāng)系統(tǒng)遭受 EMC 干擾時,它可以捕獲可能發(fā)生的非法存儲訪問和非法編程行為。未定義的指令操作代碼可以用來填充STM32 微控制器的閑置存儲,在程序計數(shù)器失控的情況下,提高故障異常使用率,使得故障安全程序從錯誤中恢復(fù)。
03輸入過濾和比較
最佳做法是在驗證狀態(tài)和繼續(xù)編程執(zhí)行之前,由程序?qū)斎胍_穩(wěn)定性進行幾次檢查,以避免由輸入電路的外部噪聲造成的不想要的尖峰響應(yīng)。這是一個簡單的對關(guān)鍵輸入濾波的方法,不需要額外的成本。
04閑置中斷向量管理
為了避免意外中斷事件導(dǎo)致的問題 (無論是什么來源),建議在相應(yīng)的向量中加入一個有效的中斷程序地址,以管理所有可能的中斷來源。在下面的示例中,未使用的中斷向量指向故障管理程序標簽,該標簽中填充了簡單的 “ 從中斷返回 ” 指令06
05平均模數(shù)轉(zhuǎn)換器結(jié)果
如果你在執(zhí)行 A/D 轉(zhuǎn)換操作,你可以重復(fù)多次轉(zhuǎn)換,將結(jié)果存儲在 RAM 中,然后取平均值(或者選擇最多出現(xiàn)的值),以在任何可能的噪聲錯誤的情況下獲取準確的結(jié)果。
06冗余數(shù)據(jù)存儲和交換
由于極端條件下的電磁干擾,所有存儲在內(nèi)部或外部存儲器的數(shù)據(jù)都可能損壞。高級的預(yù)防技術(shù)包括將雙倍互補值存儲在非臨近存儲區(qū)域、存儲和檢查奇偶校驗位或 ECC,它們可幫助識別和 / 或修正數(shù)據(jù)損壞。 關(guān)注本公眾號,在后臺回復(fù)【STM32】可以獲取更多相關(guān)設(shè)計的參考電路。
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7953瀏覽量
155138 -
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
367126 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
365081 -
emc
+關(guān)注
關(guān)注
172文章
4168瀏覽量
187032
原文標題:基于STM32 MCU應(yīng)用的EMC指南 之 軟件篇
文章出處:【微信號:精通單片機與嵌入式,微信公眾號:精通單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
華為PCB的EMC設(shè)計指南【可下載】
STM32開發(fā)板教程之STM32開發(fā)指南免費下載
STM32開發(fā)板的開發(fā)指南資料免費下載
STM32學(xué)習(xí)之STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)

STM32開發(fā)指南
AN1709 STM8、STM32和傳統(tǒng)MCU的EMC設(shè)計指南

兆易創(chuàng)新AN062 基于GD32 MCU的EMC應(yīng)用指南
華為PCB的EMC設(shè)計指南

評論