11.1 引言
推荐给好友
打印
加入收藏
更新于2009-06-19 09:00:17

本章将以一个应用系统的实例来介绍单片机应用系统的设计。

一个实际的单片机应用系统的设计有公认的原则和规律。本章力求全面、准确地说明这些原则与规律,但要考虑到本书的读者又都是单片机的初学者,本书的目的是为了让读者更快、更好地掌握单片机。因此,本书在举例时,必须考虑与本书以前章节的内容相衔接和符合本书的写作宗旨。这里肯定在叙述设计原则和规律与举例之间存在矛盾和差异的地方,请读者加以注意。在注意这些矛盾和差异之后,作者认为可以“坏事变好事”,在举例中不符合设计原则和规律的部分,无疑是一个“设计”的缺陷所在,通过实验可以给读者以更深、更加具体的印象,有助于读者真正地、更快、更好掌握单片机及其开发技术。

单片机及其嵌入式应用系统的设计与开发一般包括五部分内容:方案论证、硬件系统设计、系统软件设计、系统仿真调试和脱机运行。这五部分有先后顺序关系,但又有反复,如图11-1所示。


图中的虚线表明,一个单片机及其嵌入式应用系统的设计与开发是难免有反复的过程。考虑周到、技术路线合理、推理严谨、经验丰富可以减少这些反复,特别是较大的反复。

这些反复往往表现在处理下述几个关系上。

11.1.1 资源冗余与成本控制

单片机的资源主要是信息处理能力(包括运算速度、存储器大小、外设及其扩展等),而这些资源往往直接与成本相关,即资源需要越多,成本越高。绝多数情况下,没有经验者出现的错误是资源不够实际使用。作者的建议是:

1. 选用具有不同配置但引脚完全兼容的单片机和外设及其接口设计
如选用89C51单片机时,考虑到与89C51完全兼容的单片机品种较多,从片内程序与数据的存储容量来看,有8K字节程序和256字节数据的89C52,还有16K字节程序和256字节数据的89C54,更有32K字节程序和256字节数据的89C58。有些新型的单片机片内程序的容量已到了64K甚至几百K字节,片内数据的容量已到了几K字节。从速度来看,从标准的12MHz时钟,到40MHz的时钟,更重要的是,从12分频的指令周期到6分频、3分频和不分频的单片机都大量出现。上述单片机的出现,为设计时系统资源与应用要求的匹配提供了很大的回旋空间。

2.宁多不少的原则
即使是经验丰富的设计者,也往往对系统所需资源估计不足,何况对初次设计者,则更难准确估计系统所需资源。这也是任何一个单片机应用系统需要反复“研究”、反复“实验”的原因。因此,设计单片机应用系统时,考虑系统资源必须有“宁多不少”的原则。采用“宁多不少”的原则还有以下的理由:
(1) 很少有单片机应用系统能够一次设计成功。正如一句俗话说得好:不犯错误是人们的理想,只有神仙才能做得到。在实际开发管理上,最终的产品总是要经过若干次电路、程序的修改设计。与其一次次地修改设计、增加资源,耗费大量的时间、精力,不如第一次设计使系统有充分的资源,具备足够的冗余,在最后定型时去除冗余的资源,反而可以更快、更好地完成单片机应用系统的开发。
(2) 我们所处的时代,是技术上日新月异的时代,产品的更新换代已经到了令人目不暇接的地步。因此,留有充足的资源,可以为产品的升级换代留有足够的资源储备。
(3) 留有足够的资源,尤其是单片机的信息处理能力,可以为提高系统的性能,如抗干扰能力、智能化水平提供基础,也为生产多种花色、品种提供基础。
(4) 在采用嵌入式实时操作系统和高级语言编程时也要有足够的资源,主要是存储空间和运算速度来支撑。

3.结合现实条件,尽量选择新型高集成度的单片机和外设
开发单片机应用系统,要全面考虑单片机的选型和技术方案:不仅要考虑欲开发的单片机应用系统的性能与成本(当然,这是必须保证的前提),也要考虑现有的技术能力、基础与条件。在自身的技术能力、设备条件、厂商的技术支持(这是应该特别重视的一个因素)、所允许的开发时间、经费等都容许的情况下,应该尽量选择新型高集成度的单片机和外设,由于新型高集成度的单片机和外设往往具有更高的性能(速度和能力),集成度高也往往意味着更小的体积、更低的功耗,而这些又肯定带来更高的可靠性和更低的成本等效益。

