0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32 MCU應(yīng)用的EMC指南之軟件篇

精通單片機(jī)與嵌入式 ? 來(lái)源:玩轉(zhuǎn)單片機(jī)與嵌入式 ? 作者:風(fēng)雨無(wú)阻 ? 2023-01-06 14:41 ? 次閱讀

在基于微控制器電子系統(tǒng)中,強(qiáng)壯的軟件設(shè)計(jì)是提高 EMC 性能的主要因素。必須盡量在項(xiàng)目設(shè)計(jì)階段的早期考慮 EMC 干擾導(dǎo)致的問(wèn)題。EMC 導(dǎo)向的軟件提高了應(yīng)用的安全性和可靠性。強(qiáng)化 EMC 性能的軟件的實(shí)施成本低,可提高最終的抗擾性能,并節(jié)約硬件和開發(fā)成本。用戶應(yīng)考慮到模擬或數(shù)字?jǐn)?shù)據(jù)受到的 EMC 干擾,就像任何其它應(yīng)用參數(shù)一樣。

EMC 干擾導(dǎo)致的問(wèn)題示例:

微控制器無(wú)響應(yīng)

程序計(jì)數(shù)器失控

執(zhí)行意外指令

地址指向錯(cuò)誤

子程序執(zhí)行錯(cuò)誤

寄生復(fù)位和 / 或寄生中斷

IP 配置損壞

I/O 失靈

軟件故障的后果示例:

產(chǎn)品意外響應(yīng)

上下文丟失

進(jìn)程中的意外分支

中斷丟失

數(shù)據(jù)完整性缺失

輸入值誤讀

01使用看門狗或時(shí)間控制

為了確保 MCU 能夠從軟件失控故障中恢復(fù),看門狗是最有效的可用工具。它的原理非常簡(jiǎn)單:它是一個(gè)在計(jì)數(shù)結(jié)束時(shí)產(chǎn)生 MCU復(fù)位的定時(shí)器。一旦看門狗啟動(dòng),防止看門狗復(fù)位控制器的唯一方式就是在程序中周期性更新計(jì)數(shù)器。

但是為了使看門狗發(fā)揮它的最大潛力,用戶必須在軟件中的恰當(dāng)位置插入使能和喂狗指令。

下圖演示了錯(cuò)誤的看門狗使用方式:

82fd21a0-8d8c-11ed-bfe3-dac502259ad0.png

831845ac-8d8c-11ed-bfe3-dac502259ad0.png

需要執(zhí)行下列規(guī)則:

復(fù)位之后盡快啟用看門狗,或者開啟硬狗選項(xiàng) (如果有)。

切勿在中斷服務(wù)函數(shù)中或在代碼中沒(méi)有超時(shí)保護(hù)的任何本地環(huán)路中刷新看門狗。 根據(jù)不同程序的持續(xù)時(shí)間,包括中斷程序,對(duì)兩個(gè)刷新指令之間的間隔時(shí)間進(jìn)行優(yōu)化是非常重要的。

看門狗還有一種小用途,即可以使用它來(lái)復(fù)位 MCU,但這也意味著程序上下文的丟失,以及應(yīng)用數(shù)據(jù)完整性的丟失。復(fù)位之后,除了啟用看門狗外,在一些 MCU 上,你可以使用復(fù)位標(biāo)志來(lái)區(qū)分上電或低電壓復(fù)位或看門狗復(fù)位。

正確使用看門狗的實(shí)例如下圖:

8344413e-8d8c-11ed-bfe3-dac502259ad0.png

02保護(hù)閑置程序存儲(chǔ)區(qū)域

在大多數(shù)應(yīng)用中,程序存儲(chǔ)空間并沒(méi)有完全被用戶代碼占滿。為了更強(qiáng)的安全性,如果你不想產(chǎn)生復(fù)位,可以使用代碼填滿閑置存儲(chǔ)位置,這樣會(huì)強(qiáng)制看門狗復(fù)位或者跳向已知的程序位置。

