0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32 MCU应用的EMC指南之软件篇

精通单片机与嵌入式 来源:玩转单片机与嵌入式 作者:风雨无阻 2023-01-06 14:41 次阅读

在基于微控制器电子系统中,强壮的软件设计是提高 EMC 性能的主要因素。必须尽量在项目设计阶段的早期考虑 EMC 干扰导致的问题。EMC 导向的软件提高了应用的安全性和可靠性。强化 EMC 性能的软件的实施成本低,可提高最终的抗扰性能,并节约硬件和开发成本。用户应考虑到模拟或数字数据受到的 EMC 干扰,就像任何其它应用参数一样。

EMC 干扰导致的问题示例:

微控制器无响应

程序计数器失控

执行意外指令

地址指向错误

子程序执行错误

寄生复位和 / 或寄生中断

IP 配置损坏

I/O 失灵

软件故障的后果示例:

产品意外响应

上下文丢失

进程中的意外分支

中断丢失

数据完整性缺失

输入值误读

01使用看门狗或时间控制

为了确保 MCU 能够从软件失控故障中恢复,看门狗是最有效的可用工具。它的原理非常简单:它是一个在计数结束时产生 MCU复位的定时器。一旦看门狗启动,防止看门狗复位控制器的唯一方式就是在程序中周期性更新计数器。

但是为了使看门狗发挥它的最大潜力,用户必须在软件中的恰当位置插入使能和喂狗指令。

下图演示了错误的看门狗使用方式:

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

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

需要执行下列规则:

复位之后尽快启用看门狗,或者开启硬狗选项 (如果有)。

切勿在中断服务函数中或在代码中没有超时保护的任何本地环路中刷新看门狗。 根据不同程序的持续时间,包括中断程序,对两个刷新指令之间的间隔时间进行优化是非常重要的。

看门狗还有一种小用途,即可以使用它来复位 MCU,但这也意味着程序上下文的丢失,以及应用数据完整性的丢失。复位之后,除了启用看门狗外,在一些 MCU 上,你可以使用复位标志来区分上电或低电压复位或看门狗复位。

正确使用看门狗的实例如下图:

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

02保护闲置程序存储区域

在大多数应用中,程序存储空间并没有完全被用户代码占满。为了更强的安全性,如果你不想产生复位,可以使用代码填满闲置存储位置,这样会强制看门狗复位或者跳向已知的程序位置。

即使程序计数器损坏,并且跳向闲置存储位置,这都将确保 MCU 恢复和返回到正常操作。在这个闲置区域,还可以跳转到恢复故障安全子程序,通过该子程序可恢复正常运行。

带有 ARM Cortex-M 内核的 STM32 微控制器使用故障异常,当系统遭受 EMC 干扰时,它可以捕获可能发生的非法存储访问和非法编程行为。未定义的指令操作代码可以用来填充STM32 微控制器的闲置存储,在程序计数器失控的情况下,提高故障异常使用率,使得故障安全程序从错误中恢复。

03输入过滤和比较

最佳做法是在验证状态和继续编程执行之前,由程序对输入引脚稳定性进行几次检查,以避免由输入电路的外部噪声造成的不想要的尖峰响应。这是一个简单的对关键输入滤波的方法,不需要额外的成本。

04闲置中断向量管理

为了避免意外中断事件导致的问题 (无论是什么来源),建议在相应的向量中加入一个有效的中断程序地址,以管理所有可能的中断来源。在下面的示例中,未使用的中断向量指向故障管理程序标签,该标签中填充了简单的 “ 从中断返回 ” 指令06

05平均模数转换器结果

如果你在执行 A/D 转换操作,你可以重复多次转换,将结果存储在 RAM 中,然后取平均值(或者选择最多出现的值),以在任何可能的噪声错误的情况下获取准确的结果。

06冗余数据存储和交换

由于极端条件下的电磁干扰,所有存储在内部或外部存储器的数据都可能损坏。高级的预防技术包括将双倍互补值存储在非临近存储区域、存储和检查奇偶校验位或 ECC,它们可帮助识别和 / 或修正数据损坏。 关注本公众号,在后台回复【STM32】可以获取更多相关设计的参考电路。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343620
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348743
  • emc
    emc
    +关注

    关注

    165

    文章

    3644

    浏览量

    181165

原文标题:基于STM32 MCU应用的EMC指南 之 软件篇

