设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个特别要注意的问题。
选择MCU时要考虑MCU所能够完成的功能、MCU的价格、功耗、供电电压、I/O口电平、引脚数目以及MCU的封装等因素。MCU的功耗可以从其电气性能参数中查到。供电电压有 5 V、3.3 V以及 1.8 V超低电压供电模式。为了合理地分配MCU的I/O资源,在MCU选型时可绘制一张引脚分配表,供以后的设计使用。
(1)考虑系统对电源的需求,例如系统需要几种电源,如 24 V、12 V、5 V或者 3.3 V等,估计各需要多少功率或最大电流(mA)。在计算电源总功率时要考虑一定的余量,可按公式“电源总功率=2×器件总功率”来计算。
(2)考虑芯片与器件对电源波动性的需求。一般允许电源波动幅度在±5%以内。对于A/D转换芯片的参考电压一般要求±1%以内。
(3)考虑工作电源是使用电源模块还是使用外接电源。
(1)上拉、下拉电阻:考虑用内部或者外部上/下拉电阻,内部上/下拉阻值一般在 700 Ω左右,低功耗模式不宜使用。外部上/下拉电阻根据需要可选 10 kΩ~1 MΩ之间。
(2)开关量输入:一定要保证高低电压分明。理想情况下高电平就是电源电压,低电平就是地的电平。如果外部电路无法正确区分高低电平,但高低仍有较大压差,可考虑用A/D采集的方式设计处理。对分压方式中的采样点,要考虑分压电阻的选择,使该点通过采样端口的电流不小于采样最小输入电流,否则将无法进行采样。
(3)开关量输出:基本原则是保证输出高电平接近电源电压,低电平接近地电平。I/O口的吸纳电流一般大于放出电流。对小功率元器件控制最好是采用低电平控制的方式。一般情况下,若负载要求小于 10 mA,则可用芯片引脚直接控制;电流在 10~100 mA时可用三极管控制,在100 mA~1 A时用IC控制;更大的电流则适合用继电器控制,同时建议使用光电隔离芯片。
(1)A/D电路:要清楚前端采样的基本原理,对电阻型、电流型和电压型传感器采用不同的采集电路。如果采集的信号微弱,还要考虑如何进行信号放大。
(2)D/A电路:考虑MCU的引脚通过何种输出电路控制实际对象。
对外控制电路要注意设计的冗余与反测,要有合适的信号隔离措施等。在布板时,一定要在构件的输入/输出端引出检测孔,以方便排查错误时测量。
低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本。由于电流的减小也减少了电磁辐射和热噪声的干扰。随着设备温度的降低,器件寿命则相应延长,要做到低功耗一般需要注意以下几点。
(1)并不是所有的总线信号都要上拉。上下拉电阻也有功耗问题需要考虑。上下拉电阻拉一个单纯的输入信号,电流也就几十微安以下。但拉一个被驱动了的信号,其电流将达毫安级。所以需要考虑上下拉电阻对系统总功耗的影响。
(2)不用的I/O口不要悬空,如果悬空的话,受外界的一点点干扰就可能成为反复振荡的输入信号,而MOS器件的功耗基本取决于门电路的翻转次数。
(3)对一些外围小芯片的功耗也需要考虑。对于内部不太复杂的芯片功耗是很难确定的,它主要由引脚上的电流确定。例如有的芯片引脚在没有负载时,耗电大概不到 1 mA,但负载增大以后,可能功耗很大。
(1)正确选择电阻值与电容值。比如一个上拉电阻,可以使用 4.5~5.3 kΩ的电阻,你觉得就选个整数 5 kΩ,事实上市场上不存在 5 kΩ的阻值,最接近的是 4.99 kΩ(精度 1%),其次是5.1 kΩ(精度 5%),其成本分别比精度为 20%的 4.7 kΩ高 4 倍和 2 倍。20%精度的电阻阻值只有1、1.5、2.2、3.3、4.7、6.8 几个类别(含 10 的整数倍);类似地,20%精度的电容也只有以上几种值,如果选了其他的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处。
(2)指示灯的选择。面板上的指示灯选什么颜色呢?有些人按颜色选,比如自己喜欢蓝色就选蓝色。但是其他红绿黄橙等颜色的不管大小(5 mm以下)封装如何,都已成熟了几十年,价格一般都在 0.5 元以下,而蓝色却是近三四年才发明的,技术成熟度和供货稳定度都较差,价格却要贵 4~5 倍。
(3)不要什么都选最好的。在一个高速系统中并不是每一部分都工作在高速状态,而器件速度每提高一个等级,价格差不多要翻倍,另外还给信号完整性问题带来极大的负面影响。
在设计硬件构件的电路原理图时,需遵循以下基本原则。
(1)元器件命名格式:对于核心构件,其元器件直接编号命名,同种类型的元件命名时冠以相同的字母前缀。如电阻名称为R1、R2 等,电容名称为C1、C2 等,电感名称为L1、L2 等,指示灯名称为E1、E2 等,二极管名称为D1、D2 等,三极管名称为Q1、Q2 等,开关名称为K1、K2 等。对于中间构件和终端构件,其元器件命名格式采用“构件名-标志字符?”。例如,LCD构件中所有的电阻名称统一为“LCD-R?”,电容名称统一为“LCD-C?”。当构件原理图应用到具体系统中时,可借助原理图编辑软件为其自动编号。
(2)为硬件构件添加详细的文字描述,包括中文名称、英文名称、功能描述、接口描述、注意事项等,以增强原理图的可读性。中英文名称应简洁明了。
(3)将前两步产生的内容封装在一个虚线框内,组成硬件构件的内部实体。
(4)为该硬件构件添加与其他构件交互的输入/输出接口标识。接口标识有两种:接口注释和接口网标。它们的区别是:接口注释标于虚线框以内,是为构件接口所作的解释性文字,目的是帮助设计人员在使用该构件时理解该接口的含义和功能;而接口网标位于虚线框之外,且具有电气特性。为使原理图阅读者便于区分,接口注释采用斜体字。
在进行核心构件、中间构件和终端构件的设计时,除了要遵循上述的通用规则外,还要兼顾各自的接口特性、地位和作用。
设计核心构件时,需考虑的问题是:“核心构件能为其他构件提供哪些信号?”。核心构件其实就是某型号MCU的最小系统。核心构件设计的目标是:凡是使用该MCU进行硬件系统设计时,核心构件可以直接“组装”到系统中,无须任何改动。为了实现这一目标,在设计核心构件的实体时必须考虑细致、周全,包括稳定性、扩展性等,封装要完整。核心构件的接口都是为其他构件提供服务的,因此接口标识均为接口网标。在进行接口设计时,需将所有可能使用到的引脚都标注上接口网标(不要考虑核心构件将会用到怎样的系统中去)。若同一引脚具有不同功能,则接口网标依据第一功能选项命名。遵循上述规则设计核心构件的好处是:当使用核心构件和其他构件一起组装系统时,只要考虑其他构件将要连接到核心构件的哪个接口(不是考虑核心构件将要连接到其他构件的哪个接口),这也符合设计人员的思维习惯。
设计中间构件时,需考虑的问题是:“中间构件需要接收哪些信号,以及提供哪些信号?”。中间构件是核心构件与终端构件之间通信的桥梁。在进行中间构件的实体封装时,实体的涉及范围应从构件功能和编程接口两方面考虑。一个中间构件应具有明确的且相对独立的功能,它既要有接受其他构件提供的服务的接口,即需求接口,又要有为其他构件提供服务的接口,即提供接口。 描述需求接口采用接口注释,描述提供接口采用接口网标。 当中间构件被作为一个“零件”组装到具体系统中时,设计人员只要考虑为构件提供服务的来源,为接口注释添加对应的应用网标即可,其他内容无须关心或改动。
中间构件的接口数目没有核心构件那样丰富。为直观起见,设计中间构件时,将构件的需求接口放置在构件实体的左侧,提供接口放置在右侧。接口网标的命名规则是:构件名称-引脚信号/功能名称。而接口注释名称前的构件名称可有可无,它的命名隐含了相应的引脚功能。
电源控制构件(如图 1-2 所示)、可变频率产生构件(如图 1-3 所示)是常用的中间构件。图 1-2 中的Power-IN和图 1-3 中的SDI、SCK和SEN均为接口注释,Power-OUT和LTC6903-OUT为接口网标。
图 1-2 电源控制构件
图 1-3 可变频率产生构件
设计终端构件时,需考虑的问题是:“终端构件需要什么信号才能工作?”。终端构件是嵌入式系统中最常见的构件。终端构件没有提供接口,它仅有与上一级构件交互的需求接口,因而接口标识均为斜体标注的接口注释。LCD(YM1602C)构件(如图 1-4 所示)、LED构件、指示灯构件以及键盘构件(如图 1-5 所示)等都是典型的终端构件。
图 1-4 LCD构件
图 1-5 键盘构件
对于核心构件,在应用到具体的系统中时,不必做任何改动。具有相同MCU的应用系统,其核心构件完全相同。对于中间构件和终端构件,在应用到具体的系统中时,仅需为需求接口添加接口网标,在不同的系统中,接口网标名称不同,但构件实体内部完全相同。
使用硬件构件化思想设计嵌入式硬件系统的过程与步骤如下。
(1)根据系统的功能划分出若干个硬件构件。
(2)将所有硬件构件原理图“组装”在一起。
(3)为中间构件和终端构件添加接口网标。
印刷电路板(Printed Circuit Board,PCB)是由环氧树脂黏合而成的镀了铜的玻璃纤维板。蚀刻掉部分镀铜,只留下以构成电路互连通路的铜层走线。PCB可以是单层、双层或者四层、六层、八层、十二层,甚至更多。层数越多,连接的布线就越容易,但成本却越高,调试也越难。如果PCB有专用供电层和接地层,系统将会有更强的噪声抗扰度。
在使用电子设计自动化软件(如DXP)设计PCB时需注意以下几个方面的问题。
在正式走线之前要对PCB的大体格局进行规划。布局规划应遵循下列基本原则。
(1)在PCB布板之前首先要打印出相应的原理图,然后根据原理图确定整个PCB板的大体布局,即各个硬件构件的位置安排。
(2)PCB板的形状如无其他要求,一般为矩形,长宽比为 4:3 或 3:2。
(3)考虑面板上元件的放置要求。
(4)考虑边缘接口。
(1)元件放置要求整齐,尽可能正放,属于同一硬件构件内的元件尽可能排放在一起。排列方位尽可能与原理图一致,布线方向最好与电路图走线方向一致。元器件在PCB上的排列可采用不规则、规则和网格三种排列方式中的一种,也可同时采用多种。
不规则排列:元件轴线方向彼此不一致,这对印制导线布设是方便的,且平面利用率高,分布参数小,特别对高频电路有利。
规则排列:元器件轴线方向排列一致,布局美观整齐,但走线较长且复杂,适于低频电路。
网格排列:网格排列中的每一个安装孔均设计在正方形网格交点上。
布局的元器件应有利于发热元器件散热,高频时要考虑元器件之间的分布参数,高、低压之间要隔离,隔离距离与承受的耐压有关。
(2)电容的位置要特别注意,其中电源模块的滤波电容要求靠近电源,而IC的滤波电容要靠近IC的引脚。
(3)考虑元件间的距离,防止元件之间出现重叠。还要考虑元器件的引脚间距,元器件不同,其引脚间距也不相同,在PCB设计中必须弄清楚元器件的引脚间距,因为它决定着焊盘放置间距。对于非标准器件的引脚间距的确定最直接的方法就是:使用游标卡尺进行测量。
(4)PCB四周留有 5~10 mm空隙不布器件。
(5)先放置占用面积较大的元器件,先集成后分立,先主后次,多块集成电路时先放置主电路。
(6)可调元件应放置在便于调节的地方,质量超过 15 g的元器件应当用支架,热敏元件应远离发热元件。晶振应平放,而不要竖直放置。
(7)PLL滤波电路应尽量靠近MCU。
在正式布线之前,需要对软件环境的以下参数进行设置。
(1)线宽。导线的最小宽度由导线与绝缘基板间的粘附强度和流过它们的电流值决定。走线时导线尽可能宽,最好不要小于 0.5 mm,手工制板应不小于 0.8 mm,这样既可以减小阻抗,又可以防止由于制造工艺的原因导致导线断路。电源线和接地线因电流量较大,宽度要大于普通信号线,一般不要小于 1 mm。三者关系为:地线宽度>电源线宽度>信号线宽度。
(2)间距。导线间的间距由它们之间的安全工作电压决定,相邻导线之间的峰值电压、基板的质量、表面涂层、电容耦合参数等都影响导线的安全工作电压,为满足电气安全要求,导线间距离以及导线与元件间距离要尽可能地大,一般不要小于 1 mm,这样可以有效解决焊接时短路的问题。
(3)过孔大小。过孔大小设定要适中。
布线时,应该首先对时钟和高速信号进行布线,以确保它们的走线尽可能直接。石英晶振和对噪声特别敏感的器件下面不要走线。对总线进行布线时,尽可能地保持信号线平行走线,而时钟信号线则要避免平行,且在这些导线之间最好加接地线。布板完成后一定要进行自动与人工检查。过孔数尽可能少。最小系统中未使用的I/O口,可通过电阻接地。走线尽量少拐弯,线宽不要突变,导线拐角应大于 90°,力求线条简单明了。信号线的拐角应设计成钝角走向,为圆形或圆弧形,切忌画成 90°或更小角度形状。
考虑到硬件测试的方便,在PCB布板时要留下一些测量点,以便调试之用。测量点要根据原理图确定。以下几处需要留测量点。
(1)原理图中模块的输入/输出引脚。
(2)最小系统模块中MCU的引脚。
(3)各硬件功能模块单元的输入/输出端口。
画测量点的步骤是:引出、打孔、标字。孔的大小以万用表头方便测量为原则,一般不要在线上直接打孔。
由于在整体布局时,已经将各个硬件构件的组成元件放在一起,因而可在PCB板上用矩形框将各个硬件构件区分开,并用汉字标出构件名(与原理图一致),并注意字体字号。
在布板的最后都要铺地,目的是减小干扰,提高PCB板的稳定性。铺地需注意:
(1)在铺地前,要设定地与导线、地与引脚之间的距离,并要求该距离尽可能大。
(2)铺地本应该双面铺,作为实验用板,为了方便检查,可只铺反面地。
(3)如果电路板中有数字地和模拟地,应将它们隔离开,两者间使用磁珠相连。
PCB板的空余位置可适度做如下用途。
(1)电源、地。空白处多留几排电源和地。
(2)双排孔。留出几排两孔相连的排孔,以用来扩展或试验时焊接其他元件。
(3)固定孔。在PCB上画固定板的固定孔,一般在板的四个角落。
在完成PCB板的铺地之后,要在板的正面适当位置标出以下信息:单位、日期、责任人、PCB板的名称、编号等。
PCB设计中除了考虑以上问题外,还要考虑一些隐藏的问题,这些问题设计时不起眼,但是解决的时候,却非常麻烦,这就是电路的干扰问题,为此,在PCB设计时还应解决如下问题。
元器件在工作中都有一定程度的发热,尤其是功率较大的器件所发出的热量会对周边比较敏感的器件产生干扰,若热干扰得不到很好的抑制,整个电路的电性就会发生变化,最后造成短路。为了对热干扰进行抑制,可采取以下措施。
(1)发热元件的放置。不要贴板放置,也可以单独设计为一个功能单元,放在靠近边缘容易散热的地方。另外,发热量大的器件与小热量的器件应分开放置。
(2)大功率器件的放置。应尽量靠近边缘布置,在垂直方向时应尽量布置在板上方。
(3)温度敏感器件的放置。对温度比较敏感的器件应安置在温度最低的区域,千万不要将它放在发热器件的正上方。
(4)器件的排列与气流。非特定要求,一般设备内部均以空气自由对流进行散热,故元器件应以纵式排列;若强制散热,元器件可横式排列。另外,为了改善散热效果,可添加与电路原理无关的零部件以引导热量对流。
共阻干扰是由PCB上大量的地线造成,当两个或两个以上的回路共用一段地线时,不同的回路电流在共用地线上产生一定压降,此压降经放大就会影响电路性能,当电流频率很高时,会产生很大的感抗而使电路受到干扰。为了抑制共阻抗,可采取以下措施。
(1)一点接地。使同级单元电路的几个接地点尽量集中,适用于信号的工作频率小于 1 MHz的低频电路,如果工作频率在 1~10 MHz而采用一点接地时,其地线长度应不超过波长的 1/20。
(2)就近多点接地。PCB上有大量公共地线分布在板的边缘,且呈现半封闭回路(防磁场干扰),各级电路采取就近接地,以防地线太长。适用于信号的工作频率大于 10 MHz的高频电路。
(3)大面积接地。在高频电路中将PCB上所有不用面积均布设为地线,以减少地线中的感抗,从而削弱在地线上产生的高频信号,并对电场干扰起到屏蔽作用。
(4)加粗接地线。若接地线很细,接地电位则随电流的变化而变化,致使电子设备的定时信号电平不稳,抗噪声性能变坏,其宽度至少应大于 3 mm。
(5)D/A(数/模)电路的地线分开。两种电路的地线各自独立,然后分别与电源端地线相连,以抑制它们相互干扰。
电磁干扰是由电磁效应而造成的干扰,由于PCB上的元器件及布线越来越密集,如果设计不当就会产生电磁干扰。针对由电源布线、信号布线产生的电磁干扰,可采取不同的措施。
(1)电源布线引起的电磁干扰。电源布线可采用以下预防措施。
① 布线要宽。
② 加去耦电容。这种电容起到旁路滤波的作用。要在电源的输入端并联较大的和较小的滤波电容。
③ 地线环绕。地线要靠近供电电源母线和信号线,因电流沿路径传输会产生回路电感,地线靠近,回路面积减小,电感量减小,回路阻抗减小,从而减小电磁干扰耦合。
(2)信号布线引起的电磁干扰。信号布线可采用以下预防措施。
① 不同功能的单元电路(如数字电路与模拟电路、高频与低频)分开设置,布线图形应易于信号流通且使信号流向尽可能保持一致。
② 合理使用屏蔽和滤波技术,注意高低压之间的隔离。
③ 尽量不选用比实际需要的速度更快的元件,在元件的位置安排上,易受电磁干扰的元器件不能相距太近,应大于信号波长的四分之一,输入器件与输出器件应尽量远离。
④ 做到安全接地。