单片机系统设计的误区与对策

发布者:chenxiaohong68最新更新时间:2012-02-23 来源: 21IC关键字:单片机  电磁兼容性  电磁干扰  看门狗 手机看文章 扫描二维码
随时随地手机看文章

单片机系统在军事、工业、民用产品中的应用越来越广。它将许多以往用硬件实现的功能由软件来完成,体积小巧、功能丰富、智能化程序度,但在可靠性方面也面临许多新问题。用现场电磁兼容性(EMC)理论剖析单片机系统设计中的某些传统观念,会发现许多误区,并且有些误区至今还在工程界广为存在。

1 误区之一:有了看门狗就不会死机

死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在 DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句——FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,具体电路可参阅这些芯片的技术资料[2]。

    有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时 DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。 [page]

双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为 T2,0

这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器 FeedDog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点[3]。

目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机在分之百不死机的。

在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗——定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。

简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表 [4])中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。

必须指出,采用这种看门狗,CPU的编程要适应定时复位的环境,保证定时复位不打断那些不能打断的程序,不造成任何误动作。

2 误区之二:加电源滤波器能提高EMC性能

在单片机系统中,为了抑制电磁干扰(EMI),常常在交流电源进线与电源变压器之间加电磁滤波器。常用电源滤波器如图1。

图1都是双II型LC滤波器,其中C0专用于旁路差模干扰。两者的不同之处在于:图1(b)两个电容接大地。设电感的电阻为R,它们的隔频特性分别是:

当R很小时,上述两个滤波器的谐振频率分别为:

可见,它们的幅频特性相似,谐振频率不同。从滤波效果来看,两者对于降低来自交流电的差模干扰效果差不多,但是后者对于降低共模干扰效果更好。不过同,对于采用浮地方式的装置,由于电容不可能直正接到大地,所以只能用者。

设计滤波器时必须注意让谐振频率远小于干扰频率,处理不好不仅不能衰减干扰,反而放大干扰。以图 1(a)的双II型滤波器为例,如果取L=1mh,R= 1Ω,C=0.47μF(这是许多资料推荐的参数),可计算出f0=5.2kHz。而EMC测试中的快速脉冲群频率是5.0kHz(2kV)或 2.5kHz(4kV);5.0kHz刚好谐振,2.5kHz也不会被衰减,如图2虚线的示。可见,不是所有的电源滤波器都能提高EMC性能。工程中,许多装置尽管采用了成本不菲的滤波器,但EMC测试仍难过程,原因大多在此。

实际上,如果取L=30mh,R=5Ω,C=0.47μF,可计算出f0=0.95kHz,5.0kHz脉冲群幅值减为3.73%,2.5kHz脉冲群幅值衰减为16.78%。这时,电源滤波器确实提高了系统的EMC性能。图2实线是相庆的幅频特性。

3 误区之三:光偶器件隔离干扰很彻底

光偶器件是最常用的隔离干扰器件。例如现场的开关量引到测控装置后都要加光隔,以切断来自现场的传导干扰;RS485通讯口经光隔再与外部通讯线连接,防止来自外部通讯线的传导干扰。

有不少人认为:光偶器件隔离干扰很彻底,用了光偶隔离干扰就过不去了。其实,光电隔离并非万全之策。

首先,光偶器件本身只能隔离传导干扰,它隔离不断幅射、感应干扰。幅射来自空间,感应来自相邻的导体。最常见的败笔是:设计PCB时将光偶器件的输入和输出电路布在了一起,这时干扰从光偶器件是过不去了,但却很容易输入电路感应到输出电路。

其次,光偶器件隔离传导干扰的能力也只有1kV左右,1kV以上的干扰或浪涌一般是力所不的及的。比如EMC的快速脉冲群测试,施加的干扰信号幅值是2kV、4kV、8kV,光偶器件是无法隔离的。[page]

4 误区之四:PCB布线要横平竖直

提起PCB布线,许多工程技术人员都知道一个传统的经验:正面横向走线、反面纵向走线,横平竖直,既美观又短捷;还有个传统经验是:只要空间允许,走线越粗越好。可以明确地说,这些经验在注重EMC的今天已经过时。