11.1.2 硬件处理与软件处理

一个单片机应用系统,说到底是对信号进行处理的系统。对信号进行处理有两大类方法:软件处理和硬件处理。表11-2给出这两大类处理方法的对比。


采用软件处理还是采用硬件处理的方式,要根据系统的实际要求来决定。如对信号的滤波处理,就要根据信号的快慢(数据量的大小)和处理的要求来决定,速度高、数据量大和要求实时处理,以采用硬件处理为宜,反之,则可以采用软件处理。也可以采用软件、硬件结合的方式。

又如键盘与LED显示:如果按键和LED(或数码管)不多,也有足够的口线,可以采用软件来管理,反之则采用硬件来管理。

但也有单片机集成了较多的口线和LED(或LCD)驱动器,即使系统需要较多的按键和LED,则仍然采用单片机来管理,这时,可以说是在更高的层次上来解决问题。这说明,设计系统小原则要服从大原则,考虑问题要全面、周到。

11.1.3 嵌入式实时操作系统与开发用软件

是否选用嵌入式实时操作系统和采用何种语言作为编程语言,是单片机应用系统设计是必须确定的关键问题之一,它关系到系统开发的成败、系统的性能和开发效率的高低。下面先讨论嵌入式实时操作系统的问题,然后讨论开发用软件的问题。

1.嵌入式实时操作系统简介
“实时操作系统”是相对“分时操作系统”而言的,我们日常接触的通用操作系统(如Windows、Unix、Linux等)都是分时操作系统。实时操作系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。与分时系统相比,具有多路性、独立性、及时性、交互性、可靠性的特点。分时操作系统的基本设计原则是:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。由此可以看出,分时操作系统注重平均表现性能,不注重个体表现性能。而对于整个系统来说,注重所有任务的平均响应时间而不关心单个任务的响应时间;对于某个单个任务来说,注重每次执行的平均响应时间而不关心某次特定执行的响应时间。而对于实时操作系统,除了要满足应用的功能需求以外,更重要的是还要满足应用提出的实时性要求,而组成一个应用的众多实时任务对于实时性的要求是各不相同的。此外实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等,这就为系统实时性的保证带来了很大的困难。因此,实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求。也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况的表现。举例来说,如果实时操作系统采用标准的虑存技术,则一个实时任务执行的最坏情况是每次访存都需要调页,如此累计起来的该任务在最坏情况下的运行时间是不可预测的, 因此该任务的实时性无法得到保证。由于实时操作系统与通用操作系统的基本设计原则差别很大, 因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异。 一个好的实时操作系统需要具备以下功能(必须但非充分):

  • 多任务和可抢占的;
  • 任务具有优先级;
  • 操作系统具备支持可预测的任务同步机制;
  • 支持多任务问的通信;
  • 操作系统具备消除优先级转置的机制;
  • 存储器优化管理(含ROM的管理);
  • 操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。这是指在全负载的情形下,最坏反应时间可知;
  • 实时时钟服务;
  • 中断管理服务。

实时系统最关键的部分是实时多任务内核。它的基本功能包括多任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、信号量管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是实时操作系统的API(Application Programming Interface,应用编程接口)。

嵌入式操作系统并不一定是实时的。如windows CE,现在比较热的嵌入式Linux的大多数版本也都不是实时的。对于windows CE和嵌入式Linux,也就是所谓“软实时”操作系统的说法,但严格来讲它们都不能算是真正的实时操作系统。这主要是因为windows和Linux最初都是按分时系统设计的,即使做成嵌入式的应用也无法实现真正的实时性。实时操作系统也并不一定要是嵌入式的,在微机上一样可以装实时操作系统, 而实际上大多数实时操作系统也都支持PC机使用的X 86芯片。非实时的嵌入式操作系统的应用领域如机顶盒、PDA、掌上电脑等,这类应用对实时性并没有特殊的要求。嵌入式实时操作系统是将嵌入式和实时性相结合的产物。由于其优良的特性,广泛应用于制造工业、通信、航空航天、军事武器装备等领域。它的主要特点如下:

  • 响应时间快,并且有确定的硬实时性要求;
  • 具有异步处理并发事件的能力;
  • 具有快速启动、出错处理和自动复位功能;
  • 嵌入式系统的应用软件与操作系统之间的界限模糊,往往是一体化设计的程序;
  • 软件开发困难,要使用交叉的开发环境(即开发环境与运行环境不同,开发平台叫宿主系统,而嵌入式系统的运行系统叫目标系统)。