文章出处:【微信号:精通单片机与嵌入式,微信公众号:精通单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用STM32 MCU的USB硬件和PCB指南

    STM32微控制器包括一组嵌入USB(通用串行总线)外围设备的产品(有关适用的产品)。通过嵌入式和/或外部PHY(物理 开放系统互连模型的层)。 本应用说明概述了在STM32 MCU上实现的USB外围设备,并提供了硬件PCB设计
    发表于 09-21 06:24

    STM32 MCU软件烧写方法探讨

    STM32 MCU软件烧写方法探讨STM32xx 系列MCU因为它的易用性和广泛的用户基础而在各种设计中广泛应用。本文重点讨论了几种SM
    发表于 10-25 20:51 18次下载
    <b class='flag-5'>STM32</b> <b class='flag-5'>MCU</b> 的<b class='flag-5'>软件</b>烧写方法探讨

    AN1709 STM8、STM32和传统MCUEMC设计指南

    AN1709 STM8、STM32和传统MCUEMC设计指南
    发表于 11-21 17:07 1次下载
    AN1709 STM8、<b class='flag-5'>STM32</b>和传统<b class='flag-5'>MCU</b>的<b class='flag-5'>EMC</b>设计<b class='flag-5'>指南</b>

    STM8AF/AL/S、STM32 MCU和MPU振荡器设计指南

    STM8AF/AL/S、STM32 MCU和MPU振荡器设计指南
    发表于 11-21 17:07 3次下载
    STM8AF/AL/S、<b class='flag-5'>STM32</b> <b class='flag-5'>MCU</b>和MPU振荡器设计<b class='flag-5'>指南</b>

    UM2181_基于STM32Cube的MotionGC软件的入门指南

    UM2181_基于STM32Cube的MotionGC软件的入门指南
    发表于 11-22 19:20 0次下载
    UM2181_基于<b class='flag-5'>STM32</b>Cube的MotionGC<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2194_基于STM32Cube的MotionAW软件的入门指南

    UM2194_基于STM32Cube的MotionAW软件的入门指南
    发表于 11-22 19:20 0次下载
    UM2194_基于<b class='flag-5'>STM32</b>Cube的MotionAW<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2207_基于STM32Cube的MotionPM软件的入门指南

    UM2207_基于STM32Cube的MotionPM软件的入门指南
    发表于 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软件的入门指南
    发表于 11-22 19:20 0次下载
    UM2220_基于<b class='flag-5'>STM32</b>Cube的MotionFX<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2224_基于STM32Cube的MotionCP软件的入门指南

    UM2224_基于STM32Cube的MotionCP软件的入门指南
    发表于 11-22 19:21 0次下载
    UM2224_基于<b class='flag-5'>STM32</b>Cube的MotionCP<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2225_基于STM32Cube的MotionEC软件的入门指南

    UM2225_基于STM32Cube的MotionEC软件的入门指南
    发表于 11-22 19:21 2次下载
    UM2225_基于<b class='flag-5'>STM32</b>Cube的MotionEC<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2276_基于STM32Cube的MotionSD软件的入门指南

    UM2276_基于STM32Cube的MotionSD软件的入门指南
    发表于 11-22 19:21 0次下载
    UM2276_基于<b class='flag-5'>STM32</b>Cube的MotionSD<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2349_基于STM32Cube的MotionAT软件的入门指南

    UM2349_基于STM32Cube的MotionAT软件的入门指南
    发表于 11-22 19:21 0次下载
    UM2349_基于<b class='flag-5'>STM32</b>Cube的MotionAT<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    UM2350_基于STM32Cube的MotionPW软件的入门指南

    UM2350_基于STM32Cube的MotionPW软件的入门指南
    发表于 11-22 19:21 0次下载
    UM2350_基于<b class='flag-5'>STM32</b>Cube的MotionPW<b class='flag-5'>软件</b>的入门<b class='flag-5'>指南</b>

    AN062基于GD32MCUEMC应用指南

    AN062 基于GD32 MCUEMC应用指南
    发表于 03-01 18:59 0次下载
    AN062基于GD32<b class='flag-5'>MCU</b>的<b class='flag-5'>EMC</b>应用<b class='flag-5'>指南</b>

    兆易创新AN062 基于GD32 MCUEMC应用指南

    兆易创新AN062基于GD32MCUEMC应用指南AN062基于GD32MCUEMC应用指南
    发表于 10-19 17:26 5次下载