1、重庆大学本科学生毕业设计(论文)附件 附件:C 译文C1附件 C:译文单片机的电磁兼容性设计1 背景知识该应用笔记讨论了如何设计一个考虑电磁兼容性的 MCU 应用系统。现在几乎每一个消费电子、汽车、工业应用都有一个 MCU 在内,且在多数情况下都是采用廉价、单芯片的 MCU。单片机是这些应用系统的理想选择,由于它具有灵活性和集成性。典型的单片机具有 CPU、RAM 、ROM 和 IO 口,并且可以具有如模数转换模块、LCD 驱动、基于电视应用的屏幕显示、基于电话的 DTMF 发生器、交流电机驱动电路、EEPROM 等定制的功能模块。由于单片机功能增加且变得越来越复杂。随着市场价格的下降,MCU
2、 生产商必须不断地减少他们的制造成本。减小片上晶体管和门的大小可以实现这一点,而且还可以帮助生产出能够工作在更高频率上的 MCU。当一个晶体管减小,其状态转换时间将会减少。根据傅里叶分析,信号的边沿快速变化会产生谐波信号,这些信号被放大会引起辐射问题。同样的,如果器件具有很快的转换时间,它们会对到来的更快的信号产生作用。高频噪声尖峰和错误信号,将会引起门状态的转变。大多数现代 MCU 工作的速度在 2MHz 到40MHz 范围内,内部的器件具有从几纳秒到低于一纳秒不等的转换速度,这使它们具有潜在的 EMC 问题。2 EMC电磁兼容性许多电子线路相互靠近,保证它们不会被外部噪声源影响,并且这些电
3、路本身不会成为噪声源而影响到其他电路是必要的。这种关系被称之为电磁兼容性。EMC 问题可以分为辐射问题和感受问题。辐射问题和感受问题都会具有传导性质或辐射性质。例如,图 1 所示是一个办公室复印机发射射频信号到外界环境的案例。这种射频信号引起了监视器的显示故障,是一个辐射 EMC 问题。类似的,复印机辐射噪声到电力电源线上,反过来传导到电脑监视器电力电源线上,从而以传导方式引起了故障。由于设计不合理和较强的射频噪声辐射,监视器可以被视为复印机电磁干扰的受害者。可以认为监视器的设计存在缺陷,并且不能指导教师评定成绩(五级制) :指导教师签字:重庆大学本科学生毕业设计(论文)附件 附件:C 译文C
4、2处理存在于电子办公设备中的背景环境噪声。图 1 电磁兼容性案例3 辨别一个 EMC 问题在早期或全面生产产品的时候发现一个 EMC 问题具有很高的价值,这可能导致 PCB 板的重新设计。因此,在设计的初期就应该考虑产品 EMC。然而,无论在什么阶段发现了 EMC 问题,要问的第一个问题是:“这个 EMC 问题是辐射问题还是感受问题?” 理所当然,接下来应该问: “是 MCU 辐射出噪声对其他电路造成影响还是外部产生的噪声引起了 MCU 的异常举动?”3.1 辐射问题来自于数字信号源的辐射通常是由高频时钟产生的高频谐波。这些辐射一般由电源和数字信号回路的开关电流以及主电源转换为数字电源时的开关
5、电流的辐射引起。这些开关电流循环流动就像小天线,并辐射出差模磁场。此外,任何电阻的和电感的路径会导致电路中电压下降,这将使电路中的某些部分处在一个相对于地的共模电位上。如果一个辐射问题存在于一个单片机应用中,那么 PCB 设计最有可能是问题的主要原因,因为硅片上的环路面积数量级要比在 PCB 上的小得多。辐射可能来自电源,因为数字芯片中的所有电流都从这里通过。端口引脚被设计得具有更高的驱动能力,因此尺寸通常偏大,这使得电容增大以确保数字信号的转变比内部门电路的转变要慢些。因为端口引脚通常是由软件控制的,他们的转变要比MCU 内部电路的转变慢一些。这就意味着端口引脚通常不存在辐射问题。唯一的例外
6、是当端口引脚驱动大电流的情况,这里的磁场强度正比于开关电流,也正比于回路天线面积。解决问题的方法是减小电流或者减小回路面积。在大多数情重庆大学本科学生毕业设计(论文)附件 附件:C 译文C3况,改变的是环路面积。MCU 最快的外部基准频率是晶振电路频率。如果使用晶振电路,那么这个信号通常近似于正弦波。因为晶振电路很小,且信号近似正弦波,高次谐波衰减很大,因此不会影响其他电路。如果时钟来源于外部,要注意信号的路径尽可能的靠近地线平面以最大限度减小环路。对带有外部存储设备甚至微处理器的 MCU,辐射的问题可能更加严重。举例来说,在这时主要的噪声源是使外部存储器工作的时钟,它的转换很快,布线没有经过
7、思考而且具有很长的地环路。这使得时钟信号就像是一个很强的环形天线,它辐射时钟信号和高次谐波。低位地址和数据线没有正确放置同样会引发一些问题,但是减小电流环路会有明显的帮助。3.2 感受问题大多数 MCU 采用 CMOS 技术设计且按门闩和触发器原理工作从而构成更加复杂的功能。因为它们的同步特性,一个坏的时钟电平很容易造成故障。任何CMOS 器件都具有一个噪声容限,如果超过该容限将会导致故障。故障通常有这四类型:1. MCU 暂时出现障碍,然后自行恢复。2. MCU 发生故障,然后中断或者复位以恢复正常。3. MCU 发生故障断电,然后通过上电进行恢复。4. MCU 发生故障且发生闩锁效应从而导
8、致永久的损坏。如果故障属于 1 和 2 类,这可能不会引起注意,由于这两类故障的发生无规律,终端用户可能永远看不到。然而,如果故障属于 3 和 4 类,它一定会被看做一个免疫问题并且不会被任何制造商接受。第四类故障在其领域类内的第一次发生是有必要的,因为在设计阶段发生的故障会使得产品发布停止。如果在产品的设计阶段没有进行 EMC 测试,这类故障将会是无法预测的。4 解决电磁兼容性问题通过给予以下三个方面特别的关注能够使所有 MCU 应用的电磁兼容性得到提高:1. PCB 布局2. 看门狗电路3. 防御性编程4.1 PCB 布局PCB 布局是 MCU 免疫故障最普遍的诱发因素。通过关注 MCU
9、的三个关键重庆大学本科学生毕业设计(论文)附件 附件:C 译文C4地方,可以提它的高电磁兼容性。这三个关键地方是:1. 电源布线2. 晶振电路3. 输入引脚4.1.1 电源电源上的任何噪声无疑会引起故障发生。如果 VDD 或者 VSS 线不稳定,那么内部电路(如触发器和反相器)可能会改变状态,从而导致故障发生。同样的,如果有电流发生大的、快速的变化,那么可能会发生较强的辐射。一般来说,任何不需要的高频信号必须通过到地的低阻抗路径得到衰减。因为所有的信号电流都会流过 VSS 和 VDD,所以信号线应该尽量靠近 VDD 和 VSS 以减小电流环路面积。采用具有地线层和电源层的多层 PCB 板总能达
10、到较好的效果,因为这总能将所有电流环路的面积减到最小,并且减小信号线之间的互感。在低成本的应用中,一般的多层 PCB 板是缩减成本的关键,因此经常使用双面或单面板。因此,为了对抗电磁兼容性问题,需要对 PCB 设计的其他方面给予更多的关注。确保地线和电源线尽可能宽,退耦尽可能地靠近单片机能减少互感。细导线对高频电流具有高阻抗,这意味着电流通过它们将会产生潜在的差异。对于变化快的电流(这取决于器件的直流电源是怎样产生的)可以通过确保VSS 和 VDD 到大地具有低阻抗路径来提高电磁兼容性。用交流电力电源变换产生直流电源最一般的方法如图 2 所示。交流电力电源通过降压得到一个较小的交流信号,经过桥
11、式整流得到直流电压,然后通过滤波或平滑,再通过电压调节器。在这种情况下,任何金属附件都要连接到地线上。由于退耦电容的存在,高频信号在 VDD 和 VSS 的电位将会是一样的。在图2 中开关电流到大地的低阻抗路径是 VSS 路径。图 2 交流电力电源变换成直流电源的典型方法重庆大学本科学生毕业设计(论文)附件 附件:C 译文C5注意如果附件之间的连接不良,那么较高的地阻抗将会导致较高的差模电压。这反过来又会带来更坏的结果。对这个电路,任何高频信号线应该和 VSS 进行退耦以避免串扰和辐射。在一些低成本的应用中,直流电源的产生略有不同。一个替代电路如图 3 所示。图中一个耐高压的二极管和电容被连接
12、到电力电源上组成一个半波整流器。然后通过一个平滑电容消除纹波,一个齐纳二极管连接到电力电源上,它的阳极处于浮地状态。图 3 低成本的交流电力电源变换成直流电源的方法此时,到大地的低阻抗路径是通过带电的电力线的 VDD 电源线。在这种情况下,在高频信号线与 VSS 地线间进行退耦对单片机的电磁兼容性将起不到帮助。在一定程度上,对这种类型的电路,在高频信号线和 VDD 电源线间进行退耦会更加合理。电源上的退耦不充分是一个常见的故障。在电源间连接一个 0.1uF 的标准电容是很平常的。这个电容对低频噪声很有效,而且保证 MCU 有一个良好、稳定的电流供给。但是,如果 MCU 工作在 40MHz 及以
13、上频率时存在辐射或者免疫问题,那么 0.1uF 的电容可能不会对减少衰减起到很大作用。因为所有的电容即便是采用 SOIC 封装都具有一个内部电感和引线电感,一个典型的退耦电容具有大约 5nH 的电感。这意味着并联谐振会在大约 7MHz 的频率上发生,在感抗后它将成为高频中的主要成分。在尽可能靠近电源线的位置安装一个 1 到 10nF 的电感可以得到一个好的结果(谐振频率将高于 20MHz) 。在设计单层 PCB 板时,选择合适的退耦电容可以对它的电磁兼容性产生重要的影响。4.1.2 晶振晶振电路(如图 4)由一个连接到晶体振荡器或陶瓷振荡器的反相器组成,这个反相器是位于 MCU 内部的。连接在
14、上面的还有一个反馈电阻和一些小容值重庆大学本科学生毕业设计(论文)附件 附件:C 译文C6退藕电容(用于减少由压电设备产生的谐波的) 。图 4 典型的振荡电路MCU 内部的反相器具有高输入阻抗和输出阻抗。它的输出驱动能力低,以保证不会对晶体造成损坏。振荡器的输出同时到达另一个缓冲器然后到预分频器。分频器对振荡器时钟进行 2 分频,为内部 CPU 提供了一个稳定的 50%占空比的时钟。CPU 通过高速转变建立地址并在下降沿捕捉数据。设计的工作在 2MHz 时钟下的 CPU 可以在 4MHz 时钟下工作。MCU 的速度限制是由 CPU 的功能来决定的。如果振荡电路中存在任何的噪声,那么 CPU 故
15、障可能会发生。故障的原因如图 5 所示。在图 5(A)中的是所希望的振荡时钟,通过分频器可以为 CPU 提供 50%占空比的周期信号。在图 5(B)中的是晶振电路中混有噪声尖波的结果,这导致了 CPU 的时钟占空比不再是 50%。这意味着 CPU 不能够正确的为程序计数器建立地址或者不能取得正确的数据,结果导致 CPU 程序跑飞。如果噪声波尖只出现了一次,那么通过看门狗执行一次复位动作就能够使 CPU 恢复正常工作。重庆大学本科学生毕业设计(论文)附件 附件:C 译文C7图 5 振荡电路中的毛刺的影响确保振荡器设计在最干净的电磁环境中可以通过以下几点得到实现:1.保证晶体和其他振荡器元件尽可能
16、的靠近 OSC1 和 OSC2 引脚。避免过长的PCB 走线,因为长的走线对存在于应用中的高频信号就如同一个天线。2.用一个可以减小回路面积的地线保护环路将振荡电路围起来。3.通过去耦使晶振电路到大地具有最小的阻抗路径。4.保持任何快变换信号远离振荡器线路。图 6 是一个典型的振荡电路 PCB 布局图 6 MC68HC05P3 典型的振荡器 PCB 布局4.1.3 输入引脚保护输入引脚同样关键,特别是 RESET 和 IRQ 引脚。一个较高的 IDD 电流通常是一个标志,显示了输入引脚悬空未用。这是由 N 沟道和 P 沟道晶体管门的影响所导致的。如果引脚悬空未用,其电平浮动在 VSS 和 VD
17、D 中间。在这种情况下,正反两种器件都处于开启状态,这使得 VSS 和 VDD 呈现出阻抗。因此,电流从这两个晶体管中流过。经过输入缓冲后,预计一个电平将会占据主导并保证其后的门处在一个静态的状态。但是,任何噪声在附近的波动都会导致缓冲器输出发生转变,而后使得其后的门状态发生变化并导致功率消耗增加。如果缓冲器状态转换频率足够高,MCU 内部其他电路之间的串扰会导致故障发生。一般的,所有靠近高频信号的输入引脚应该连接一个硬件低通滤波器或一些小的去耦电路。一般 RESET 引脚不会被悬空,因为在那种情况下 MCU 的工作将不正常。通常的情况是 RESET 引脚在 PCB 上是连接到其它的器件或者电
18、路的。虽然 RESET 通过连接到一个上拉电阻避免了引脚的悬空,但是导线对于高频信重庆大学本科学生毕业设计(论文)附件 附件:C 译文C8号就如同一个天线并且收集了足够的能量形成了一个小的脉冲。这将导致对MCU 进行未知的或者部分的复位。规定的,RESET 脉冲必须持续两个 CPU 时钟以上,以确保正确的复位。通过去耦使得这些引脚具有低阻抗回路,并且去耦尽可能靠近引脚。这样就可以对高频噪声进行衰减。并提高 MCU 的免疫性能。另外一点是尽量减少边沿触发中断。如果中断可以通过电平触发,那么这可以保证在中断引脚上的噪声不会引起不希望的动作。如果不能通过电平触发,那么一旦进入边沿触发方式的中断就通过
19、软件检测引脚的电平是否正确。这种方法是可行的。4.2 看门狗电路看门狗电路通常被描述为必须由 MCU 在一定时间间隔进行更新的硬件电路或者是引起 MCU 复位的电路。有一个外部的看门狗电路是最好的,因为它独立于 MCU。如果 MCU 不能成功更新看门狗,那么看门狗电路就会给 MCU 一个复位信号。看门狗通常包含一个硬件定时器。如果没有来自 MCU 的更新或者报告信息,定时器将会超时。图 7 是一个简单的看门狗电路:图 7 外部看门狗电路在上电时,MCU 通过上电复位保持复位状态。看门狗的时钟可能来自于外部时钟源或者是 MCU 的晶振电路。当 MCU 处在复位状态时,IO 引脚作为输入,计数器处
20、于运行状态。如果 Q 为 0 并且 C1 充满电,则 MCU 将退出复位状态。MCU 的第一任务是发出一个脉冲将计数器复位到已知的超时值。MCU 的 I/O口通过交流耦合以保证只有边沿能再次触发计数器。这保证了一个常值直流电平不会使 MCU 或看门狗丧失功能。在 Q 输出变为 1 前,MCU 必须发送一个脉冲重庆大学本科学生毕业设计(论文)附件 附件:C 译文C9确保 MCU 没有复位。通常,MCU 需要两条软件指令。另外一个最好的选择是让 MCU 有一个片上的看门狗(如图 8) 。例如,摩托罗拉的 MC68HC705C8 就自带有包含可编程定时器的看门狗。它必须在大约32768 个时钟周期被
21、更新,不然它将会产生一个内部的复位信号。图 8 片上看门狗CM1/CM0 位用于选择超时周期。COPE 位只能写一次,在看门狗使能后除复位外的其他方式是不能使其丧失功能。COPE 位是告知用户复位信号是来自看门狗还是其他原因的一个标志。刷新看门狗的顺序是对 COP 复位寄存器(COPPRR)进行两次写操作,其顺序是往 COPPRR 写入$AA 后再写入$55。并非所有的 MCU 在 PCB 板上都具有看门狗电路,但是有时软件设计者可以使用未用的中断实现自己的看门狗。例如 MC68HC05P1 没有看门狗,但是有一个 16 为的自由运行的定时器。这个定时器可以在下列三种情况下产生中断:1.定时器
22、溢出(FFFF 到 0000) 。2.输出比较。 (16 位的寄存器和定时器的计数器比较) 。3.在 TCAP 引脚上捕获到一个上升或下降沿。例如,如果输出比较中断没有生效,它可以用作一个假的看门狗。但是在这种情况下定时器将和输出比较寄存器进行比较,然后检查系统的一切是否正常。如果系统运行正常,程序就会从中断中返回。如果出现异常,那么程序将会跳转到初始化程序并对堆栈指针进行重新设定。在程序中合理对看门狗进行更新并不是一个简单的任务,对看门狗的更新通常是程序结束前的最后一个步骤。通常,用户需要为所用的中断程序和子程序、关键的和非关键的应用检测软件流量和时序。理想情况下,在整个程序中进行一次看门狗
23、刷新是最好的,但是 MCU 包含大量的程序,因此这很少成功。如果可重庆大学本科学生毕业设计(论文)附件 附件:C 译文C10能,看门狗刷新程序不应该放在中断或子程序中,但是应该放在主循环中。注意刷新频率不要太高,不然从程序跑飞状态中恢复的机会将会降低。4.3 预防性编程通过简单的预防性编程,MCU 的免疫性能可以得到很大限度的提高。预防性编程的优点是实现费用不高,如果实现正确还可以减少 PCB 布局在硬件上的花费。4.3.1 更新端口引脚预防性编程的一个最简单的例子是不断地更新 I/O 引脚和重要的寄存器。在大多数 MCU 应用中。软件中会有一个按规律执行的主循环。在结构上,I/O 引脚处在靠
24、近焊盘的位置,并靠近集成芯片的边缘。当特定幅度的噪声受到 MCU 的支配,那么它将通过芯片边缘传播到硅上。这意味着在芯片边沿的逻辑最容易受到外部噪声的影响,例如输入输出电路。所以,通过在一定时间间隔对数据寄存器和数据方向寄存器进行更新可以减少故障的威胁。4.3.2 轮询输入另一个想法是通过对输入引脚进行多次读取,并用读取结果的平均值作为正确值来进行噪声滤除。一个按键的典型应用是在软件中轮询,然后按照 10ms 的周期再读几次,以确保真实的按键动作发生。这种形式的轮询被称为去抖保护。对高频轮询,下面是一个 HC05 的代码。BSR Read_RX_pinRead_RX_pin:not_a_one
25、: BRSET RX, PortA, not_a_zeroBRSET RX, PortA, not_a_zeroBRSET RX, PortA, not_a_zero* 一个逻辑0被读取了三次,所以这是一个0RTSnot_a_zero: BRCLR RX, PortA, not_a_oneBRCLR RX, PortA, not_a_oneBRCLR RX, PortA, not_a_one* 一个逻辑1被读取了3次,所以这是一个0RTS这个程序将会快速连续地读取端口。如果对端口的三次读取都是一样的,那么 CPU 将会在读取时返回进位标志,它是 HC05 CPU 的 BRSET 和 BRCLR 的一