2.几种用于8位单片机的
(1) RTX51 TINY
RTX51是KEIL公司开发的用于8051系列单片机的多任务实时操作系统。它有两个版本,RTX51 FULL和RTX51 TINY。RTX51 TINY是RTX51 FULL的子集,仅支持按时间片循环任务调度,支持任务间信号传递,最大16个任务,可以并行地利用中断。具有以下等待操作:超时、另一个任务或中断的信号。但它不能进行信息处理,不支持存储区的分配和释放,不支持占先式调度。RTX51 TINY一个很小的内核,完全集成在KEIL C51编译器中。更重要的是,它仅占用800字节左右的程序存储空间,可以在没有外扩数据存储器的8051系统中运行,但应用程序仍然可以访问外部存储器。

(2) CMX
CMX RTOS是一个多任务文时内核:主要应用于8位及16位的单片机应用场合。它以C编写,提供了系列的内核服务,方便用户编程。CMX实时内核具行重新配置(可裁减)功能,用户可以根据应用的实际要求在系统中只包含必要的内核服务。
CMX提供了一个操作系统内核和一系列函数调用。该内核可以完成对任务的控制、发送和接收消息,处理事件,控制资源,用不同方法控制定时、提供内存管理、任务切换和中断。
CMX还提供PC机上的开发平台合PcProto,可以在PC机上实现快速的应用开发。
CMX-CAN是一个复杂的CAN总线应用接口软件包,作为CMX的扩展。
CMX-TCP/IP是一个可移植的高性能专家库函数。
CMX的PCMCIA在其提供的一系列函数调用中实现PCMCIA的存储音储映射。

(3) CMX
RTXC(Real-Time eXecutive in C)是C语言的执行体。它是一种灵活的、经过工业应用考验的多任务实时内核,可以广泛用于各种单片机、微处理器和DSP的嵌入式应用系统中。KTXC的一系列内核服务功能可以管理任务和时间,使任务和事例同步,并实现在任务之间传递数据。RTXC的丰富功能还包括可裁减功能,可以根据应用系统复杂程度只须在系统中必要的RTXC内核服务功能即可。
RTXC是自成体系的,包括所有的源代码以及使用多任务软件结构开发应用程序所需要的一切,其中有RTXC实时操作系统内核、安装和调试工具、样板应用源代码和驱动程序。
RTXC在设计上充分利用它所支持的每一种处理器的结构特点。针对所支持的每种种C编译器,RTXC对其C源代码进行优化。
RTXC有许多附加的扩展功能模块,如RTXCio、RTXCfile、RTXCnet以及XpresNET。特别要说明的是XpresNET,它在RTXC中小是—个独立的模块,专门为网络通信而设计。
RTXC版权免费,它包括72个核心服务、90天的保证和维护期,包括所有的升级和无限制的技术支持。

(4) uC/0S-II
uC/0S-II作为一个嵌入式实时操作系统,自1992年以来,因其源代码的完全公开和优越性能,已为众多的爱好者和开发人员所了解并得到了广泛应用。uC/0S-II是一个占先式内核,执行时间可确定(即函数的调用与服务的时间是可知的,不依赖于应用程序的大小),目前最多支持64个任务(8个为系统保留),总是执行处于就绪态的优先级最高的任务。目前,51系列及其扩展型单片机仍在单片机应用系统占较大比重,因而详细介绍uC/0S-II 在AT89C51上的移植实现过程,解决移植过程中出现的问题,有很大的实用意义。
uC/0S-II具有如下的特点:

  • uC/0S-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。
  • uC/0S-II 是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。
  • uC/0S-II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,具有较好实时性,可以保证重要任务总是优先占有CPU。
  • uC/0S-II对共享资源提供了保护机制。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),C/0S-II也提供了很好的解决办法。

3.在单片机应用系统中采用嵌入式实时操作系统

  • 在单片机应用系统中采用嵌入式实时操作系统,有如下的特点。
  • 在单片机系统中嵌入L1C/OS—H将增强系统的可靠性,并使得调试程序变得简单。
  • 在单片机应用系统中采用嵌入式实时操作系统将增加系统的开销,包括机时和存储器。
  • 对非免费的嵌入式实时操作系统,需要较高的费用,有时还是十分昂贵的。
  • 对免费的嵌入式实时操作系统,尽管这些资源带有源码,但理解、消化并用在莱应用系统上是一项艰苦的工作,特别是在没有调试手段的情况下,这一过程就更加漫长艰苦。用于开发产品就显得力不从心,开发周期也变得相当长。

