单片机硬件系统设计原则 (一)
一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的
功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,
必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统
功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接
口电路。
系统的扩展和配置应遵循以下原则:
1、尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良
好的基础。
2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,
以便进行二次开发。
3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑
的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件
实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。
4、系统中的相关器件要尽可能做到性能匹配。 如选用CMOS芯片单片机构成低功耗系统
时,系统中所有芯片都应尽可能选择低功耗产品。
5、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤
波、印刷电路板布线、通道隔离等。
6、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,
可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。
7、尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗
也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正
的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集
成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路
等等。
● 单片机系统硬件抗干扰常用方法实践
影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并
受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素
,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大
经济损失。
形成干扰的基本要素有三个:
(1)干扰源。指产生干扰的元件、设备或信号, 用数学语言描述如下:du/dt, di/d
t大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源
。
(2)传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是
通过导线的传导和空间的辐射。
(3)敏感器件。指容易被干扰的对象。如:A/D、 D/A变换器,单片机,数字IC,弱信
号放大器等。
1 干扰的分类
1.1 干扰的分类
干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等等进行不
同的分类。按产生的原因分:
可分为放电噪声音、高频振荡噪声、浪涌噪声。
按传导方式分:可分为共模噪声和串模噪声。
按波形分:可分为持续正弦波、脉冲电压、脉冲序列等等。
1.2 干扰的耦合方式
干扰源产生的干扰信号是通过一定的耦合通道才对测控系统产生作用的。因此,我们有
必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间
、公共线等等,细分下来,主要有以下几种:
(1)直接耦合:
这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入
系统。对于这种形式,最有效的方法就是加入去耦电路。
(2)公共阻抗耦合:
这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通路的情况。为了防
止这种耦合,通常在电路设计上就要考虑。使干扰源和被干扰对象间没有公共阻抗。
(3)电容耦合:
又称电场耦合或静电耦合。是由于分布电容的存在而产生的耦合。
(4)电磁感应耦合:
又称磁场耦合。是由于分布电磁感应而产生的耦合。
(5)漏电耦合:
这种耦合是纯电阻性的,在绝缘不好时就会发生。
2 常用硬件抗干扰技术
针对形成干扰的三要素,采取的抗干扰主要有以下手段。
2.1 抑制干扰源
抑制干扰源就是尽可能的减小干扰源的du/dt, di/dt。这是抗干扰设计中最优先考虑和
最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两
端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二
极管来实现。
抑制干扰源的常用措施如下:
(1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极
管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数
。
(2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K到几十
K,电容选0.01uF),减小电火花影响。
(3)给电机加滤波电路,注意电容、电感引线要尽量短。
(4)电路板上每个IC要并接一个0.01μF~0.1 μF高频电容,以减小IC对电源的影响。
注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电容的等效串联
电阻,会影响滤波效果。
(5)布线时避免90度折线,减少高频噪声发射。
(6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可
控硅击穿的)。
2.2 切断干扰传播路径
按干扰的传播路径可分为传导干扰和辐射干扰两类。
所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不
同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦
来解决。电源噪声的危害最大,要特别注意处理。
所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源
与敏感器件的距离,用地线把它们隔离和在敏感器件上加屏蔽罩。
切断干扰传播路径的常用措施如下:
(1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就解决了一大半。
许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单
片机的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用
100Ω电阻代替磁珠。
(2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增
加π形滤波电路)。
(3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳
接地并固定。
(4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继
电器)与敏感元件(如单片机)远离。
(5)用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。
A/D、D/A芯片布线也以此为原则。
(6)单片机和大功率器件的地线要单独接地,以减小相互干扰。大功率器件尽可能放在
电路板边缘。
(7)在单片机I/O口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环
、电源滤波器、屏蔽罩,可显著提高电路的抗干扰性能。
2.3 提高敏感器件的抗干扰性能
提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声的拾取,以及
从不正常状态尽快恢复的方法。
提高敏感器件抗干扰性能的常用措施如下:
(1)布线时尽量减少回路环的面积,以降低感应噪声。
(2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。
(3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变
系统逻辑的情况下接地或接电源。
(4)对单片机使用电源监控及看门狗电路,如: IMP809,IMP706,IMP813, X5043,
X5045等,可大幅度提高整个电路的抗干扰性能。
(5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。
(6)IC器件尽量直接焊在电路板上,少用IC座。
2.4 其它常用抗干扰措施
(1)交流端用电感电容滤波:去掉高频低频干扰脉冲。
(2)变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电
容中心接点接大地,次级外屏蔽层接印制板地,这是硬件抗干扰的关键手段。次级加低通滤
波器:吸收变压器产生的浪涌电压。
(3)采用集成式直流稳压电源: 有过流、过压、过热等保护作用。
(4)I/O口采用光电、磁电、继电器隔离,同时去掉公共地。
(5)通讯线用双绞线:排除平行互感。
(6)防雷电用光纤隔离最为有效。
(7)A/D转换用隔离放大器或采用现场转换:减少误差。
(8)外壳接大地:解决人身安全及防外界电磁场干扰。
(9)加复位电压检测电路。防止复位不充分, CPU就工作,尤其有EEPROM的器件,复位不
充份会改变EEPROM的内容。
(10)印制板工艺抗干扰:
① 电源线加粗,合理走线、接地,三总线分开以减少互感振荡。
② CPU、RAM、ROM等主芯片,VCC和GND之间接电解电容及瓷片电容,去掉高、低频干扰信
号。
③ 独立系统结构,减少接插件与连线,提高可靠性,减少故障率。
④ 集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不
良故障。
⑤ 有条件的采用四层以上印制板,中间两层为电源及地。
● 单片机系统软件抗干扰方法
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性
好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究
。
1 软件抗干扰方法的研究
在工程实践中,软件抗干扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字
滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效
的软件抗干扰方法。
1.1 指令冗余
CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道
“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码
,程序将出错。若“飞” 到了三字节指令,出错机率更大。
在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是
在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,
由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。
此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两
条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
1.2 拦截技术
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截
乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
1.2.1 软件陷阱的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将
其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地
址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:
NOP
NOP
LJMP 0000H
其机器码为0000020000。
1.2.2 陷阱的安排
通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序
落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使
用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中
断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOP
NOP
RETI
返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序
的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理
故障并恢复程序的运行。
考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。
1.3 软件“看门狗”技术
若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过
不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷
入“死循环”,需进行出错处理。
“看门狗”技术可由硬件实现,也可由软件实现。 在工业应用中,严重的干扰有时会破
坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件
看门狗可有效地解决这类问题。
笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监
视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰
性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通讯的测控系统,则定
时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用
T2代替T1进行监视)。这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1
中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环
一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中
断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测
MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别
T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处
理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全
盘合理考虑。限于篇幅不赘述。
2 系统故障处理、自恢复程序的设计
单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非
正常复位前的状态。
2.1 非正常复位的识别
程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上
电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电
后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。
2.1.1 硬件复位与软件复位的识别
此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H
, SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序
正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为
1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。图1是采用PSW.5
作上电标志位判别硬、软件复位的程序流程图。
图1 硬、软件复位识别流程图
此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,
因此可选取片内某一个或两个单元作为上电标志。设 40H用来做上电标志,上电标志字为
78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转
向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
2.1.2 开机复位与看门狗故障复位的识别
开机复位与看门狗故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易
失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行
时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH),而在主程中将
该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否
看门狗复位。
2.1.3 正常开机复位与非正常开机复位的识别
识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过
程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在
已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行
测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时
间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段
则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进
行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此
单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。
2.2 非正常复位后系统自恢复运行的程序设计
对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个
模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态
、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时
备份,同时若有修改也应立即予以备份。
当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的
初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复
,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统
运行状态。
应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份
,并加以数据可靠性检查,以保证恢复的数据的可靠性。
其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题,笔者实际应用
的数据恢复过程流程图如图2所示。
图2 系统自恢复程序流程图
图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。系统基本初始化是指对
芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而
复位前任务的初始化是指任务的执行状态、运行时间等。
3 结束语
对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本
文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好
的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周
到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片
机系统是完全可行的。