要使单片机系统有良好的EMC性能,PCB设计十分关键。一个具有良好的EMC性能的PCB,必须按高频电路来设计——这是反传统的。单片机系统按高频电路来设计PCB的理由在于:尽管单片机系统大部分电路的工作频率并不高,但是EMI的频率是高的,EMC测试的模拟干扰频率也是高的[5]。要有效抑制 EMI,顺利通过EMC测试,PCB的设计必须考虑高频电路的特点。PCB按高频电路设计的要点是:

(1)要有良好的地线层。良好的地线层处处等电位,不会产生共模电阻偶合,也不会经地线形成环流产生天线效应;良好的地线层能使EMI以最短的路径进入地线而消失。建立良好的地线层最好的方法是采用多层板,一层专门用作线地层;如果只能用双面板,应当尽量从正面走线,反面用作地线层,不得已才从反面过线。

(2)保持足够的距离。对于可能出现有害耦合或幅射的两根线或两组或要保持足够的距离,如滤波器的输入与输出、光偶的输入与输出、交流电源线与弱信号线等。

(3)长线加低通滤波器。走线尽量短捷,不得已走的长线应当在合理的位置插入C、RC或LC低通滤波器。

(4)除了地线,能用细线的不要用粗线。因为PCB上的每一根走线既是有用信号的载体,又是接收幅射干扰的干线,走线越长、越粗,天线效应越强。

5 误区之五:IC芯片的封装形式不影响性能

众所周知,IC芯片的封装贴片式和双列直插式之分。一般认为:贴片式和双列直插式的区别主要是体积不同和焊接方法不同,对系统性能影响不大。其实不然。

前面说到,PCB上每一根走线都存在天线效应。现在要说,PCB上的每一个元件也存在天线效应,元件的导电部分越大,天线效应越强。所以,同一型号芯片,封装尺寸小的比封装尺寸大的天线效应弱。这就解释了许多工程师已经注意到的一个现象:同一装置,采用贴片元件比采用双列直插元件更易通过EMC测试。

此外,天线效应还跟每个芯片的工作电流环路有关。要削弱天线效应,除了减小封装尺寸,还应尽量减小工作电流环路尺寸、降低工作频率和di/dt。留意最新型号的IC芯片(尤其是单片)的管脚布局会发现:它们大多抛弃了传统方式——左下角为GND右上角为 VCC,而将VCC和GND安排在相邻位置,就是为了减小工作电流环路尺寸。

实际上,不仅是IC芯片,电阻、电容封装也与EMC有关。用0805封装比1206封装有更好的EMC性能,用0603封装又比0805封装有更好的EMC性能。目前国际上流行的是0603封装。

关键字:单片机  电磁兼容性  电磁干扰  看门狗 引用地址:单片机系统设计的误区与对策

上一篇:单片机低功耗技术及应用
下一篇:瞬态电磁脉冲对单片机的辐照效应实验及加固方法

推荐阅读最新更新时间:2024-03-16 12:54