根据上述讨论,我们可以根据实际情况决定是否采用嵌入式实时操作系统和采用何种嵌入式实时操作系统。下面再讨论开发用语言的问题。

开发8051单片机所用的语言主要有三种:汇编语言、PL/M语言和C语言。对汇编语言这里不作过多的介绍,主要介绍PL/M语言和C语言。

PL/M语言是Intel公司开发的,性质与C语言类似的、最贴近硬件的高级语言。 Intel公司从70年代开始就为自已生产的微处理器和微控制器配套PL/M语言。并用PL/M语言开发了微处理器8086上运行的实时多任务操作系统iRMX86,和微控制器(俗称单片机)805l上运行的分布控制系统的操作系统内核DCX51,以及8096上运行的DCX96。时至今日,C语言的普及与技术上的深入已超越了PL/M而占据了主流地位。

C语言伴随着PC机的普及已经得到了前所未有的推广。被举世公认为简洁、高效、而又最贴近硬件的高级编程语言。80年代末,C语言又进一步按照面向对象的方向发展自身,增加了以封装、继承和多态为特点的类的结构形态。封装保证了数据的安全性。继承的层次结构提供了对先辈对象的特征和行为的遗传、改造和阻断遗传的手段:多态则使用同一方法派生不同形态的对象。既提高程序的安全性和模块化水平,又便于软件的修改、扩展和维护。这就是面向对象的C++语言。

将C语言向单片机8051上的移植,始于80年代的中后期。其移植难点有:

  • 805l的非冯诺曼结构(即程序与数据存储空间分立)和片上位寻址空间的结构;
  • 除去片上的数据和程序存储器空间还存在着向片外扩展的可能;
  • 片上集成的外围设备已被寄存器化(即代之以SFR),并未采用惯用的I/0地址;
  • 8051芯片的派生门类特别多(高达上百种),C语言又必须对每一派生芯片的每一硬件资源实现操作。

但是,经过Keil/FrankL1in、Archmeades、IAR、BSO/Tasking等公司不懈努力,终于在上个世纪90年趋于成熟,成为专业水平的单片机高级语言了。C语言克服长时间困扰着人们的“高级语言产生代码太长、运行速度太慢,不适合单片机使用”的致命缺点。目前,使用8D5lC语言编程所产生的代码长度,在未加入人工优化的条件下,已经做到了最优汇编水平的1.2~1.5倍,比得上中级程序员的水平:程序如果长于4K字节,高级语言的优势更能得到发挥。目前,片上ROM空间大到16K/32K/64K字节的805l芯片已经很多,代码空间效率所差的20%~50%已经不是重要问题。执行速度的问题,只要有好的仿真器帮助,人工优化关键代码就成很简单的事了。应该指出,并非全部代码都必须是高速度执行不可的。这里有一个著名的经验公式,一般80%的时间执行的是20%的程序。换句话说,你只需要手工优化这20%的程序即可。好的仿真器提供程序评估器,利用程序评估器可以方便地找出最经常执行的那些程序。如果谈到程序的开发速度、软件质量、程序的坚固性、可维护性和可移植性等方面的话,则C语言的完美绝非汇编语言编程可以比拟的了。

C语言是一种可以在异机种之间移植的高级语言。它有助于打破不同厂家不同系列单片机的界限而统一使用通用的程序。

