微控制器的抗干扰软件编程方法
微控制器越来越多地用于各种电子领域,例如自动化、工业控制中。随着金属氧化物半导体的硅晶体管几何尺寸的不断缩小,系统设计中的电磁兼容性(EMC)问题,成为采胳膊小尺寸器件进行设计的必须考虑的主要问题。
在嵌入式微控制器内部,对于内部产生的电磁发射,采用软件措施的效果并不明显。因为发射主要是由CPU中的内部时钟和噪声引起,而且高速开关电流是由微控制器中的多种不同的门所形成。如果芯片版图设计时没有考虑电磁兼容性,那么外部的PCB(印制电路板)将会大大增强那些不必要的噪声信号。所以在很多设计中,采用软件很难消除这种固有的电子发射影响。
但是,在控制器应用中,却可采用软件的方式来抑制外来干扰。本文给出了一些常用设计技巧和应用。
一、内嵌抗干扰软件
在很多的应用中,用简单的抗干扰设计,就可以将一个微控制器的干扰抑制效果大大提高。这种抗干扰设计的魅力就在于实现该设计的费用较低,还可以节省PCB板上硬件成本。抗干扰设计的常用技巧如下:
1.刷新端口引脚(Refreshing port pins):抗干扰软件最简单的一个例子就是可以不断地更新I/O端口和一些重要的寄存器。在大多数微控制器的应用中,软件将会执行一个有规律的主循环。由于微控制器的I/O端口通常靠近连接焊点(bond pads),而这些焊点通常是位于芯片的边沿。当一个确定振幅的噪声施加到微控制器时,噪声将会从芯片的边沿向内传入硅晶体中。这意味着芯片边沿的逻辑电路最容易被外部噪声源破坏,输入/输出电路就属于这种类型。因此有规律的更新数据寄存器和数据说明寄存器,就可以把这种故障的威胁降低。
2.检测输入脚(Polling inputs):另一个方法就是采用多次读输入脚数据,且取平均值作为该脚的正确数据方式。其典型的应用就是用软件每隔10ms读一次键盘,以保证真实的键入发生。这种表决式做法被称作反弹跳保护。作为一种高频率检测某个端脚的Motorola HC05代码的实例如图1所示。
图1的程序可以很迅速地连续读出该端口,如果有3次读出结果相同,那么CPU将以进位标志的状态作为读结果返回(这是HC05 CPU的BRSET和BRCLR的一个固有特征)。这个程序的问题在于当输入引脚是处于很嘈杂的环境时,CPU将会按这个程序持续很长时间,这在那些对时间要求较苛刻的应用中是不实际的。更好的一个程序就是多次读出输入引脚,并使寄存器递增,如果结果小于某个数,那么就将它当作0;如果大于某个数,就作为1。这个程序通常会在有限时间内退出,以保证不会妨碍到该应用中其他程序的运行。
3.标记通过(Token Passing):在一些重要的处理中,标记通过用以确认任务已进入受控方式而未失去控制。标记通过可以利用RAM里未用到的空间来完成。在应用的一段特定时间间隔里,该软件将通过许多未用的RAM空间循环一个1.在任何一个重要任务被执行之前。这种循环检查将会得出结果。结果检测通过,该任务将会被执行。如果以没通过,则说明微控制器是从未指定的跳转进入该任务,那么就跳转去执行一个初始化程序。见图2。
4.未使用的内存(Unused Memory):在大多数的应用中,程序的存储器总有一些区域未使用。如果在一些事件中,程序计数器(Program Counter)被破坏且跳转进入未用的存储空间,那么有些应该执行的控制就会起作用。例如,在16K字节的程序空间里存在未使用的500Byte的子块。如果我们用SWI指令填满这些未用空间,那么任何指向未用地区的无效激励将会导致微控制器去读取SWI矢量,而该向量是被编程跳转到程序中的已知的起始位置。同样,在微管制器的应用中,SWI也可用其它函数来替代,以填充那些未用的区域,其实例如图3所示。
请注意:记录这些未用区域已被9D指令填满,且由一个有条件的跳变(Jump)跳到已知区域(known-place)。当这个微控制器运行至该已知区域时,它将会被强制跳转去执行初始化程序。
二、看门狗电路
一个看门狗电路通常被描述成一块在有规律的时间间隔中进行更新的硬件,该更新必须由微控制器或是使微控制器重新启动的电路来完成。一个外部的看门狗电路是最好的,因为它不依赖微控制器,如果微控制器发生故障需要看门狗更新,则该电路将给出reset信号使微控制器重新启动。一个看门狗通常由一个硬件定时器构成,如果没有来看微控制器的更新或是报告信息,该定时器将会溢出。一个简单的看门狗电路如图4。
在加电的POR时延内,微控制器将保持在复位状态。时钟可以来自一个外部源或是来自用于微控制器的晶振的一个脉冲。当该微控制器处于复位状态时,输入/输出引脚就成为输入,而此时计数器也开始运作。如果Q是0,那么C1就会被充电,而微控制器将会跳离
- 基于FPGA的DSP设计方法(08-26)
- 专家指导:Linux操作系统密码恢复方法(05-16)
- 基于多核DSP Bootload代码加载方法研究(01-16)
- 基于DSP 的大容量无线传输技术中高性能的启动方法(03-16)
- 多核调试新方法探讨(10-22)
- 有备无患Linux操作系统备份方法介绍(06-06)