单片机系统设计的误区与对策
2009-04-13
作者:王柏林
摘 要: 用电磁兼容性理论剖析了单片机系统设计中的某些传统观念,指出其过时和失误之处,给出了根据电磁兼容性理论设计单片机系统的新理念,还给出了双时限看门狗、定时复位看门狗、抗快速脉冲群滤波器、电磁兼容PCB等新的设计方法。
关键词: 单片机 电磁兼容性(EMC) 电磁干扰(EMI) 看门狗(WatchDog)
单片机系统在军事、工业、民用产品中的应用越来越广。它将许多以往用硬件实现的功能由软件来完成,体积小巧、功能丰富、智能化程度高,但在可靠性方面也面临许多新问题。用现代电磁兼容性(EMC)理论剖析单片机系统设计中的某些传统观念,会发现许多误区,并且有些误区至今还在工程界广为存在。
1 误区之一:有了看门狗就不会死机
死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复位才能走出死循环,执行正常的程序流程。众所周知,克服死机的最有效手段是加看门狗(WatchDog)。
目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer 按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句——FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成化,如MAX706、MAX791等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,具体电路可参阅这些芯片的技术资料[2]。
有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双时限看门狗和定时复位看门狗。
双时限看门狗有两个定时器:一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0 这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句,那么长定时器终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率极低。在水轮发电机组微机控制装置中的对比应用证明了这一点[3]。 目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU的看门狗是不能保证单片机百分之百不死机的。 在绝对不允许死机的装置中,笔者设计了一种完全不依赖于CPU的看门狗——定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。 简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器的定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表[4])中采用了定时复位看门狗,每1秒让CPU强行复位,迄今数十万电表运行了近五年,无一例死机报告。 必须指出,采用这种看门狗,CPU的编程要适应定时复位的环境,保证定时复位不打断那些不能打断的程序,不造成任何误动作。 2 误区之二:加电源滤波器能提高EMC性能 在单片机系统中,为了抑制电磁干扰(EMI),常常在交流电源进线与电源变压器之间加电源滤波器。常用的电源滤波器如图1。 图1都是双П型LC滤波器,其中C0专用于旁路差模干扰。两者的不同之处在于:图1(b)两个电容接大地。设电感的电阻为R,它们的幅频特性分别是: 当R很小时,上述两个滤波器的谐振频率分别为: 可见,它们的幅频特性相似,谐振频率不同。从滤波效果来看,两者对于降低来自交流电的差模干扰效果差不多,但是后者对于降低共模干扰效果更好。不过,对于采用浮地方式的装置,由于电容不可能直正接到大地,所以只能用前者。 设计滤波器时必须注意让谐振频率远小于干扰频率,处理不好不仅不能衰减干扰,反而放大干扰。以图1(a)的双П型滤波器为例,如果取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,光偶器件是无法隔离的。 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封装。 参考文献 1 美信集成产品公司北京办事处.产品资料全集,2000。 2 Microchip Technology Inc.Microchip Technical Library CD.ROM,2000. 3 王柏林.水轮发电机组的模型参考自适应控制.自动化学报,1989;(6) 4 王柏林.一种用于配电自动化系统的多功能电能表.电力系统自动化.2000;(24) 5 陈淑凤.电磁兼容试验技术.北京:北京邮电大学出版社, 2001.