即使程序計(jì)數(shù)器損壞,并且跳向閑置存儲(chǔ)位置,這都將確保 MCU 恢復(fù)和返回到正常操作。在這個(gè)閑置區(qū)域,還可以跳轉(zhuǎn)到恢復(fù)故障安全子程序,通過(guò)該子程序可恢復(fù)正常運(yùn)行。

帶有 ARM Cortex-M 內(nèi)核的 STM32 微控制器使用故障異常,當(dāng)系統(tǒng)遭受 EMC 干擾時(shí),它可以捕獲可能發(fā)生的非法存儲(chǔ)訪問(wèn)和非法編程行為。未定義的指令操作代碼可以用來(lái)填充STM32 微控制器的閑置存儲(chǔ),在程序計(jì)數(shù)器失控的情況下,提高故障異常使用率,使得故障安全程序從錯(cuò)誤中恢復(fù)。

03輸入過(guò)濾和比較

最佳做法是在驗(yàn)證狀態(tài)和繼續(xù)編程執(zhí)行之前,由程序?qū)斎胍_穩(wěn)定性進(jìn)行幾次檢查,以避免由輸入電路的外部噪聲造成的不想要的尖峰響應(yīng)。這是一個(gè)簡(jiǎn)單的對(duì)關(guān)鍵輸入濾波的方法,不需要額外的成本。

04閑置中斷向量管理

為了避免意外中斷事件導(dǎo)致的問(wèn)題 (無(wú)論是什么來(lái)源),建議在相應(yīng)的向量中加入一個(gè)有效的中斷程序地址,以管理所有可能的中斷來(lái)源。在下面的示例中,未使用的中斷向量指向故障管理程序標(biāo)簽,該標(biāo)簽中填充了簡(jiǎn)單的 “ 從中斷返回 ” 指令06

05平均模數(shù)轉(zhuǎn)換器結(jié)果

如果你在執(zhí)行 A/D 轉(zhuǎn)換操作,你可以重復(fù)多次轉(zhuǎn)換,將結(jié)果存儲(chǔ)在 RAM 中,然后取平均值(或者選擇最多出現(xiàn)的值),以在任何可能的噪聲錯(cuò)誤的情況下獲取準(zhǔn)確的結(jié)果。

06冗余數(shù)據(jù)存儲(chǔ)和交換

由于極端條件下的電磁干擾,所有存儲(chǔ)在內(nèi)部或外部存儲(chǔ)器的數(shù)據(jù)都可能損壞。高級(jí)的預(yù)防技術(shù)包括將雙倍互補(bǔ)值存儲(chǔ)在非臨近存儲(chǔ)區(qū)域、存儲(chǔ)和檢查奇偶校驗(yàn)位或 ECC,它們可幫助識(shí)別和 / 或修正數(shù)據(jù)損壞。 關(guān)注本公眾號(hào),在后臺(tái)回復(fù)【STM32】可以獲取更多相關(guān)設(shè)計(jì)的參考電路。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7396

    瀏覽量

    150633
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16802

    瀏覽量

    349351
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10846

    瀏覽量

    353773
  • emc
    emc
    +關(guān)注

    關(guān)注

    167

    文章

    3818

    瀏覽量

    182541

原文標(biāo)題:基于STM32 MCU應(yīng)用的EMC指南 之 軟件篇