C语言用于开发单片机应用系统具有以下优势。

  • 编程者运用人类自然思维习惯编写程序。无须迁就单片机的具体的指令集。也就是说,就是不记得单片机的指令集,也能够编写完美的单片机程序。当然,掌握了单片机的指令集,有助于全面、准确地掌握和应用单片机。
  • 编程者无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序。 即便如此,也应该尽可能地学习好单片机及其硬件接口技术。
  • C编译器凝聚了开发该单片机的软、硬件专家的技术水平,能否充分发挥C编译器的专家水平,则取决于编程者自己。但是,只要使用C编译器,基本水平总是可以保证的。例如,各家的C51都无例外地考虑了不同函数之间的数据覆盖问题。覆盖充分而有效地利用片上有限的RAM空间。只要正常使用C语言编程,一定使用了数据覆盖。而即使是最好的汇编语言编程者,也很难实现数据覆盖。
  • 通过调试,排除错误,使程序得以正常执行,仅仅是起码的要求。它与程序的坚固性还是两回事。正如人体机能的完好和具有免疫的潜能是两回事一样。实践证明,数据在运行中间被破坏,是导致程序运行异常的重要因素。C语言对数据进行了许多专业性地处理,避免了运行中间被破坏。该性能体现在变量的说明和多文件的组织程序之中。使用汇编编程,鲜有人会做如此深入地专业性考虑。然而,使用C语言编程的人只要恰当地进行变量的说明和恰当地组织多文件程序就可以轻松地达到增强免疫力的效果。
  • C语言提供处理复杂的数据类型(如数组、结构、联合、枚举、指针等)的机制,极大地增强程序处理能力和灵活性。C语言还提供了单片机专用的sfr、sfr16、bit、sbit等数据类型,为使用SFR提供了极大的方便。
  • C语言提供了auto、static、const等存储类型和专门针对8051单片机的data、idata、pata、xdata、code等存储类型,只要在变量说明时加以存储类型的限定,C编译不会自动地在指定的存储空间变量合理地分配分配地址。
  • C编译器提供了small、compact、large等编译模式,以适应程序的大小和是否存在片外存储器的实际。如果发生不相适应的情况,只要简单地改变模式重新编译一次,就可以解决。并且,自动将call和jmp调整到最佳的代码长度.如果使用汇编,这种改变是相当麻烦的。
  • 中断服务程序的现场保护和恢复,还有中断向量表的填写,都是直接与cpu或单片机硬件相关的。在C语言中,这些部分都是由编译器代办的.这就是为什么前面所说:“C语言编程并不需要对硬件有深入了解”的原因。
  • C编译器提供常用的标准函数库供用户直接使用。方法极其简单,只须在使用前加以简单的引用性说明即可。此外,提供用户自定义库的管理器,帮助用户方便地建立自己的函数库。
  • C编译器提供众多的头文件。一般在头文件中定义宏、说明复杂数据类型的原型和函数原型。它们有利于程序的移植、复杂数据类型的定义和函数的引用性说明。有的头文件为单片机的系列化产品提供片上资源的说明。C语言之所以能够适应8D51单片机的上百种系列芯片,与这类头文件的使用有直接的关系。
  • C编译器照例提供多级代码优化(8051的C提供了5级代码优化),有效地提高代码的时空效率。
  • C编译器有严格的句法检查,大部分错误在编译时已被排掉,剩下的逻辑和算法上的错误很容易在高级语言级别的调试器上迅速地被排掉。
  • 进入C语言的档次,可以方便地接受多种应用程序的服务,譬如,单片机上资源的初始化是很麻烦的事,现已有厂商用C语言编写了专门的应用程序,自动生成符合具体要求的初始化程序。

综上所述,在开发单片机应用系统时,只要系统达到一定的规模和复杂度,就应该采用C语言作为开发用语言。

11.1.4 不要忽略电磁兼容性问题

1.电磁兼容性简介
电磁兼容性(EMC,Electro Magnetic Compatibility)包含系统的发射和敏感度两方面的问题。如果一个单片机应用系统符合下面三个条件,则该系统是电磁兼容的:①对其它系统不产生干扰;②对其它系统的发射不敏感;③对系统本身不产生干扰。假若干扰不能完全消除,但也要使干扰减少到最小。干扰的产生不是直接的(通过导体、公共阻抗藕合等),就是间接的(通过串扰或辐射藕合 )。电磁干扰是通过导体和通过辐射产生的,很多电磁发射源,如光照、继电器、DC电机和日光灯都可引起干扰;AC电源线、互连电缆、金属电缆和于系统的内部电路也都可能产生辐射或接收到不希望的信号。在高速单片机应用系统中,时钟电路通常是宽带噪声的最大产生源,这些电路可产生高达300MHz的谐波失真,在系统中应该把它们去掉。另外,在单片机应用系统中,最容易受影响的是复位线、中断线和控制线。

2.电磁干扰的途经
(1)传导性EMI
一种最明显而往往被忽略的能引起电路中噪声的路径是经过导体。一条穿过噪声环境的导线可捡拾噪声并把噪声送到其它电路引起干扰。设计人员必须避免导线捡拾噪声和在噪声引起干扰前,用去藕办法除去噪声。最普通的例子是噪声通过电源线进入电路。若电源本身或连接到电源的其它电路是干扰源,则在电源线进入电路之前必须对其去藕。 (2)公共阻抗藕合
当来自两个不同电路的电流流经一个公共阻抗时就会产生共阻抗藕合。阻抗上的压降由两个电路决定,来自两个电路的地电流流经共地阻抗,每个电路的地电位都被对方电路的地电流调制,噪声信号经共地阻抗相互藕合。
(3)辐射藕合
经辐射的藕合 通称串扰。串扰发生在电流流经导体时产生电磁场,而电磁场在邻近的导体中感应瞬态电流。
(4)辐射发射
辐射发射有两种基本类型:差分模式(DM,Diferent Mode)和共模模式(CM,Common Mode)。共模辐射或单极天线辐射是对地由无意的压降引起的,它使电路中所有地连接抬高到系统地电位之上。就电场大小而言,CM辐射是比DM辐射更为严重的问题。为使CM辐射最小,必须用切合实际的设计使共模电流降到零。

3. 影响EMC的因数及降低EMC的办法
主要有以下影响EMC的因素。
① 电压。电源电压越高,意味着电压振幅越大,发射就更多,而低电源电压影响敏感度。因此,选用低电压的器件和降低电路的工作电压是行之有效的办法。
② 频率。高频产生更多的发射,周期性信号产生更多的发射。在高频单片机应用系统中,当器件开关时产生电流尖峰信号;在模拟系统中,当负载电流变化时产生电流尖峰信号。
③ 接地。在所有EMC问题中,主要问题是不适当的接地引起的。有三种信号接地方法:单点、多点和混合。在频率低于1MHz时,可采用单点接地方法,但不适于高频;在高频应用中,最好采用多点接地。混合接地是低频用单点接地,而高频用多点接地的方法。地线布局是关键,高频数字电路和低电平模拟电路的地回路绝对不能混合。
④ PCB设计。适当的印刷电路板(PCB)布线对防止EMI是至关重要的。
⑤ 电源去藕。当器件开关时,在电源线上会产生瞬态电流,必须衰减和滤掉这些瞬态电流。来自高d i/dt的瞬态电流导致地和线路“发射”电压,高di/dt产生大范围高频电流,激励部件和线缆辐射。流经导线的电流变化和电感的存在会导致压降,减小电感或减小电流随时间的变化可使该压降最小。
11.1.5 系统的电源设计是一个重要问题

电源的设计有两个问题值得重视:一是电源的抗干扰问题,二是电源的裕量问题。我们先讨论第一个问题。

单片机经常用于各种测控系统中,特别是在工业应用的测控系统中,电源是最重要的干扰源:一方面是由于电源不稳、电源本身产生的纹波、尖峰干扰(如采用开关电源会有100~500mV的纹波),另一方面是经过电源串入的电网中的各种干扰(入大型设备启、闭产生的浪涌电压、电焊机产生高频干扰)。这些干扰都会对单片机应用系统的安全运行构成巨大的威胁。在进行这一类应用系统的设计时应采取有效的抑制电网干扰和优质的电源等措施。
电源的裕量问题又包括两个问题方面:一是功率裕量问题,二是能量裕量问题。前者容易出现在大型单片机控制系统的设计中,后者容易出现在小型测量系统,尤其是手持式系统中。

在大型单片机控制系统的设计中,往往需要驱动的负载比较大,也比较多;环境温度又往往比较高;而系统又往往采用交流电网供电,电网电压的波动范围较大。此时考虑电源的供电能力时,一定要考虑出现各种极端情况下,电源能够可靠地给系统供电。比如:多路负载同时工作,此时环境温度又最高,而电网的电压又达到极限值(最高或最低),此时应确保电源自身的安全和可以可靠为单片机应用系统供电。

而在小型的手持式系统或某些特殊的系统(如水表和热能表)中,往往采用电池供电,甚至采用光电池供电,此时需重视电源的持续供电的能力和供电时间,即考虑电源所具备的能量、自身的漏电、系统的长时间的耗电等问题,有时还要考虑电源的瞬时较大能量的供电问题(如水表在关闭节门时的操作)。

 

上一节                    下一节

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.