51单片机 独立按键k1控制数码管移位 k2控制数值加
按下独立按键k1数码管左移,按下独立按键k2数码管数值加1。 typedef unsigned char u8; u8 code smgwei ={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; u8 code smgduan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit key1=P3^1; sbit key2=P3^0; u8 wei,shu; void delay(u16 i) { while(i--); } void button() { if(key1==0) { delay(1000);
[单片机]
基于51单片机的贪吃蛇小程序(8*8LED点阵实现)
一直很想写一个贪吃蛇的小程序,这两天终于抽空完成了,这里把我的思路分享给大家,仅供参考! 代码如下: 先放段主函数压压惊 void main() { x_s = 2; //初始化三个点 y_s = 3; x_s = 3; y_s = 3; x_s = 4; y_s = 3; Timer0Init(); suijishu(); while(1) { appear(); if(flag_a) //蛇身移动位 { if(!flag_s) //蛇身死亡位 { auto_move(); HC_595(0x00); //消隐 P0 = 0xFF; //消隐
[单片机]
基于MSP430单片机的多路无线温度检测系统
0 引言 温度在人类日常生活中扮演着极其重要的角色,同时在工农业生产过程中,温度检测具有十分重要的意义。现阶段温度检测主要是有线定点温度检测,其温度检测原理为单片机利用温度传感器检测温度,并在数码管或LCD上进行温度显示。同时由于系统没有报警功能,故需要人为来判断是否需要进行升温或者降温,这使系统的检测丧失了实时性。另外,在某些环境恶劣的工业环境,以人工方式直接操作设置仪表测量温度也不现实,因此采用无线方式进行温度检测尤为必要。 目前有些设计能够实现无线温度采集,但功耗过高是其最大的缺点。在实际温度控制过程中既要求系统具有稳定性、实时性,又需要使系统功耗低及保证温度的均匀性,因此设计一种低功耗的多点无线温度检测系统很有意义
[单片机]
基于MSP430<font color='red'>单片机</font>的多路无线温度检测系统
MSP430单片机为核心的电子汽车限速器的设计方案
我国每年有数十万起交通事故发生,如果汽车限速器能够普及,将会降低交通事故发生率,从而挽回不必要的财产和生命损失。  与近期在市场上热销的电子狗产品相比,汽车限速器更具有主动规避事故的优势,电子狗只是在接近超速测试探头时才提醒驾驶者控制车速。汽车限速器通常分为两大类:一种是在车辆超速时发出语音警报,提醒驾驶者减速;另一种是在车辆超过限定速度后,通过车载电脑发出指令,强制控制车辆行驶速度。第1种限速器只起到警示作用,而第2种汽车限速器将更为有效地降低交通事故。因此,本文着重介绍了第2种限速器的实现原理及设计方法。 1 限速器实现原理 由于早期的汽车是没有限速功能的,所以在设计时要同时考虑到汽车出厂前安装与售出后安装两个不同层面
[单片机]
MSP430<font color='red'>单片机</font>为核心的电子汽车限速器的设计方案
单片机STM32的引脚模式设置运用理解
单片机STM32的引脚有多种方式可以选择。 如果你是用直接写寄存器来配置的话,那么,看上手册,给“配置寄存器”对应的位写0或者1就可以达到目的。如下图: 如果是用库函数来配置的话,就需要知道下面这个结构体中的变量代表的意义。 库函数,选择好GPIO_Mode之后,就要使用GPIO_Init()函数来配置,你可以打开这个配置函数,实际上也是在对“配置寄存器”进行写操作。 先解释一下这个结构体中的各个变量的意思: GPIO_Mode_AIN:模拟输入模式 GPIO_Mode_IN_FLOATING:浮空输入模式 GPIO_Mode_IPD:下拉输入模式 GPIO_Mode_IPU:上拉输入模式 GPIO_Mode_Out
[单片机]
<font color='red'>单片机</font>STM32的引脚模式设置运用理解
51单片机指令详解
数据传递类指令     以累加器为目的操作数的指令        MOV A,Rn       MOV A,direct       MOV A,@Ri        MOV A,#data    第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。 下面我们通过一些例子加以说明:       MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。       MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。        MOV A,@R1 ;先看R1
[单片机]
手把手教你学51单片机:定时器与数码管
一、逻辑电路与逻辑运算 逻辑运算符: (1)按变量整体值进行运算 :逻辑与(&&) 逻辑或(||) 逻辑非(!) (2)按变量的每一位进行运算: 按位与(&) 按位或(|) 按位取反(~) 二、定时器学习 2.1定时器的初步认识 (1)时钟周期:时序中最小的时间单位。 时钟周期(T)=1/时钟源频率 (2)机器周期:单片机完成一个操作的最短时间。 51单片机系列,机器周期是12个时钟周期。 定时器和计数器是单片机内部的同一个模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能。主要用于定时。定时器内部有一个寄存器,让他开始计数后,这个寄存器的值没经过一个机器周期就会自动加1,因此可以把机器周期理解
[单片机]
手把手教你学51<font color='red'>单片机</font>:定时器与数码管
STM32单片机特性解析
STM32单片机 由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、 低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名。其强大的功能主要表现在: 特性 1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved