打印
[技术问答]

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

[复制链接]
633|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DreamofOven|  楼主 | 2015-12-13 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 DreamofOven 于 2015-12-13 21:25 编辑

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

1、误区之一:有了看门狗就不会死机
    死机是指CPU的程序指针进入一个死循环。无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应。显示凝固。单片机死机后,只有复位才能走出死循环,执行正常的程序流程。众所周知,克服死机的最有效手段是加看门狗(WatchDog)。
    目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer接固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句——FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语句的死循环,DogTimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成化.如MAX706,MAX791等;还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705等,具体电路可参阅这些芯片的技术资料。
    有一个错误观点:加了看门狗.单片机就不会死机。实际上,看门狗有时会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双时限看门狗和定时复位看门狗。
    双时限看门狗有两个定时器:一个为短定时器,一个为长定时器。短定时器定时为T1,长定时器定时为T2,0<Tl<<T2;长、短定时器的FeedDog是各自独立的。短定时器象典型看门狗那样工作,它保证一般情况下看门狗有快的反应速度;长定时器的定时T2大于CPU执行一个主循环程序的时问,并且每一个主循环才FeedDog一次,用来防止看门狗失效。
    这样,当程序进入某个死循环,如果这个死循环包含短定时器FeedDog语句而不包含长定时器FeedDog语句.那么长定时器终将溢出,使单片机复位。巧妙安排长定时器FeedDog语句的位置,可保证出现死机的概率极低。在水轮发电机组微机控制装置中的对比应用证明了这一点。
    目前几乎所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU看门狗是不能保证单片机百分之百不死机的。
    在绝对不允许死机的装置中,笔者设汁了一种完全不依赖于CPL]的看门狗——定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要CPU FeedDog。
    简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器的定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括IC卡电能表、复费率电能表、多功能电能表)中采用定时复位看门狗,每1秒让CPU强行复位,迄令数十万电表运行了近五年,无一例死机报告。
    必须指出,采用这种看门狗,CPU的编程要适应定时复位的环境.保证定时复位不打断那些不能打断的程序.不造成任何误动作。
沙发
DreamofOven|  楼主 | 2015-12-13 21:22 | 只看该作者
2、误区之二:加电源滤波器能提高EMC性能
    在单片机系统中,为了抑制电磁干扰(EMI),常常在交流电源进线与电源变压器之间加电源滤波器。常用的电源滤波器如图1。

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

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

    可见,它们的幅频特性相似.谐振频率不同。从滤波效果来看,两者对于降低来自交流电的差模干扰效果差不多,但是后者对于降低共模干扰效果更好。不过,对于采用浮地方式的装置,由于电容不可能直接到大地,所以只能用前者。
    设计滤波器时必须注意让谐振频率远小于干扰频率,处理不好不仅不能衰减干扰,反而放大干扰。以图1(a)的双Π型滤波器为例,如果取L=1mh,R=lΩ.C=0.47uF(这是许多资料推荐的参数),可计算出f0=5.2kHz。而EMC测试中的快速脉冲群频率是5.0kHz(2kV)或2.5kHz(4kV);5.0kHz刚好谐振,2.5kHz也不会被衰减,如图2虚线所示。可见,不是所有的电源滤波器都能提高EMC性能。工程中.许多装置尽管采用了成本不菲的滤波器,但EMC测试仍难通过,原因大多在此。

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

使用特权

评论回复
板凳
DreamofOven|  楼主 | 2015-12-13 21:23 | 只看该作者
3、误区之三:光偶器件隔离干扰很彻底
    光偶器件是最常用的隔离**件。例如现场的开关量引到测控装置后都要加光隔,以切断来自现场的传导干扰;RS485通讯口经光隔再与外部通讯线连接,防止来自外部通讯线的传导干扰。
    有不少人认为:光偶器件隔离干扰很彻底,用了光偶隔离干扰就过不去了。其实,光电隔离并非万全之策。
    首先,光偶器件本身只能隔离传导干扰,它隔离不断幅射、感应干扰。幅射来自空间,感应来自相邻的导体。最常见的败笔是:设计PCB时将光偶器件的输入和输出电路布在了一起.这时干扰从光偶器件是过不去了,但却很容易经输入电路感应到输出电路。
    其次.光偶器件隔离传导干扰的能力也只有1kV左右,1kV以上的干扰或浪涌一般是力所不能及的。比如EMC的快速脉冲群测试,施加的干扰信号幅值是2kV、4kV、8kV,光偶器件是无法隔离的。

使用特权