文章出處:【微信號(hào):精通單片機(jī)與嵌入式,微信公眾號(hào):精通單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32深入淺出新手

    STM32深入淺出新手,很好的單片機(jī)學(xué)習(xí)資料。
    發(fā)表于 03-21 17:43 ?128次下載

    STM32開發(fā)板教程之STM32開發(fā)指南免費(fèi)下載

    本開發(fā)指南將由淺入深,帶領(lǐng)大家進(jìn)入 STM32 的世界。本指南總共分為三:1,硬件,主要介紹本指南
    發(fā)表于 11-28 08:00 ?174次下載
    <b class='flag-5'>STM32</b>開發(fā)板教程之<b class='flag-5'>STM32</b>開發(fā)<b class='flag-5'>指南</b>免費(fèi)下載

    STM32開發(fā)板的開發(fā)指南資料免費(fèi)下載

    本開發(fā)指南將由淺入深,帶領(lǐng)大家進(jìn)入 STM32 的世界。本指南總共分為三:1,硬件,主要介紹本指南
    發(fā)表于 06-17 08:00 ?9次下載

    STM32學(xué)習(xí)STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)

    STM32學(xué)習(xí)STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)
    發(fā)表于 12-07 11:51 ?28次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)<b class='flag-5'>之</b><b class='flag-5'>STM32</b>cubeMX<b class='flag-5'>軟件</b>安裝與使用(附<b class='flag-5'>STM32</b>cubeMX5.2.1下載地址)

    STM32開發(fā)指南

    本開發(fā)指南將由淺入深,帶領(lǐng)大家進(jìn)入 STM32 的世界。本指南總共分為三:1,硬件, 主要介紹本
    發(fā)表于 07-13 16:07 ?41次下載

    AN1709 STM8、STM32和傳統(tǒng)MCUEMC設(shè)計(jì)指南

    AN1709 STM8、STM32和傳統(tǒng)MCUEMC設(shè)計(jì)指南
    發(fā)表于 11-21 17:07 ?1次下載
    AN1709 STM8、<b class='flag-5'>STM32</b>和傳統(tǒng)<b class='flag-5'>MCU</b>的<b class='flag-5'>EMC</b>設(shè)計(jì)<b class='flag-5'>指南</b>

    UM2181_基于STM32Cube的MotionGC軟件的入門指南

    UM2181_基于STM32Cube的MotionGC軟件的入門指南
    發(fā)表于 11-22 19:20 ?0次下載
    UM2181_基于<b class='flag-5'>STM32</b>Cube的MotionGC<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    UM2207_基于STM32Cube的MotionPM軟件的入門指南

    UM2207_基于STM32Cube的MotionPM軟件的入門指南
    發(fā)表于 11-22 19:20 ?0次下載
    UM2207_基于<b class='flag-5'>STM32</b>Cube的MotionPM<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    UM2220_基于STM32Cube的MotionFX軟件的入門指南

    UM2220_基于STM32Cube的MotionFX軟件的入門指南
    發(fā)表于 11-22 19:20 ?2次下載
    UM2220_基于<b class='flag-5'>STM32</b>Cube的MotionFX<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    UM2225_基于STM32Cube的MotionEC軟件的入門指南

    UM2225_基于STM32Cube的MotionEC軟件的入門指南
    發(fā)表于 11-22 19:21 ?2次下載
    UM2225_基于<b class='flag-5'>STM32</b>Cube的MotionEC<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    UM2275_基于STM32Cube的MotionFD軟件的入門指南

    UM2275_基于STM32Cube的MotionFD軟件的入門指南
    發(fā)表于 11-22 19:21 ?0次下載
    UM2275_基于<b class='flag-5'>STM32</b>Cube的MotionFD<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    UM2277_基于STM32Cube的MotionTL軟件的入門指南

    UM2277_基于STM32Cube的MotionTL軟件的入門指南
    發(fā)表于 11-22 19:21 ?0次下載
    UM2277_基于<b class='flag-5'>STM32</b>Cube的MotionTL<b class='flag-5'>軟件</b>的入門<b class='flag-5'>指南</b>

    AN062基于GD32MCUEMC應(yīng)用指南

    AN062 基于GD32 MCUEMC應(yīng)用指南
    發(fā)表于 03-01 18:59 ?0次下載
    AN062基于GD32<b class='flag-5'>MCU</b>的<b class='flag-5'>EMC</b>應(yīng)用<b class='flag-5'>指南</b>

    MCUIEC_60335_CLASSB軟件庫(kù)

    MCUIEC_60335_CLASSB軟件庫(kù)
    的頭像 發(fā)表于 10-25 17:12 ?656次閱讀
    <b class='flag-5'>MCU</b><b class='flag-5'>之</b>IEC_60335_CLASSB<b class='flag-5'>軟件</b>庫(kù)

    兆易創(chuàng)新AN062 基于GD32 MCUEMC應(yīng)用指南

    兆易創(chuàng)新AN062基于GD32MCUEMC應(yīng)用指南AN062基于GD32MCUEMC應(yīng)用指南
    發(fā)表于 10-19 17:26 ?5次下載