评论回复
地板
DreamofOven|  楼主 | 2015-12-13 21:24 | 只看该作者
4、误区之四:PCB布线要横平竖直
    提起PCB布线,许多工程技术人员都知道一个传统的经验:正面横向走线、反面纵向走线,横平竖直,既美观又短捷;还有一个传统经验是:只要空间允许,走线越粗越好。可以明确地说,这些经验在注重EMC的今天已经过时。
    要使单片机系统有良好的EMC性能,PCB设计十分关键。一个具有良好的EMC性能的PCB,必须按高频电路来设计——这是反传统的。单片机系统按高频电路来设计PCB的理由在于:尽管单片机系统大部分电路的工作频率并不高,但是EMI的频率是高的。EMC测试的模拟干扰频率也是高的。要有效抑制EMI,顺利通过EMC测试.PCB的设计必须考虑高频电路的特点。PCB按高频电路设计的要点是:
    (1)要有良好的地线层。最好的地线层处处等电位,不会产生共模电阻偶合,也不会经地线形成环流产生天线效应;良好的地线层能使EMI 以最短的路径进人地线而消失。建立良好的地线层最好的办法是采用多层板,一层专门用作地线层;如果只能用双面板.应当尽量从正面走线,反面用作地线层,不得已才从反面过线
    (2)保持足够的距离。对于可能出现有害耦合或幅射的两根线或两组线要保持足够的距离,如滤波器的输人与输出、光偶的输人与输出、交流电源线与弱信号线等;
    (3)长线加低通滤波器;走线尽量短捷,不得已走的长线应当在合理的位置插入C、RC或LC低通滤波器。
    (4)除了地线,能用细线的不要用粗线。因为PCB上的每一根走线既是有用信号的载体,又是接收幅射干扰的天线,走线越长、越粗,天线效应越强。

使用特权

评论回复
5
DreamofOven|  楼主 | 2015-12-13 21:24 | 只看该作者
5、误区之五:lC芯片的封装形式不影响性能
    众所周知,IC芯片的封装有贴片式和双列直插式之分。一股认为:贴片式和双列直插式的区别主要是体积不同和焊接方法不同.对系统性能影响不大。其实不然。
    前面说到,PCB上的每一根走线都存在天线效应。现在要说,PCB上的每一个元件也存在天线效应,元件的导电部分越大,天线效应越强。所以,同一型号芯片。封装尺寸小的比封装尺寸大的天线效应弱。这就解释了许多工程师已经注意到的一个现象:同一装置,采用贴片元件比采用双列直插元件更易通过EMC测试。
    此外,天线效应还跟每个芯片的工作电流环路有关。要削弱天线效应,除了减小封装尺寸,还应尽量减小工作电流环路尺寸、降低工作频率和di/dt。留意最新型号的IC芯片(尤其是单片机)的管脚布局会发现:它们大多抛弃了传统方式——左下角为GND右上角为VCC,而将VCC和GND安排在相邻位置,就是为了减小工作电流环路尺寸。
    实际上,不仅是IC芯片,电阻、电容封装也与EMC有关。用0805封装比1206封装有更好的EMC性能,用0603封装又比0805封装有更好的EMC性能。目前国际上流行的是0603封装。

使用特权

评论回复
6
quray1985| | 2015-12-14 18:05 | 只看该作者
看门狗有时会完全失效,所以写程序的时候还是要多加注意

使用特权

评论回复
7
春风的暖暖| | 2015-12-15 11:23 | 只看该作者
DreamofOven 发表于 2015-12-13 21:22
2、误区之二:加电源滤波器能提高EMC性能
    在单片机系统中,为了抑制电磁干扰(EMI),常常在交流电源进线 ...

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

使用特权

评论回复
8
玛尼玛尼哄| | 2015-12-15 21:03 | 只看该作者
所有的看门狗都是依赖于CPU(依赖于CPU FeedDog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于CPU看门狗是不能保证单片机百分之百不死机的。

使用特权

评论回复
9
huangcunxiake| | 2015-12-16 17:26 | 只看该作者
看门狗有时会完全失效。当程序进入某个死循环,而这个死循环中又包含FeedDog语句,这时DogTimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双时限看门狗和定时复位看门狗。
这说明狗可能会死掉。

使用特权

评论回复
10
大苏牙| | 2015-12-16 19:51 | 只看该作者
DreamofOven 发表于 2015-12-13 21:24
4、误区之四:PCB布线要横平竖直
    提起PCB布线,许多工程技术人员都知道一个传统的经验:正面横向走线、 ...

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

使用特权

评论回复
11
wahahaheihei| | 2016-1-19 11:28 | 只看该作者
大师真有研究,得好好看看

使用特权

评论回复
12
orangebanana| | 2016-1-19 20:01 | 只看该作者
DreamofOven 发表于 2015-12-13 21:24
5、误区之五:lC芯片的封装形式不影响性能
    众所周知,IC芯片的封装有贴片式和双列直插式之分。一股认为 ...

这个是低速的情况影响不大,高速就不行了

使用特权

评论回复
13
598330983| | 2016-1-20 22:35 | 只看该作者
错误观点:加了看门狗.单片机就不会死机。实际上,看门狗有时会完全失效

使用特权

评论回复
14
643757107| | 2016-1-20 23:10 | 只看该作者
死机是指CPU的程序指针进入一个死循环。无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应。

使用特权

评论回复
15
Tennasi| | 2016-1-21 08:51 | 只看该作者
单片机设计里面如何能让它稳定呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

178

帖子

0

粉丝