fish001

  • 2019-06-23
  • 发表了主题帖: 设计抗混叠滤波器的三个指导原则

             增量-累加模数转换器 (ADC) 的2个重要特点。这2个特点简化了抗混叠滤波器的设计:一个过采样架构和一个补充数字抽取滤波器。这个过采样架构将那奎斯特频率放置在远离信号带宽的位置上,而数字抽取滤波器衰减大多数有害的带外信号。当把二者组合在一起时,它们可以实现更加自由的抗混叠滤波器响应,只需几个分立式组件即可实现这一功能。 图1:用一个适当的抗混叠滤波器来阻止这些混叠 我们知道,在高精度ADC应用中使用抗混叠滤波器是有益的,不过,设计合适的抗混叠滤波器也同样重要—如果你不小心的话,就像把有害误差从系统中消除一样,很容易将有害误差引入到你的系统中。在为你的应用设计抗混叠滤波器时,请考虑以下3个通用指导原则: 选择你的滤波器截止频率 最简单的抗混叠滤波器是一个单极、低通滤波器,如图2所示,它使用一个串联电阻器 (R) 和共模电容器 (CCM)。设计这个滤波器的第一步就是选择所需的截止频率,fC。在fC上,滤波器的响应滚降至-3dB,并且在频率域范围内继续以-20dB/十倍频的速度减少。 选择一个比ADC调制器采样频率,fMOD,至少低十倍频的截止频率,其目的在于,在这些频率上以10倍或更高倍数打压带外噪声。对于增加的衰减,通过增加R和CCM 的值来进一步减少截止频率。我在上一篇文章中提到过,你的数字抽取滤波器的用途就是提供帮助,所以就没有必要在所需信号带宽之后立即设定你的抗混叠滤波器截止频率。 方程式1计算出单极、低通滤波器的截止频率为-3dB:                                       图2.ADC输入上的单极、低通滤波器       有时候,一个单极、低通滤波器也许还不够。诸如振动感测等应用也许是用更少的过采样来分析更宽带宽上的信号。这就使数字抽取滤波器的通带更加靠近fMOD,并且使得抗混叠滤波器的滚降空间更小。在这些情况下,你可以添加一个包含额外RC对的第二极或第三极,以实现一个更加灵敏的滤波器响应。 图3中显示的是,设计用于ADC的单极和双极滤波器的响应;这个ADC在fMOD = 1MHz上对输入进行采样。双极滤波器扁平通带向外扩展至大约20kHz,并且仍然能够在1MHz上实现-60dB的衰减。 图3.单极和双极低通滤波器的频率响应 考虑差分与共模滤波器之间的关系      很多ADC转换两个独立输入之间(例如INP与INN)的电压,所以,设计人员经常在每个输入上放一个共模滤波器,以保持系统共模抑制 (CMR)。然而,组件容差将使任意两个滤波器不匹配,并且会降低频率范围内的CMR性能,这是因为对共同信号的滤波操作不同。这就通过人们已知的共模至差分转换产生一个差分信号误差。 方程式2使用电阻器容差,RTOL,和电容器容差,CTOL,计算出共模抗混叠滤波器在指定频率下的CMR:        对于需要高CMR的应用,如图4中所示,可以考虑添加一个差分滤波器,以便为2个共模滤波器提供补充。通过将差分电容器CDIFF 增加到比CCM大10倍,将差分截止频率设定为比共模截止频率低10倍频。这样可以减轻由共模组件不匹配所引入的误差,并且生成一个更加灵敏的总体滤波器响应。方程式3计算出差分低通滤波器的截止频率。需要注意的是,分母中有一个额外的因子2。     图4.添加了一个差分滤波器的共模滤波器 3.选择合适的组件值 将电阻器添加到信号路径中将在测量中引入有害噪声和误差,所以,不论何时都有必要将它们控制在合理的范围内。 电阻器噪声—也被称为Johnson或热噪声—可被建模为电压源与你的理想“无噪声”电阻器相串联。总的说来,你不希望电阻器热噪声占据整条信号链,那么,将其保持在ADC的噪底以下就非常重要。方程式4计算出电阻器热噪声的噪声密度,vn: 在这里,k = 玻尔兹曼常量 (1.38E-23 J/K),而T是温度值,单位为开尔文。 串联电阻也会在输入偏置电流出现时引入小的偏移电压。虽然你也许能够在之后校准这个值,不过还是要尽可能地限制电阻器尺寸,特别是在偏置电流有可能变得很大时更应如此。 与滤波器电阻器不同,你能够使用的电容器的值越高,效果就越好。如需了解其中的原因,就必须知道ADC是如何对输入进行采样的。 不包含集成缓冲器的增量-累加ADC的输入直接与ADC调制器的开关电容器采样结构相连。这个采样结构包含一个开关网络,以及电容值大约为10pF或20pF的采样电容器。图5显示的是一个经简化示例。 图5.一个ADC中的经简化开关电容器采样结构 采样期间,这个开关电容器电路在外部电路上放置了一个瞬态负载。这个滤波电容器帮助减少来自调制器的采样电荷注入,并且提供为采样电容器,CSAMPLE,充电所需的某些瞬时电流。滤波电容器越大,可用的电荷就越多。由于其高Q因子、低温度系数、以及稳定的电气特性,请使用NP0/C0G类型的陶瓷电容器。较大的电容器值也会改进总谐波失真 (THD) 等AC技术规格,不过,需牢记的是,这就增加了滤波器的RC时间常量,并且需要一个更长的稳定时间。

  • 发表了主题帖: ADS8588S parallel byte mode read timing

    ADS8588S是具有8通道16位精度同步采样的SAR ADC,采样速度最大为200KSPS, 广泛应用于电力系统的采样电路,具有高精度和高可靠性,ADS8588S有灵活的与主机通讯模式,同时支持串行(serial mode),并行(parallel mode)和并行字节(parallel byte mode)通讯。ADS8588S的通讯有特定的时序要求,必须完全满足时序才能正确读取数据。并行字节相对串行和并行而言稍复杂,这里介绍并行字节通讯的一些要点。   并行字节是把一个16位的数据分为两个8位的字节来读,并行的先读高8位,再读低8位,依次读完8个通道,一共读16次。读完后再进行下一次转换,下一个周期然后再读16次。Datasheet中parallel byte mode的读时序如下图1: 其中CS是片选,RD是读信号,一般CS和RD可以连在一起,DB[7:0]是8位并行字节信号,FRSTDATA信号指示开始读第一通道, 根据datasheet, FRSTDATA会在RD的第一个下降沿变成高电平,表示这是读一通道数据。   图1 如果只遵守这个读的时序仍然有可能出现读数错误,我们读的时候还需要参考另外一个时序,ADC的转换时序,Datasheet中如下图2:其中CONVSTA和CONVSTB是ADC开始转换信号,BUSY表示正在转换,如果BUSY是高,表示本次转换还没有结束,CS是上图中的片选, RESET是复位信号。   图2 这其中隐藏着一个潜在的逻辑,在图1的时序中,在读信号RD的第一个下降沿,FRSTDATA会升高指示第一个通道,但是前提是必须在BUSY由高到低之后的第一个下降沿,如果16次读数的起始不是从BUSY变低之后开始读,就有可能出现严重的错误,举例如下:下图3中CS就是RD信号,两个连在一起,我们看到先是CONVST(A/B)信号上升表示ADC开始转换,BUSY升高表示正在转换,但是这时RD信号已经开始读数,每一个脉冲是一个BYTE, 两个脉冲表示一个16位数据,一共8个数据,所以每个周期RD是16个脉冲。这里RD在BUSY开始之前读了,当BUSY结束(下降沿)后第一个RD读数(为图3CS/RD信号第6个脉冲下降沿)会让系统认为这是第一个通道数据的高8位,后面的数据依次往下,然而实际MCU发出的却是第3组信号的低8位,这时MCU认为的读数逻辑不仅在通道的对应上出错,连在每个16位数据的高8位低8位的顺序也会出错。   图3   我们在第8通道加5V,对应的16进制数位0x7FFF,其余通道都是对地即0V, 对应的16进制数是0x0000,我们用图3时序进行读数,从MCU中看到的结果如下:我们发现MCU认为的第8通道数据并不是0x7FFF,其中高8位的7F变成了3通道的低8位,其中低8位的FF变成了2通道的高8位,另外本来应该是0x0001(1个bit的误差很正常)的其他通道也变成了0x0100, 高8位和低8位也反了,和以上分析的逻辑完全吻合。 表1   我们尝试改变读的时序,如下图4:可以看到,RD的16次读数起始点是在BUSY下降沿之后,第一个下降沿即FRSTDATA的上升沿。 图4   改了时序之后的数据如下表2:读数和预计的完全一致。 表2   总结: 在使用ADS8588S的parallel byte mode读数时一定要注意读数的起始点要在BUSY信号下降沿之后,MCU认为的第一通道要与 FRSTDATA的上升沿指示的第一通道对应上,否则会出现读数通道错误或者高低位顺序错误的情况。

  • 发表了主题帖: AD转换中参考电压的作用

        参考电压是这个样子的,假如你选择的参考电压是5v,你的ad是12位的,那么当你的输入电压是5v的时候你的单片机的显示应该是4095 ,如果是0v的输入那单片机里面的值就是0 ,中间点的值成线性关系,就是说假如你的输入是m,那单片机单片机的值就是4096*m/5,这样反过来你知道了单片机的值就可以算出你的输入是多少了!       还有在信号地和模拟地之间加上一个电感是为了去干扰,就像在vcc和GND之间用电容一样。       ad转换时的参考电压是内部T行网络的标准电压,参考电压可以认为是你的最高上限电压(不超过电源电压),当信号电压较低时,可以降低参考电压来提高分辨率。改变参考电压后,同样二进制表示的电压值就会不一样,最大的二进制(全1)表示的就是你的参考电压,在计算实际电压时,就需要将参考电压考虑进去。参考电压的稳定性对你的系统性能有很大的影响。

  • 发表了主题帖: 如何有效解决三极管温漂问题?

    现在利用三极管搭建了一个高频振荡电路,频率为2.5M,但是在不同的温度下,产生的波形的幅值不同,个人认为是由于三极管的温漂引起的,请问各位有没有较好的办法解决或者减小温漂的影响呢? 三极管温漂是因为随着温度的变化,发射结的压降会变化,要想减少这种变化,你需要使发射极电阻的压降很大于发射结的压降时,因为温度变化引起的发射结压降的变化,不会使发射极的电流有很大的变化,此时,震荡就会变小 三极管温漂不是主因(是的话说明你放大器设计有问题)。 需加稳幅电路,较老的方案有四: 1,用温敏电阻(热敏电阻、低压灯泡、半导体电阻等); 2,用幅度检波器; 3,用有源器件的非线性; 4,用二极管嵌位。 这样的振荡电路,通常对幅度没有很严格的要求,倒是对频率要求较高。 如果需要稳定幅度,可考虑用 1、限幅电路稳定幅度。 2、加温度补偿,例如利用热敏电阻或二极管来补偿。但相当困难。 扩展阅读:集电极开路输出、开漏输出、推挽输出23:08 2019-06-23

  • 发表了主题帖: 关于无源滤波

    无源滤波器缺点:带负载能力差,无放大作用,特性不理想边沿不陡峭,各级互相影响。 RC滤波 1, C值的选取:C不能选的太小,否则负载电容对滤波电路的影响很大,一般IC的输入电容往往有l~lOpF的输入电容。C值选的太大,则会影响滤波电路的高频特性,因为 大电容的高频特性一般都不好。 2, R值的选取:R值过小会加大电源的负载,R值过大则会消耗较多的能量。 RC滤波电路的最大缺陷就是他不仅消耗我们希望抑制的信号能量,而目也消耗我们希望保留的信号能量。另外由于受电容高频特性的限制也不能用在太高频的场合,例如数MHz以上需要用LC滤波器。 1. 电容滤波电路 分析电容滤波电路工作原理时,主要是用到了电容器的隔直通交特性和储能特性。前面整流电路输出的脉动性直流电压可分解成一个直流电压和一组频率不同的交流电,交流电压部分就会从电容器流过到地,而直流电压部分却因电容器的通交隔直特性而不能接地才流到下一级电路。这样电容器就把原单向脉动性直流电压中的交流部分的滤去掉了。 另外电容滤波电路也可以用电容储能特性来解释,当单向脉动直流电压处于高峰值时电容就充电,而当处于低峰值电压时就放电,这样把高峰值电压存储起来到低峰值电压处再释放。把高低不平的单向脉动性直流电压转换成比较平滑的直流电压。 滤波电容的容量通常比较大,并且往往是整机电路中容量最大的一只电容器。滤波电容的容量大,滤波效果好。电容滤波电路是各种滤波电路中最常用一种。 电源滤波电容如何选取,掌握其精髓与方法,其实也不难。 1)理论上理想的电容其阻抗随频率的增加而减少(1/jwc),但由于电容两端引脚的电感效应,这时电容应该看成是一个LC串连谐振电路,自谐振频率即器件的SFR参数,这表示频率大于SFR值时,电容变成了一个电感,如果电容对地滤波,当频率超出FSR后,对干扰的抑制就大打折扣,所以需要一个较小的电容并联对地,可以想想为什么?原因在于小电容,SFR值大,对高频信号提供了一个对地通路,所以在电源滤波电路中我们常常这样理解:大电容虑低频,小电容虑高频,根本的原因在于SFR(自谐振频率)值不同,当然也可以想想为什么?如果从这个角度想,也就可以理解为什么电源滤波中电容对地脚为什么要尽可能靠近地了。 2)那么在实际的设计中,我们常常会有疑问,我怎么知道电容的SFR是多少?就算我知道SFR值,我如何选取不同SFR值的电容值呢?是选取一个电容还是两个电容?电容的SFR值和电容值有关,和电容的引脚电感有关,所以相同容值的0402,0603,或直插式电容的SFR值也不会相同,当然获取SFR值的途径有两个,1)器件Data sheet,如22pf0402电容的SFR值在2G左右, 2)通过网络分析仪直接量测其自谐振频率,想想如何量测?知道了电容的SFR值后,用软件仿真,如RFsim99,选一个或两个电路在于你所供电电路的工作频带是否有足够的噪声抑制比。仿真完后,那就是实际电路试验,如调试手机接收灵敏度时,LNA的电源滤波是关键,好的电源滤波往往可以改善几个dB。 电容的本质是通交流,隔直流,理论上说电源滤波用电容越大越好。但由于引线和PCB布线原因,实际上电容是电感和电容的并联电路,(还有电容本身的电阻,有时也不可忽略)这就引入了谐振频率的概念:ω=1/(LC)1/2在谐振频率以下电容呈容性,谐振频率以上电容呈感性。因而一般大电容滤低频波,小电容滤高频波。 这也能解释为什么同样容值的STM封装的电容滤波频率比DIP封装更高。 至于到底用多大的电容,这是一个参考: 电容谐振频率 电容值 DIP (MHz) SMT (MHz) 1.0μF 2.5 5 0.1μF 8 16 0.01μF 25 50 1000pF 80 160 100 pF 250 500 10 pF 800 1.6(GHz) 不过仅仅是参考而已,用老工程师的话说——主要靠经验。更可靠的做法是将一大一小两个电容并联,因为大电容高频特性差,小电容高频特性好。一般要求相差两个数量级以上,以获得更大的滤波频段。 2. 电感滤波电路 电感滤波电路的原理也和电容器滤波差不多,也是因为电感器的通直阻交特性和储能特性。从储能方面来解释的话和电容器是一样的原理,从通直阻交特性方面来解释电感器的滤波电路时,电感器是把单向脉动性直流电压分解出来的交流电压部分进行阻碍,而电容器却是短路接地。电感量越大滤波效果越好,由电感器单独作滤波电路的情况很少,一般会和电容一起组合使用。 3. L形RC滤波电路 L形RC滤波电路就是在普通电容滤波电路中电容器前面加个电阻器,电阻器是串联在电路中,而电容器是并联在电路中,这时电阻器和电容器形成了的L字形状,所以称它们为L形RC滤波电路。它的滤波原理和滤波效果都和普通电容滤波电路是差不多,这时电容器和电阻器也构成了分压电路,因为电容的容抗很小,所以对交流分量的分压衰减很大,这样交流量通过电容器短路接地,达到滤波的目的。对于直流电压部分,由于电容器对直流电呈隔离状态,这时电容器对电阻器没有分压作用,直流不会流过电容器。在这种滤波电路中,如果电阻器的阻值不变时,加大滤波电容的容量可以提高滤波效果,滤波电容的容量越大越好。如果滤波电容的容量不变,加大电阻器的阻值也可以提高滤波效果,但是滤波电阻的阻值不能太大,因为滤波电阻的阻值太大的话,直流输出电压就会变小。 LC滤波主要是电感的电阻小,直流损耗小。对交流电的感抗大,滤波效果好。缺点是体积大,笨重。成本高。用在要求高的电源电路中。 RC滤波中的电阻要消耗一部分直流电压,R不能取得很大,用在电流小要求不高的电路中。RC体积小,成本低。滤波效果不如LC电路。 LC滤波一般用在高频电路或电源电路上中 而RC用在低频电路中 LC滤波器应用的频率范围为1kHz~1.5GHz.由于受限于其中电感的Q值,频率响应的截至区不够陡峭。 1, RC滤波器相对于LC滤波器来说,更容易小型化或者集成,LC相对体积就大多了; 2, RC滤波器有耗损,LC滤波器理论上可以无耗损,所以电源部分电路一般都是LC电路; 3, RC比LC的体积要小,成本要底; 4, RC用在低频电路中,LC滤波一般用在高频电路中; 5, RC滤波中的电阻要消耗一部分直流电压,R不能取得很大,用在电流小要求不高的电路中.RC体积小,成本低.滤波效果不如LC电路; LC滤波主要是电感的电阻小,直流损耗小.对交流电的感抗大,滤波效果好.缺点是体积大,笨重.成本高.用在要求高的电源电路中. 6, 滤波级数越多效果也好,但是带来的是损耗和成本越高,所以不建议超过3级; 7, RC滤波器一般常与运算放大器组合使用,构成有源滤波器,多作为低频信号的滤波。例如,在锁相环路中作为环路滤波器使用 4. π形RC滤波电路 首先从结构上来讲,这种滤波电路是由两个电容器和一个电阻器组成,它实际上就是L形滤波电路中电阻器前面再加个电容器接地就成了π形RC滤波电路。两个电容同时进行滤波作用,后面一个滤波电容可以把前面电容未滤完整的直流电压进一步滤波,这样两个电容同时进行滤波,滤波效果当然是更加理想。可以加大第一只滤波电容的容量来提高滤波效果,但第一只滤波电容的容量不能太大,因为刚开机接通电源时,第一只滤波电容容量太大的话充电时间会太长,这一充电电流是流过整流二极管的,当充电电流太大、持续时间太长时,会损坏整流二极管,所以采用这种π形RC滤波电路时,可以使第一只电容容量略有减少,通过调整后面的L形RC滤波电路来提高滤波效果。 5. 多节π形RC滤波电路 多节π形RC滤波电路就是在普通π形RC滤波电路后面再接一个L形RC滤波电路形成多节π形RC滤波电路。其滤波原理和上面普通π形RC滤波电路一样,只是这种滤波电路会有多个直流电压输出端,越是后面的输出端的直流电压滤波效果越好。第一个滤波输出端电压最高,最后一个滤波输出端电压最低,这主要是因为各节电阻器都有电压降。多节π形RC滤波电路是整机电路中用得最多一种滤波电路。 6. π形LC滤波电路 这种滤波电路与普通π形RC滤波电路在结构上基本上是一样的,只是将电阻器更换成电感器而已。因为电阻器对直流电和交流电存在相同的电阻,而电感器对交流电感抗大,对直流电感抗小,这样既可以提高交流滤波效果,还不会降低直流输出电压,因为电感器对直流电不存在感抗,不会像电阻器那样对直流电也存在电压降。电感器的通直阻交特性是这种滤波电路的最大优点,但是电感器的成本高所以这种滤波电路没有π形RC滤波电路使用得多。

  • 发表了主题帖: 毫微功耗运算放大器的直流增益

         运算放大器(op amp)的高精度和高速度直接影响着功耗的量级。电流消耗降低则增益带宽减少;相反,偏移电压降低则电流消耗增大。        运算放大器的许多电子特性相互作用,相互影响。由于市场对低功耗应用的需求逐渐增大,如无线感应节点、 物联网 (IoT) 和楼宇自动化,因此为确保同时满足终端设备性能优化及功耗尽可能低,了解各电子特性间的平衡至关重要。此系列博文包含三部分,在第一部分中,我将介绍在毫微功率精密运算放大器中关于直流增益的功率与性能表现的平衡。 直流增益       也许还记得,在学校中学到的运算放大器的典型反相(如图1)和非反向(如图2)增益配置。 图1:反相运算放大器     图2:非反相运算放大器 根据这些配置可分别得出反相和非反相运算放大器闭环增益等式,等式1和等式2:                等式中A_CL是闭环增益,R_F 是反馈电阻值,而R_2 是从负输入端到信号(反相)或接地(非反相)的电阻值。 这些等式说明直流增益与电阻比有关,与电阻值无关。另外,“功率”定律和欧姆定律显示了电阻值和消耗功率两者之间的关系(等式3):       P是电阻消耗的功率,V是电阻的压降,I是流经电阻的电流。 对毫微功耗增益和分压器配置而言,Equation 3显示,流经电阻的电流消耗最小,则消耗功率最小。Equation 4有助于你了解该原理: R是电阻值。       根据这些等式,可以看出你必须选择既可以提供增益又可以使消耗功率(也称功耗)最小化的大电阻值。如果不能使流经反馈通道的电流最小化,那么使用毫微功耗运算放大器就没有任何优势可言。      一旦选定可以满足增益和功耗需求的电阻值后,还需要考虑其它影响运算放大器信号调节精度的电子特性。统计非理想运算放大器固有的几个系统性小错误,将会得出总偏移电压。电子特性——V_OS被定义为运算放大器输入端之间的有限偏移电压,并且描述了特定偏置点的错误。请注意,并未记录所有运算情况下的错误。为此,必须考虑增益误差、偏置电流、电压噪声、共模抑制比(CMRR)、电源抑制比(PSRR) 和漂移。本博文无法全面讨论涉及的所有参数,我们将详细讨论一下 V_OS 和漂移,以及这两者对毫微功率应用的影响。 实际上,运算放大器通过输入端展示V_OS,但有时在低频(近似直流)精密信号调节应用中则可能是一个问题。 在电压增益环节,随着信号被调节,偏移电压将上升,产生测量误差。此外,V_OS的大小随着时间和温度(漂移)而变化。因此,低频应用需要相当高分辨率的测量方式,选择一款配备最低漂移的精密 (V_OS ≤ 1mV)运算放大器非常重要。 等式5计算了与温度相关的最大V_OS:                     已经介绍了理论部分,如:为低频应用选择可以提高增益比和运算放大器精度的大电阻值,现在我将用两引线电化电池来做出实例解释。两引线电化电池常发出低频的小信号,用在各种便携式感应设备上,如气体检测仪、血糖监测仪等,选择一款低频(<10kHz) 毫微功耗运算放大器。       用氧气传感(见图 3) 作为具体的应用实例,假设感应器的最大输出电压为10mV(通过制造商指定的负载电阻将电流转换成电压R_L) ,则运算放大器的满量程输出电压为1V。通过Equation 2,可以看出 A_CL  的值需要为100,或者R_F是R_2的100倍。分别选择100MΩ电阻和1MΩ电阻,得出增益值为101,且电阻值足够大到可以限制电流并最小化功耗。 图3:氧气传感器        为最小化偏移误差,LPV821零漂移毫微功耗运算放大器是一款理想器件。 使用Equation 5并假设操作温度范围为0°C—100°C,该器件产生的最大偏移误差为: 另一款理想的器件是LPV811精密毫微功耗运算放大器。从其数据表收集必要数值插入等式5可以得出:   (请注意,LPV811数据表未指明偏移电压偏移的最大上限,因此在此处使用典型值)。 如果使用通用的毫微功耗运算放大器取代,如TLV8541 ,相关值变化会得出: (TLV8541数据表未指明偏移电压偏移的最大上限,因此在此处仍使用典型值)。       如所见,LPV821运算放大器是这个应用的理想选择。电流消耗为650nA的LPV821可以感应到氧气传感器输出电压低至18µV或更低的变化,并只有2.3mV的最大偏移增益误差。如果需要同时满足极高精密性和毫微功耗,零偏移毫微功耗运算放大器将是你的最佳选择。

  • 发表了主题帖: 如何通过元件摆放来改善电路板的EMI?

         在设计好电路结构和器件位置后,PCB的EMI把控对于整体设计就变得异常重要。如何对开关电源当中的PCB电磁干扰进行避免就成了一个开发者们非常关心的话题。在本文中,小编将为大家介绍如何通过元件布局的把控来对EMI进行控制。   元器件布局实践证明,即使电路原理图设计正确,印制电路板设计不当,也会对电子设备的可靠性产生不利影响。例如,如果印制板两条细平行线靠得很近,则会形成信号波形的延迟,在传输线的终端形成反射噪声;由于电源、地线的考虑不周到而引起的干扰,会使产品的性能下降,因此,在设计印制电路板的时候,应注意采用正确的方法。   每一个开关电源都有四个电流回路:   (1)、电源开关交流回路;   (2)、输出整流交流回路;   (3)、输入信号源电流回路;   (4)、输出负载电流回路输入回路通过一个近似直流的电流对输入电容充电,滤波电容主要起到一个宽带储能作用;类似地,输出滤波电容也用来储存来自输出整流器的高频能量,同时消除输出负载回路的直流能量。所以,输入和输出滤波电容的接线端十分重要,输入及输出电流回路应分别只从滤波电容的接线端连接到电源;如果在输入/输出回路和电源开关/整流回路之间的连接无法与电容的接线端直接相连,交流能量将由输入或输出滤波电容并辐射到环境中去。   电源开关交流回路和整流器的交流回路包含高幅梯形电流,这些电流中谐波成分很高,其频率远大于开关基频,峰值幅度可高达持续输入/输出直流电流幅度的5倍,过渡时间通常约为50ns。这两个回路最容易产生电磁干扰,因此必须在电源中其它印制线布线之前先布好这些交流回路,每个回路的三种主要的元件滤波电容、电源开关或整流器、电感或变压器应彼此相邻地进行放置,调整元件位置使它们之间的电流路径尽可能短。建立开关电源布局的最好方法与其电气设计相似,最佳设计流程如下:   放置变压器   设计电源开关电流回路   设计输出整流器电流回路   连接到交流电源电路的控制电路   设计输入电流源回路和输入滤波器设计输出负载回路和输出滤波器根据电路的功能单元,对电路的全部元器件进行布局时,要符合以下原则:   (1)首先要考虑PCB尺寸大小。PCB尺寸过大时,印制线条长,阻抗增加,抗噪声能力下降,成本也增加;过小则散热不好,且邻近线条易受干扰。电路板的最佳形状矩形,长宽比为3:2或4:3,位于电路板边缘的元器件,离电路板边缘一般不小于2mm。   (2)放置器件时要考虑以后的焊接,不要太密集。   (3)以每个功能电路的核心元件为中心,围绕它来进行布局。元器件应均匀、整齐、紧凑地排列在PCB上,尽量减少和缩短各元器件之间的引线和连接,去耦电容尽量靠近器件的VCC。   (4)在高频下工作的电路,要考虑元器件之间的分布参数。一般电路应尽可能使元器件平行排列。这样,不但美观,而且装焊容易,易于批量生产。  (5)按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并使信号尽可能保持一致的方向。   (6)布局的首要原则是保证布线的布通率,移动器件时注意飞线的连接,把有连线关系的器件放在一起。   (7)尽可能地减小环路面积,以抑制开关电源的辐射干扰   以上,就是如何通过对元件摆放及布局来对PCB电路板中的电磁干扰进行控制和抑制的一些方法。这些步骤稍有纰漏都有可能造成产品的EMI不合格,因此对其进行充分的了解是非常有必要的,正遇到此类问题的朋友可以将本文进行收藏,作为资料储备。

  • 发表了主题帖: 各种二次回路图及其讲解

    1、图E-103为直流母线电压监视装置电路图,请说明其作用。       答:直流母线电压监视装置主要是反映直流电源电压的高低。KV1是低电压监视继电器,正常电压KV1励磁,其常闭触点断开,当电压降低到整定值时, KV1失磁,其常闭触点闭合, HP1光字牌亮,发出音响信号。KV2是过电压继电器,正常电压时KV2失磁,其常开触点在断开位置,当电压过高超过整定值时KV2励磁,其常开触点闭合, HP2光字牌亮,发出音响信号。          2.说明图E-104直流绝缘监视装置接线图各元件的作用。   答:图E-108是常用的绝缘监察装置接线图,正常时,电压表1PV开路,而使ST1的触点5-7、9-11( ST1的1-3、2-4断开)与ST2的触点9-11接通,投入接地继电器KA。当正极或负极绝缘下降到一定值时,电桥不平衡使KA动作,经KM而发出信号(若正、负极对地的绝缘电阻相等时,不管绝缘下降多少,KA不可能动作,就不能发出信号,这是其缺点)。此时,可用2PV进行检查,确定是哪一极的绝缘下降(测“+”对地时,ST2的2-1、6-5接通;测“-”对地时,ST2的1-4、5-8接通。正常时,母线电压表转换开关ST2的2-1、5-8、9-11接通,电压表2PV可测正、负母线间电压,指示为220V。),   若正极对地绝缘下降,则投ST1 I档,其触点1-3、13-14接通,调节R3至电桥平衡电压表1PV指示为零伏;再将ST1投至II档,此时其触点2-4、14-15接通,即可从1PV上读出直流系统的对地总绝缘电阻值。若为负极对地绝缘下降,则先将ST1放在II档,调节3R至电桥平衡,再将ST1投至I档,读出直流系统的对地总绝缘电阻值。假如正极发生接地,则正极对地电压等于零。而负极对地指示为220V,反之当负极发生接地时,情况与之相反。电压表1PV用作测量直流系统的总绝缘电阻,盘面上画有电阻刻度。   由于在这种绝缘监察装置中有一个人工接地点,为防其它继电器误动,要求电流继电器KA有足够大的电阻值,一般选30kΩ,而其启动电流为1.4mA,当任一极绝缘电阻下降到20 kΩ时,即能发出信号。对地绝缘下降和发生接地是两种情况。     3、根据图E-105分别说明A点与C点;B点与C点;A点与B点或A点与D点同时发生接地时有什么危害。   答:直流系统在变电站中具有重要的位置。要保证一个变电站长期安全运行,其因素是多方面的,其中直流系统的绝缘问题是不容忽视的。变电站的直流系统比较复杂,通过电缆沟与室外配电装置的端子排、端子箱、操作机构箱等相连接,因电缆破损、绝缘老化、受潮等原因发生接地的可能性较多,发生一极接地时,由于没有短路电流,熔断器不会熔断,仍可继续运行,但也必须及时发现、及时消除。通常,要求直流系统的各种小母线、端子回路、二次电缆对地的绝缘电阻值,用500V摇表测量其值不得小于0.5MΩ。直流回路绝缘的好坏必须经常地进行监视。否则,会给运行带来许多不安全因素。   现以图E-105为例说明直流接地的危害。当图中A点与C点同时有接地出现时,等于+WC、-WC通过大地形成短路回路,可能会使熔断器FU1和FU2熔断而失去保护电源;当B点与C点同时有接地出现时,等于将跳闸线圈短路,即使保护正常动作,YT跳闸线圈短路,即使保护正常动作,YT跳闸线圈也不会起动,断路器就不会跳闸,因此在有故障的情况下就要越级跳闸;当A点与B点或A点与D点,同时接地时,就会使保护误动作而造成断路器跳闸。直流接地的危害不仅仅是以上所谈的几点,还有许多,在此不一一作介绍了。   因为发生直流接地将产生许多害处,所以对直流系统专门设计一套监视其绝缘状况的装置,让它及时地将直流系统的故障提示给值班人员,以便迅速检查处理。   4、据图E-106具有灯光监视的断路器控制回路图(电磁操动机构)说明各元件的名称,动作过程。   答:图中:+WC、-WC — 控制母线; FU1、FU2—熔断器,R1-10/6型,250V; SA — 控制开关,LW2-1a.4.6a.40.20.20/F8型;HG — 绿色信号灯具,XD2型,附2500Ω电阻;HR — 红色信号灯具,XD2型,附2500Ω电阻;   KL — 中间继电器,DZB-115/220V型;KMC—接触器; KOM — 保护出口继电器;QF—断路器辅助开关;WCL—合闸小母线;WSA—事故跳闸小母线; WS—信号小母线;YT—断路器跳闸线圈;YC—断路器合闸线圈,FU1、FU2—熔断器,RM10-60/25 250V;R1—附加电阻,ZG11-25型,1Ω;R2—附加电阻,ZG11-25型,1000Ω;(+)WTW—闪光小母线。   5、据图E-107具有弹簧贮能操作机构的断路器控制、信号回路图说明各元件的名称,动作过程。   答:图E-113为SW4-110型断路器配弹簧操作机构的断路器控制、信号回路,在其合闸线圈中串有弹簧已贮能闭锁触点SQS1只有弹簧贮能后,才能合闸;当设有自动重合闸,如重合于永久性故障时,弹簧来不及贮能(需9S),故不能第二次重合。为可靠起见,仍加了“防跳”回路。   当KAC由跳闸位置继电器的KQT启动时,KQT线圈的一端应接至SQS与QF之间。如按以往接线,接于SQS之前,当KAC动作,重合于永久性故障后,此时弹簧贮能释放,SQS打开,KQT失电,断开KAC的启动回路,重合闸继电器中的电容又重新充电足够时,待弹簧重新贮能后,SQS闭合,KQT线圈带电,KAC启动,又进行一次重合闸。此种情况,如不及时断开控制开关,还会反复进行多次。    6、据图E-108具有液压操作机构的断路器控制、信号回路图说明各元件的名称,动作过程。   答:液压机构的工作压力,各厂家有一定差异,以北京开关厂出品CY3型为例,在20℃时,额定贮气筒压力为11.7±0.98MPa,额定压力17.65MPa,当温度变化1℃时,预充压力变化0.045 MPa。   图E-114中,当液压低于14.72 MPa,合闸回路中的压力触点SP4断开,不允许合闸;当液压低于13.73 MPa,跳闸回路中的压力触点SP5断开,不允许跳闸,如电网运行允许,也可用这个触点启动中间继电器后,作用于跳闸。   当压力低于15.72 MPa,3SP3触点闭合,发出油压降低信号;当液压低于16.72 MPa时,触点SP1、SP2闭合,启动油泵打压,当油压上升到18.63 MPa时,SP1、SP2均断开,油泵停止打压。当压力低于9.8MPa或高于24.5,MPa时,由压力表的触点PP1、PP2启动KM3发出压力异常信号,还可以利用KM3常闭触点闭锁油泵电动机启动接触器的启动回路(图中未示出),防止当油压降到零时,启动油泵可能造成断路器的慢分事故。               7、根据图E-109由两个中间继电器构成的闪光装置接线图,说明动作过程。   答:由两个中间继电器构成的闪光装置的原理接线见图E-109图所示。当某一断路器的位置与其控制开关不对应时,闪光母线(+)WTW经“不对应”回路,信号灯(HR或HG)及操作线圈(YT或YC)与负电源接通,KM1启动,KM1常开触点闭合,KM2相继启动,其常开触点将KM1线圈短接,并使闪光母线直接与正常电源沟通,信号灯(HR或HG)全亮;当KM1触点延时断开后,KM2失磁,其常开触点断开,常闭触点闭合,KM1再次启动,闪光母线(+)WTW经KM1线圈与正电源接通,“不对应”回路中的信号灯呈半亮,重复上述过程,便发出连续的闪光信号。KM1及KM2带延时复位,是为了使闪光变得更加明显。   图中,试验按钮SE的信号灯HW用于模拟试验。当揿下SE时,闪光母线(+)WTW经信号灯HW与负电源接通,于是闪光装置便按上述顺序动作,使试验灯HW发出闪光信号。HW经按钮的常闭触点接在正、负电源之间,因而兼作闪光装置熔断器的监视灯。   8、根据图E-110说明闪光装置接线的构成及动作过程。   答:图E-110中,由KM、R、C组成闪光继电器。按下按钮SE时,它相当于一个不对应回路,闪光母线与负电源接通,闪光继电器KTW的线圈回路接通 ,电容器C经附加电阻R和“不对应”回路中的信号灯充电,于是加在KM两端的电压不断升高,当达到其动作电压时,KM动作,其常开触点KM.2闭合,闪光母线(+)WTW与正电源直接接通,信号灯全亮。同时其常闭触点KM.1断开它的线圈回路,电容C 便放电,放电后,电容C 的端电压逐渐降低,待降至KM的返回电压时,KM复归,KM.2断开,KM.1闭合,闪光母线经KM、KM.1与正电源接通,信号灯呈半亮。重复上述过程,便发出连续闪光。      9、根据图E-111说明各符号元件的名称及动作过程。   答:常用中央复归能重复动作的事故信号装置。所谓 中央复归能重复动作的事故信号,是指断路器自动跳闸后,为使值班人员不受音响信号长期干扰而影响事故处理,可以保留绿灯闪光信号而仅将音响信号立即解除。   图E-111中KSP1为ZC—23型冲击继电器,脉冲变流器T一次侧并联的二极管V和电容器C起抗干扰作用;二次侧并联的二极管V的作用是将T的一次侧电流突然减小而在二次侧感应的电流旁路,使干簧继电器KR不误动(因干簧继电器动作没有方向性)。其原理是当断路器事故分闸或按下试验按钮SE1时,脉冲变流器T一次绕组中有电流增量,二次绕组中感应电流起动KR,KR动作后起动中间继电器KM。KM有两对触点,一对触点闭合起动蜂鸣器HB,发出音响信号;另一对触点闭合起动时间继电器KT1,经一定延时后,KT1起动KM1,KM1动作后,使KM失磁返回,于是音响停止,整个事故信号回路恢复到原始状态。   准备第二台断路器跳闸时发出音响,不对应启动回路如图E-112。图E-111中常开触点KM2是由预告信号装置引来的(见图E-113),所以自动解除音响用的时间继电器KT1和中间继电器KM1为两套音响信号装置所共用。   为能试验事故音响装置的完好与否,另设有试验按钮SE1,按SE1时,即可启动KSP1,使装置发出音响并按上述程序复归至原始状态。   按下手动复归按钮也可使音响信号解除。          10、根据图E-113说明各符号元件的名称及动作过程。   答:预告信号装置是当设备发生故障或某些不正常运行情况时能自动发出音响和光字牌灯光信号的装置。它可帮助运行人员及时地发现故障及隐患,以便采取适当措施加以处理,防止事故扩大。变电所常见的预告信号有:变压器轻瓦斯动作、变压器过负荷、变压器油温过高、电压互感器二次回路断线、直流回路绝缘降低、控制回路断线、事故音响信号回路熔断器熔断、直流电压过高或过低等。   预告信号一般发自各种监测运行参数的单独继电器,例如过负荷信号由过负荷保护继电器发出。   预告信号分瞬时预告信号和延时信号两种,对某些当电力系统中发生短路故障可能伴随发出的预告信号,例如:过负荷、电压互感器二次回路断线等,都应带延时发出,其延时应大于外部短路的最大切除时限。这样,在外部短路切除后,这些由系统短路所引起的异常就会自动消失,而不让它发出警报信号,以免分散运行人员的注意力。   目前,广泛采用的中央复归带重复动作的预告信号装置,其动作原理与事故音响信号装置相同,所不同的是只是用光字牌灯泡代替了事故音响信号装置不对应启动回路中的电阻R,并用警铃代替了蜂鸣器,图E-118所示为由ZC-23型冲击继电器构成的中央复归能重复动作瞬时预告信息装置接线图,其动作原理与图E-111相似,图中KM1由图E-117引来,用以自动解除音响,WSW1和WSW2为瞬时预告小母线。   当设备发生不正常情况时,例如控制回路断线,则KBC2动作,其常开触点闭合,通过回路+WS KBC2常开触点 HP2 WSW1和WSW2   ST13-14 ST15-16 KSP2 -WS,使KSP2动作,触点KM2闭合,使警铃HA发出音响信号,同时光字牌HP2示出“控制回路断线”信号,按下解除按钮SCL,音响即可解除(也可经一定延时,自动解除),而光字牌信号直到故障消除,KBC2触点返回才会消失。由于采用了ZC-23型继电器,因而信号是可以重复动作的。为能经常检查光字牌灯泡的完好性,设有转换开关ST。处于“合”位时,ST触点1-2、3-4、5-6、7-8、9-10、11-12全接通,分别将信号电源+WS和-WS接至小母线WSW2和WSW1,使光字牌所有的灯泡亮。发预告信号时,两只灯泡是并联的,灯泡明亮,当其中一只灯泡损坏时,仍能保证发出信号。而试验光字牌时,两只灯泡则是串联的,因而灯光较暗,此时若一只灯泡损坏则该光字牌即不亮。   预告信号装置由单独的熔断器FU3、FU4供电,若FU3或FU4熔断则不能发出预告信号,所以对熔断器电源采用了灯光监视的方法。图E-119为预告信号装置的熔断器监视灯接线图。正常运行时,熔断器监视继电器K2带电,其常开触点闭合,中央信号屏上的白色指示灯HW亮;当FU3熔断时,K2失电,其常闭触点闭合,HW被接至闪光小母线(+)WTW上发出闪光。    11、根据图E-115说明线路定时限过电流保护的构成及动作过程。   答:如图E-115,当被保护线路发生故障时,短路电流经电流互感器TA流入KA1—KA3,短路电流大于电流继电器整定值时,电流继电器启动。因三只电流继电器触点并联,所以只要一只电流继电器触点闭合,便启动时间继电器KT,按预先整定的时限,其触点闭合,并启动出口中间继电器KOM。KOM动作后,接通跳闸回路,使QF断路器跳闸,同时使信号继电器动作发出动作信号。由于保护的动作时限与短路电流的大小无关,是固定的,固称为定时限过电流。        12、根据图E-116说明线路方向过电流保护的构成及动作过程。   答:方向过流的保护原理接线如图E-116所示,电流继电器3、5是启动元件,功率方向继电器4、6是方向元件,采用90°接线(UbcIA及UabIc)。各相电流继电器的触点和对应功率方向继电器触点串联,以达到按相启动的作用。时间继电器7是使保护装置获得必要的动作时限,其触点闭合,经信号继电器8发出跳闸脉冲,使断路器QF跳闸。   方向过电流保护,由于加装了功率方向继电器,因此线路发生短路时,虽然电流继电器都可能动作,但只有流入功率方向继电器的电流与功率方向继电器规定的方向一致时(当规定指向线路时,即一次电流从母线流向线路时),功率方向继电器才动作,从而使断路器跳闸。而当流入功率方向继电器的电流与功率方向继电器规定的方向相反时(即一次电流从线路流向母线时),功率方向继电器不动作,将方向过电流保护闭锁,保证了方向过电流保护的选择性。   在正常运行时,负荷电流的方向也可能符合功率方向继电器的动作方向,其触点闭合,但此时电流继电器未动作,所以整套方向过电流保护仍被闭锁不动作。   方向过电流保护的动作时限,是将动作方向一致的保护,按逆向阶梯原则进行整定的。     13、根据图E-117说明输电线路三段式电流保护的构成及动作过程。   答:线路三段式电流保护的原理接线图及展开图如图E-117所示。其中KA1、KA2、KS1构成第Ⅰ段瞬时电流速断;KA3、KA4、KT1、KS2构成第Ⅱ段限时电流速断;KA5、KA6、KT2、KS3构成第Ⅲ段定时限过电流。三段保护均作用于一个公共的出口中间继电器KOM,任何一段保护动作均启动KOM,使断路器跳闸,同时相应段的信号继电器动作掉牌,值班人员便可从其掉牌指示判断是哪套保护动作,进而对故障的大概范围作出判断。    14、根据图E-118说明线路三段式零序电流保护的构成及动作过程。   答:三段式零序电流保护的原理接线如图E-118,在被保护线路的三相上分别装设型号和变比完全相同的电流互感器,将它们的二次绕组互相并联,然后接至电流继电器的线圈。当正常运行和发生相间故障时,电网中没有零序电流,故IR=0,继电器不动作,只有发生接地故障时,才出现零序电流,如其值超过整定值,继电器就动作。   实际工作中,由于三只电流互感器的励磁特性不一致,当发生相间故障时,会造成较大的不平衡电流。为了使保护装置在这种情况下不误动作,通常将保护的动作电流按躲过最大不平衡电流来整定。   与相间短路的电流保护相同,零序电流保护也采用阶段式保护,通常采用三段式。目前的“四统一”保护屏则采用四段式。图E-118为三段式零序电流保护的原理接线图。瞬时零序电流速断(零序Ⅰ段有,由KA1、KM和KS7构成),一般取保护线路末端接地短路时,流过保护装置3倍最大零序电流3Iom的1.3倍,保护范围不小于线路全长的15%~25%。   零序Ⅱ段(由KA3、KT4和KS8构成)的整定电流,一般取下一级线路的零序Ⅰ段整定电流的1.2倍,时限0.5s,保证在本线末端单相接地时,可靠动作。   零序Ⅲ段(由KA5、KT6和KS9构成)的整定电流可取零序Ⅱ(或Ⅲ)段整定的1.2倍,或大于三相短路的最大不平衡电流,其灵敏性要求下一级末端故障时,能可靠动作。         15、根据图E-119说明双回线的横联差动保护的构成及动作过程。   答:双回线横联差动保护装置是由电流启动元件和功率方向元件组成,图E-119(a)中,功率方向继电器KPD1和KPD2的电流线圈与电流继电器KA串联接于双回线的电流差上。功率方向继电器KPD1与KPD2加进同一电压(接母线电压互感器),但极性相反。在I1> I2(即同一回线上发生故障)时,左边的方向继电器KPD1的转矩为正,而右边的方向继电器KPD2的转矩为负;反之,在I2> I1 (即另一回线上发生故障)时,KPD2的转矩为正,KPD1的转矩为负。这样两回线路中任一回线路上发生故障时,电流继电器KA均启动保护装置,而两个功率方向继电器则用来判别故障线路。   正常及外部故障时,ⅰ1=ⅰ2、ⅰR =0 、保护不动作。   在线路L-1上K点故障时,ⅰ1>ⅰ2 ,所以ⅰR =ⅰ1-ⅰ2>ⅰs,电流继电器KA1启动,功率方向继电器KPD1触点闭合,KPD2触点不闭合,保护动作跳开断路器QF1。在线路受端,流入继电器的电流ⅰR =ⅰ1+ⅰ2 [见图E-119(b)],使电流继电器KA2、功率方向继电器KPD3动作,而KPD4不动作,从而使断路器QF3跳闸。同理在线路L-2上短路时,送端KA1、KPD2动作,受端KA2、KPD4动作,同时跳开断路器QF2、QF4。   为防止单回线运行时,横联差动保护在外部故障时误动作,保护的直流电源经双回线两个开关的常开辅助触点串联闭锁,只有当两个开关同时接入时,保护才作用。   方向横联差动保护的动作电流应大于穿越性故障时在差电流回路中引起的最大不平衡电流。          16、根据图E-120说明双回线电流平衡保护的构成及工作情况。   答:电流平衡保护是横联差动保护的另一种形式,它是按比较双回线路中电流的绝对值而工作的,如图E-120所示。电流平衡继电器KBL1、KBL2各有一个工作线圈匝Nw,一个制动线圈匝NB和一个电压线圈匝Nv。KBL1的工作线圈接于线路L-1电流互感器的二次侧,由电流I1产生动作力矩Mw1,其制动线圈接于线路L-2电流互感器的二次侧,由电流I1产生动作力矩MB1。KBL2的工作线圈接于线路L-2电流互感器的二次侧,由I2产生动作力矩Mw2,其制动线圈接于线路L-1电流互感器的二次侧,由I1产生动作力矩MB2。KBL1、KBL2的电压线圈均接于母线电压互感器的二次侧。继电器的动作条件是Mw>MB+Mv(Mv为电压线圈中产生的力矩)。   正常运行及外部短路时,由于II=I2,KBL1、KBL2由于其反作用力矩Mv和继电器内弹簧反作用力矩Ms的作用,使触点保持在断开位置,保护不会动作。   当一回线路发生故障(如线路L-1的K点),由于II>I2,并由于电压大大降低,电压线圈的反作用力矩显著减少,因此KBL1中由II产生的动作力矩Mw1大于I2产生的制动力矩MB1与电压产生的制动力矩Mv之和,所以KBL1动作,切除故障线路L-1;对于KBL2,由于流过其制动线圈的电流II大于工作线圈流过电流I2,即制动力矩大于动作力矩,所以它不会动作。   必须指出,单端电源的双回线路上,平衡保护只能装于送电侧,受电侧不能装设。因为任一回线路短路,流过受电侧两个平衡继电器的工作线圈和制动线圈的电流大小是相等的,保护将不起作用。   由于双回平行线横联差动保护及平衡保护,在靠近对侧出口短路时,本侧两条线路流过的电流,其电流的横差值,不足以启动保护,只有等待对侧的保护动作,切除故障后,本侧的非故障线电流降为零,才由故障线电流启动本侧保护,切除故障线路。这种情况被称为相继动作。线路上相继动作区域大小与保护整定值及短路电流有关。   横联差动保护,其方向继电器接有母线电压,在平行线路出口三相短路时,电压为零,如方向继电器的电压回路没有良好的记忆作用,便会误动,称为电压死区。       (一)“跳闸后”位置   当SA的手柄在“跳闸后”位置,断路器在跳闸位置时,其常闭触点闭合,+WC经FU1 SA11-10 HG及附加电阻 QF(常闭) KMC线圈 FU2 -WC。此时,绿色信号灯回路接通,绿灯亮,它表示断路器正处于跳闸后位置,同时表示电源、熔断器、辅助触点及合闸回路完好,可以进行合闸操作。但KMC不会动作,因电压主要降在HG及附加电阻上。   (二)“预备合闸”位置   当SA的手柄顺时针方向旋转90o至“预备合闸”位置,SA9-10接通,绿灯HG回路由(+)WTW SA9-10 HG QF(常闭) KMC   FU2 -WC导通,绿灯闪光,发出预备合闸信号,但KMC仍不会启动,因回路中串有HG和R。   (三)“合闸”位置   当SA的手柄再顺时针方向旋转45o至“合闸”位置时,SA5-8触点接通,接触器KMC回路由+WC SA5-8 KL2(常闭) QF(常闭)   KMC线圈 -WC导通而启动,闭合其在合闸线圈回路中的触点,使断路器合闸。断路器合闸后,QF常闭触点打开、常开触点闭合。   (四)“合闸后”位置   松手后,SA的手柄自动反时针方向转动45o,复归至垂直(即“合闸后”)位置,SA16-13触点接通。此时,红灯HR回路由 FU1   SA16-13 HR KL线圈 QF(常开) YT线圈 FU2-WC   导通,红灯亮,指示断路器处于合闸位置,同时表示跳闸回路完好,可以进行跳闸。

  • 发表了主题帖: 电磁干扰抑制技术全面概述

          提起电磁干扰(EMI)这个词,人们或许还感陌生,但EMI的影响却是几乎每个人都曾身经历过的。例如,观看电视时,附近有人使用电钻、电吹风等电器,会使电视画面出现雪花点,所声器里发出剌耳的噪声……这类现象人们早已司空见惯、习以为常了,但是电磁干扰的危害却远不止如此。事实上,电磁干扰已使民航系统失效、通信不畅、计算机运行错误、自控设备误动作等,甚至危及人身安全。因此,加强电磁容性(EMC)知识的普及,提高EMI抑制技术,已成为当务之急。   所谓电磁兼容性是指电子线路、系统相互不影响,在电磁方面相互兼容的状态。对于EMC技术的研究,国外是从本世纪三十年代开始的,一些国家和国际组织如美国联邦通信委员会(FCC),德国电气电子工程师协会(VDE)、国际无线电干扰特别委员会(CISPR)等先后制定了一些指导性文件和规程,目前已形成一套较完整的体系,并得到严格遵守,美国计算机业即全面执行FCC规程。我国电磁兼容性工作起步较 步较晚,相关标准自八十年代才陆续出台,应用方面则由于缺乏经验和技术而举步艰难。如何尽快赶上国际先进水平,使我国电子产品能满足日益迫切的国内需求并在国际市场占一席之地,已成为为大家关心的重大课题。本文愿就电磁干扰抑制技术谈一点浅见,抛砖引玉,与各位共同切磋。   电磁干扰的定义,是指由外部噪声和无用电磁波在接收中所造成的骚扰。一个系统或系统内某一线路受电磁干扰程度可以表示为如下关系式:   N=G&TImes;C/I   G:噪声源强度;   C:噪声通过某种途径传到受干扰处的耦合因素;   I:受干扰电路的敏感程度。   G、C、I这三者构成电磁干扰三要素。电磁干扰抑制技术就是围绕这三要素所采取的各种措施,归纳起来就是三条:一、抑制电磁干扰源;二、切断电磁干扰耦合途径;三、降低电磁敏感装置的敏感性。下面就这三方面分别作出介绍。   一、抑制干扰源   要想掏干扰源,首先必须确定何处是干扰源,在越靠近干扰源的地方采取措施,抑制效果越好。一般来说,电流电压剧变即di/dt或du/dt大的地方就是干扰源;具体来说继电器开合、电容充电、电机运转、集成电路开关工作等都可能成为干扰源。另外,市电电源也并非理想的50Hz正弦波,而是充满各种频率噪声,是个不可忽视的干扰源。抑制方法可以采用低噪声电路、瞬态抑制电路、旋转装置抑制电路、稳压电路等;器件的选择则尽可能采用低噪声、高频特性好、稳定性高的电子元件。要注意,抑制电路中不适当的器件选择可能会产生新的干扰源。   二、切断电磁干扰耦合途径   电磁干扰耦合途径主要为传导和辐射两种。噪声经导线直接耦合到电路中最常见的。抑制传导干扰的主要措施是串接滤波器。滤波器分为低通(LPF)、高通(HPE)、带通(BPF)、带阻(BEF)四种,根据信号与噪声频率的差别选择不同类型的滤波器。如果噪声频率远高于信号频率,常采用LC低通滤波器,这种滤波器结构简单,滤除噪声效果也较好。但是对于军用或TEMPEST技术以及要求较高的民用产品,则必须采用穿心式滤波器。   穿心式滤波器(Feed-thruFilters)也称为穿越式滤波器,电路结构有 C型、T型和LC型,其特点在于高频特性优良,可工作在1GHz以上。这是其“同轴”性质决定的,由于它无寄生电感,提高了自谐频率。穿心式滤波器体积小、重量轻,允许电流大大,可广泛用于各种不同场合。   对于通过供电电源线传导的噪声可以用电源滤波器来滤除。只符合VDE0871标准的电源滤波器在30K-30MHZ范围内插入损耗为20-100dB。电源滤波器不仅可以接在电网输入处,也可接在噪声源电路的输出处,以抑制噪声输出,而且交直流两用。电源滤波器端口分高阻和低阻两端,应根据输入及负载阻抗不同来选择正确的接法。连接的原则是依照阻抗最失配,即高阻输入端接滤滤器阻端,低阻负载端接滤波器高阻端;反之亦然。   对传输线路及印刷电路板的布线设计,应注意进线与出线、信号线与电源线尽量分开。对于重点线路可采用损耗线滤波器、三端子电容、磁环等器件进行干扰抑制。对于接口端,国外有带滤波的D型、圆形、方形连接器产品,这类连接器是在普通连接器上加装电容或电感,构成滤波电路,其特点是不占用。PCB空间,不增加体积,这对于现代元件高密度设计极为重要。最近,国内也有厂家生产,质量不低于国外水平,可以替代进口。   对于辐射干扰,主要措施是采用屏蔽技术和分层技术。屏蔽技术是一门科学,选择适当的屏蔽材料,在适当的位置屏蔽,对屏蔽效果至关重要。尤其是屏蔽室的设计。可供选择的屏蔽材料种类繁多,有各种金属板、指形铍铜合金簧片、铜丝网、编织铜带、导电橡胶、导电胶、导电玻璃等等。应根据需要选择。屏蔽室的设计应充分考虑门窗、通风口、进出线口的屏蔽与搭接。除静电屏蔽外,还需考虑磁屏蔽以及接地和接大地技术。   三、降低电磁敏感装置的敏感度   电磁敏感装置的敏感是一柄双刃剑;一方面人们希望接收装置灵敏度高,以提高对信号的接收能力;另一方面,灵敏高受噪声影响的可能性也就越大。因此,根据具体情况采用降额设计、避设计、网络钝化、功能钝化等方法是解决问题的办法。   综上所述,对于电磁干扰的抑制方法很多,可以选择一种或多种综合运用。但不论选择什么方法都应从设计之初就着手系统电磁兼容性的考虑,而不是亡羊补牢。据报道,若在产品开始研制时即进行电磁兼容设计,大约90%的传导和辐射干扰都可以得到控制。根据可靠性、安全性、质量要求、环境控制、效/费权衡,选择适当的电磁干扰抑制技术,这就是电磁兼容性的研究内容。

  • 2019-06-20
  • 发表了主题帖: ARM中的特殊寄存器

     SP(R13)   特殊寄存器   LR(R14)   1、当存在子程序时,保存有子程序的返回地址   2、当异常中断发生时,保存有异常模式的返回地址   PC(R15)   保存程序的当前地址   例 :(bootloader中start.S文件)   reset:   bl set_svc                         @设定svc模式,bl跳转至相应分支   bl disable_watchdog        @关闭开门狗   set_sv   mrs r0, cpsr                     @Current Program Status Register(CPSR)当前程序状态寄存器  ,mrs(move register from special register)   bic r0, r0, #0x1f               @按位取反   orr r0, r0, #0xd3              @按位取或   msr cpsr, r0                     @mrs(move special register from register)   mov pc, lr                        @返回   #define pWTCON 0x53000000      @watchdog control register   disable_watchdog:                         @disable watchdog branch   ldr r0, =pWTCON           @将地址装载至寄存器   mov r1, #0x0   str r1, [r0]                       @存储数据到内存   mov pc, lr                       @返回   注意:   mov 指令只能用于通用寄存的传送;   ldr 与str 是内存与数据之间的传送;

  • 发表了主题帖: 如何对嵌入式最小系统的软硬件架构进行改进?

    1.前言   随着嵌入式相关技术的迅速发展,嵌入式系统的功能越来越强大,应用接口更加丰富,根据实际应用的需要设计出特定的嵌入式最小系统和应用系统,是嵌入式系统设计的关键。目前在嵌入式系统开发的过程中,开发者往往把大量精力投入到嵌入式微处理器MPU(Micro Processing Unit)与众多外设的连接方式以及应用代码的开发之中,而忽视了对嵌入式系统最基本、最核心部分的研究。   当前在嵌入式领域中,ARM(Advanced RISC Machines)处理器被广泛应用于各种嵌入式设备中。由于ARM嵌入式体系结构类似并且具有通用的外围电路,同时ARM内核的嵌入式最小系统的设计原则及方法基本相同,这使得对嵌入式最小系统的研究在整个系统的开发中具有着至关重要的意义。本文以基于ARM的嵌入式最小系统为平台,从硬件和软件两方面对嵌入式最小系统的架构进行了研究,硬件方面主要介绍了ARM处理器与典型外部存储器的接口技术,软件方面重点就嵌入式最小系统的启动架构做了详细分析。   2. 嵌入式最小系统   嵌入式最小系统即是在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。对于一个典型的嵌入式最小系统,以ARM处理器为例,其构成模块及其各部分功能如图1所示,其中ARM微处理器、FLASH和SDRAM模块是嵌入式最小系统的核心部分。   时钟模块——通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入   Flash存储模块——存放启动代码、操作系统和用户应用程序代码   SDRAM模块——为系统运行提供动态存储空间,是系统代码运行的主要区域   JTAG模块——实现对程序代码的下载和调试   UART模块——实现对调试信息的终端显示   复位模块——实现对系统的复位   3. 外存储器接口技术   ARM处理器与外部存储器(Flash和SDRAM)的接口技术是嵌入式最小系统硬件设计的关键。根据需要选择合理的接口方式,可以有效的提升嵌入式系统的整体性能。   3.1常用外存储器简介   (1)Nor Flash与Nand Flash   Nor Flash也称为线性Flash,可靠性高、随机读取速度快,具有芯片内执行(XIP, eXecute In Place)的特点,这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。常用在擦除和编程操作较少而直接执行代码的场合。   Nand Flash则是高数据存储密度的理想解决方案,一般用于数据存储和文件存储,以块为单位进行擦除,具有擦除速度快的优点。   (2)同步动态存储器SDRAM   SDRAM(Synchronous Dynamic Random Access Memory)是在早期DRAM的基础上改进而来的,它是同步内存,并在接口信号中引入了CLK信号,所有数据、地址和控制信号都是和CLK上升沿对齐的。此外SDRAM还在内部引入了一个命令控制器,处理器访问SDRAM都是通过向命令控制器发送命令来实现的。   3.2 ARM处理器与Flash接口技术   3.2.1ARM处理器与Nor Flash接口技术   Nor Flash 带有SRAM接口,有足够的地址引脚,可以很容易的对存储器内部的存储单元进行直接寻址。在实际的系统中,可以根据需要选择ARM处理器与Nor Flash的连接方式。图2给出了嵌入式最小系统在包含两块Nor Flash的情况下,ARM处理器与Nor Flash两种不同的连接方式。   1)双Flash独立片选   该方式是把两个Nor Flash芯片各自作为一个独立的单元进行处理。根据不同的应用需要,可以在一块Flash中存放启动代码,而在另一块Flash中建立文件系统,存放应用代码。该方式操作方便,易于管理。   (2)双Flash统一片选   该方式是把两个Nor Flash芯片合为一个单元进行处理,ARM处理器将它们作为一个并行的处理单元来访问,本例是将两个8bit的Nor Flash芯片SST39VF1601用作一个16bit单元来进行处理。对于N(N》2)块Flash的连接方式可以此作为参考。   3.2.2ARM处理器与Nand Flash接口技术   Nand Flash接口信号比较少,地址,数据和命令总线复用。Nand Flash的接口本质上是一个I/O接口,系统对Nand Flash进行数据访问的时候,需要先向Nand Flash发出相关命令和参数,然后再进行相应的数据操作。ARM处理器与Nand Flash的连接主要有三种方式   运用GPIO管脚方式去控制Nand Flash的各个信号,在速度要求相对较低的时候,能够较充分的发挥NAND设备的性能。它在满足NAND设备时域需求方面将会有很大的便利,使得ARM 处理器可以很容易的去控制NAND设备。该方式需要处理器提供充足的GPIO。   (2)运用逻辑运算方式进行连接   在该方式下,处理器的读和写使能信号通过与片选信号CS进行逻辑运算后去驱动NAND设备对应的读和写信号。图3中b例为SamSung公司ARM7TDMI系列处理器S3C44B0与Nand Flash K9F2808U0C的连接方式。   (3)直接芯片使能   有些ARM处理器如S3C2410内部提供对NAND设备的相应控制寄存器,通过控制寄存器可以实现ARM处理器对NAND设备相应信号的驱动。该方式使得ARM处理器与NAND设备的连接变得简单规范,图3中c例给出了ARM处理器S3C2410与Nand Flash K9F2808U0C的连接方式。   3.3 ARM处理器与SDRAM接口技术   嵌入式最小系统的外部动态存储器模块一般采用SDRAM。现在的大多数ARM处理器内部都集成有SDRAM控制器,通过它可以很容易的访问SDRAM内部的每一个字节。在实际开发中可以根据需要选用一片或多片SDRAM。图4中给出了两种常用的接口方式。   如何对嵌入式最小系统的软硬件架构进行改进?   (1)单片SDRAM     中a例为 ARM处理器S3C44B0与一个16bit的SDRAM K4S641632d的连接方式。在对尺寸有严格限制且对动态存储器容量要求不高的嵌入式系统中常采用此种连接方式。   (2)双片16bit SDRAM结合使用   在双片16bit SDRAM合成一个32bit SDRAM使用时,ARM处理器的地址线A2接SDRAM的地址线A0,其余地址依次递增,这是因为在SDRAM中字节是存储容量的惟一单位,而此时SDRAM为32bit位宽。   SDRAM的BA地址线是其内部Bank的地址线,代表了SDRAM内存的最高位。在图4中b例的SDRAM总大小是64M(64M= ),需要A25-A0引脚来寻址,所以BA1-BA0连接到了A25-A24引脚上。还需注意的是SDRAM内存行地址和列地址是复用的,所以地址线的数目一般少于26条,具体连接需要参考ARM处理器和SDRAM的相关手册。   值得注意的是,有些ARM处理器如SamSung公司的 ARM940T系列处理器S3C2510 ,其地址总线与其它标准ARM处理器不太一样,它的地址线分为内部地址线和外部地址线两种类型。根据所连接的存储器数据总线宽度,内部地址线进行相应的移位,对应到外部地址线A23-A0,从而对外提供固定的地址线A23-A0。其实质与典型的ARM处理器是一致的。   4. 嵌入式系统启动架构   启动架构是嵌入式系统的关键技术。掌握启动架构对于了解嵌入式系统的运行原理有着重要的意义。嵌入式系统在启动时,引导代码、操作系统的运行和应用程序的加载主要有两种架构,一种是直接从Nor Flash启动的架构,另一种是直接从Nand Flash启动的架构。   需要注意的是,在嵌入式系统启动引导的过程中会有多种情况出现,如vxWorks的启动代码BootRom就有压缩和非压缩,驻留和非驻留方式之分,而操作系统本身也多以压缩映象方式存储,所以启动代码在执行和加载过程中需要根据不同的情况,作出相应的处理。   4.1从Nor Flash启动   Nor Flash具有芯片内执行(XIP,eXecute In Place)的特点,在嵌入式系统中常做为存放启动代码的首选。从Nor Flash启动的架构又可细分为只使用Nor Flash的启动架构和Nor Flash与Nand Flash配合使用的启动架构。图5 给出了这两种启动架构的原理框图。   4.1.1单独使用Nor Flash   在该架构中,引导代码、操作系统和应用代码共存于同一块Nor Flash中。系统上电后,引导代码首先在Nor Flash中执行,然后把操作系统和应用代码加载到速度更高的SDRAM中运行。另一种可行的架构是,在Nor Flash中执行引导代码和操作系统,而只将应用代码加载到SDRAM中执行。   该架构充分利用了Nor Flash芯片内执行的特点,可有效提升系统性能。不足在于随着操作系统和应用代码容量的增加,需要更大容量昂贵的Nor Flash来支撑。   4.1.2 Nor Flash和Nand Flash配合使用   Nor Flash的单独使用对于代码量较大的应用程序会增加产品的成本投入,一种的改进的方式是采用Nor Flash 和Nand Flash配合使用的架构。在该架构中附加了一块Nand Flash,Nor Flash(2M或4M)中存放启动代码和操作系统(操作系统可以根据代码量的大小选择存放于Nor Flash或者Nand Flash),而Nand Flash中存放应用代码,根据存放的应用代码量的大小可以对Nand Flash容量做出相应的改变。   系统上电后,引导代码直接在 Nor Flash中执行,把Nand Flash中的操作系统和应用代码加载到速度更高的SDRAM中执行。也可以在Nor Flash中执行引导代码和操作系统,而只将Nand Flash中的应用代码加载到SDRAM中执行。该架构是当前嵌入式系统中运用最广泛的启动架构之一。   4.1.2从Nand Flash启动   有些处理器如SamSung公司的ARM920T系列处理器S3C2410支持从Nand Flash启动的模式,它的工作原理是将NandFlash中存储的前4KB代码装入一个称为Steppingstone(BootSRAM)的地址中,然后开始执行该段引导代码,从而完成对操作系统和应用程序的加载。该方式需要处理器内部有NAND控制器,同时还要提供一定大小额外的SRAM空间,有一定的使用局限性,在实际开发中较少使用。   5. 结束语   本文作者创新点:根据ARM体系结构的相通性,以基于ARM的嵌入式最小系统为平台,从硬件和软件两方面对其架构进行了研究。硬件方面就ARM处理器与常用外部存储器的接口方式进行了阐述,软件方面给出了嵌入式最小系统典型的启动架构及其选择标准。

  • 2019-06-19
  • 发表了主题帖: lpc2000系列微控制器片内flash编程的方法

         每一个VIC通道都支持软件中断与硬件中断,即每个中断均可由软件或硬件中断产生,软件中断与对应通道上的硬件中断是逻辑“或”的关系。软件中断可通过置位VICSoftInt寄存器相应位来产生,也可通过置位VICSoftIntClear寄存器相应位来清除。   LPC2000具有3类中断:FIQ、向量IRQ和非向量IRQ。LPC2000系列可通过对VICIntSelect和VICVectCntlx(x=0,1,…,15)这两类寄存器的设置,将以上的32个中断源设置为这三类中断的任何一种。其中,   快速中断请求FIQ具有最高优先级。建议只分配一个中断请求给FIQ以减少中塅处理程序的延迟。当然,VIC支持多个FIQ中断。   向量IRQ具有中等优先级。该级别最多可分配32个请求中的16个。32个请求中的任何一个都可以分配到16个向量IRQslot中的任意一个。其中,slot0具有最高优先级,而slot15则为最低优先级。   非向量IRQ具有最低优先级。   如何初始化某个中断源为三类中断中的一类   通过VICIntSelect中断选择寄存器将32个中断请求分配为FIQ或IRQ(包括向量IRQ与非向量IRQ);通过VICVectCntlx(x=0,1,…,15)来选择32个中断请求中的某个为向量IRQ并设定此中断请求为IRQ slotx(x对应于VICVectCntlx中的x)。若某个中断源被设定为IRQ,但却未通过VICVectCntlx使能,则该中断源将被默认为非向量IRQ。   中断处理过程中断处理过程如下所示:   初始化:设置中断源为3种中断源之一,设置中断地址,使能中断,然后正常运行用户程序;   当有IRQ中断产生时,VIC将会根据中断源设置VICVectAddr寄存器为相应中断服务程序的地址,切换处理器工作模式为IRQ模式,并跳转到IRQ中断入口0x00000018处;   异常中断向量表中0x00000018处使用“LDR PC, [PC, #-0xFF0]”,使得程序跳转到(0x00000018+8-0x00000FF0=0xFFFFF030)存储器处保存的地址。0xFFFFF030是VICVectAddr寄存器地址。也即是说:通过该指令,程序跳转到VICVectAddr寄存器所指向的中断服务程序的地址;   中断服务程序执行相应的中断处理,清除中断。建议用__irq关键字定义中断服务程序;   中断服务完成后,即可返回原中断点。返回时要同时切换处理器工作模式。   注意:退出中断前,一定要对VICVectAddr寄存器写0,通知VIC中断结束;建议用__irq关键字定义中断服务程序,这样的话,该函数将自动切换处理器工作模式,但该函数不能返回参数或者数值。   IRQ中断   IRQ中断有向量IRQ和非向量IRQ中断两种类型,当IRQ中断产生时:   若是向量IRQ中断,由于之前VIC已经将最高优先级请求的IRQ服务程序地址VICVectAddrx(x=0,1,…,15)装入VICVectAddr,故程序跳入该中断服务程序继续执行。   若是非向量IRQ中断,VIC提供默认服务程序地址VICDefVectAddr,IRQ中断入口程序可通过读取VIC的向量地址寄存器VICVectAddr来取得该地址,然后跳转到相应服务程序继续执行。该默认服务程序由所有非向量IRQ公用,默认服务程序可读取IRQ状态寄存器以确定哪个IRQ被激活。   lpc2000的工作原理   嵌入式处理器是嵌入式系统硬件最核心的部分,飞利浦推出十余款基于 ARM7 的高性能低功耗LPC2000系列微控制器,来满足不断增长的嵌入式市场需求。LPC2000系列微处理器工作频率为60MHz,采用基于ARMTDMI内核的32位RISC。LPC2000的外设接口非常丰富,包括UART、SPI、I2C、CAN、ADC、 PWM、RTC等。   这一系列微控制器LPC2114/2124/2119/2129/2194、LPC2210/2212/2214、LPC2290 /2292/2294借助片上存储器加载模块实现了“零等待访问”高速闪存功能,提高了指令执行的效率。在高性能低功耗的基础上提供了增强的通信功能和片上代码保护机制。由于内置了宽范围的串行通信接口,它们也非常适用于通信网关、协议转换器、嵌入式软调制解调器等。6通道的PWM更能用于复杂的马达控制应用。   LPC2000系列微控制器能够实现零等待访问的高速闪存,这主要归功于片上的存储器加速模块。图2为存储器加速模块的结构框图。128位宽度的闪存阵列通过单独的局部总线与处理器接口,每周期可为ARM内核提供四条32位指令。这使得MCU无需经过等待状态就可直接从闪存上执行指令,从而消除了一般闪存读取时的等待时间。为了解决指令序列的变化,指令和数据的不同处理带来的等待时间,模块内部实现了预取缓冲器、避免数据读/写打乱地址序列的数据旁路和跳转跟踪缓冲器三个功能块的联合工作,并用两组128位宽度的存储器来进行并行访问,消除延时。   存储器加速模块的作用取决于系统时钟的大小。LPC2000系列片上闪存的访问时间为50nS,对于系统时钟不高于20MHZ的应用,在1个周期内就可将闪存的内容读出,此时没必要使用存储器加速模块。时钟频率越高,当直接执行闪存中的代码时,系统性能受影响越大,此时使能存储器加速模块,可以得到接近4倍速度的加速,真正实现零等待高速闪存。由于LPC2000可直接从闪存执行指令,无需引导期间将代码传送到SRAM,这不仅省掉了耗时又耗能的系统启动步骤,还节省了昂贵的SRAM。   对片内闪存的编程可通过几种方法来实现:通过内置的串行JTAG 接口,通过串口进行在系统编程(ISP),或通过在应用编程(IAP)。   矢量中断控制器   LPC2000系列的矢量中断控制器可以支持最多32个中断请求,可根据需要将其编程分为3 类:FIQ、矢量IRQ 和非矢量IRQ。快速中断请求(FIQ)要求具有最高优先级。矢量IRQ 具有中等优先级。该级别可分配32个请求中的16个。非矢量IRQ 的优先级最低。这种可编程分配机制意味着不同外设的中断优先级可以动态分配并调整。对于任意矢量中断,一旦发出请求,CPU可在一个周期内过读取VIC并跳转到相应的中断服务程序的入口地址,这将中断延时降低到最小。   对lpc2000系列微控制器片内flash编程的方法   1.LPC2000的Flash简介   Flash存储器系统包含128kB Flash器件的16个扇区和256kB Flash器件的17个扇区。Flash存储器从地址0开始并向上增加。Flash boot装载程序同时提供片内Flash存储器的ISP和IAP编程接口。IAP、ISP和RealMonitor程序都位于boot扇区。boot扇区存在于所有的器件当中。ISP和IAP命令不允许对boot扇区执行写/擦除/运行操作。在128kB Flash器件中只有120kB Flash可供用户程序使用。器件共包含256kB的Flash,其中,248kB的Flash可供用户程序使用。Boot Block一般位于片内Flash存储器顶端。在128kB Flash中,它是第16个扇区(对应的扇区号是15),在256kB Flash中,它是第18个扇区(对应的扇区号是17)。Boot Block占有的Flash存储器扇区不能用来存放用户数据。   LPC2000系列提供在在应用中编程IAP,最终用户代码直接执行在应用编程 (IAP)对片内Flash存储器进行擦除和编程操作。Falsh可以擦写10000次,512字节行编程时间为1ms。单扇区或整片擦除时间为400ms。   Flash存储器在写或擦除操作过程中不可被访问。   执行Flash写/擦除操作的IAP命令使用片内RAM顶端的32个字节空间。如果应用程序中允许IAP编程,那么用户程序不应使用该空间。   很多8位单片机中有页的概念,页为Flash编程的最小单位,每次可以擦除和编程一个页的内容,由于页中包含的字节较少,在这种情况下把Flash用作EEPROM灵活性会很好。而LPC2000系列没有页的概念,它只有扇区这个最小的Flash编程单位,即用户即使是只修改一个字节,也需要首先擦除8K的Flash。   把Flash当作EEPROM的过程,其实就是对Flash进行读-修改-写的过程。   2.向Flash中写数据   Flash必须遵循选择扇区,擦除,选择扇区,写的过程,具体到程序的编写,必须先后有下面的代码:   SelSector(1,1); // 选择扇区1   EraseSector(1,1); // 擦除扇区1   SelSector(1,1); // 选择扇区1   for(i=0;i《512;i++)   source[i]=0x41;   RamToFlash(0x00002000, (uint32)source, 512); // 写数据到扇区1   应用的时候需要注意下面几点:   1)如果写之前没有选择扇区,是不能正确写入的。   2)如果写之前没有擦除,写入是不正确的。   3)最少写512字节,写入的字节数应当为512 或 1024 或 4096 或 8192.   4)Flash在擦写时不能访问,这也是IAP是要关闭中断的原因。关中断可以用下面的语句来实现:__asm{MSR CPSR_c, #0xdf},与此对应,开中断可以下面的语句:__asm{MSR CPSR_c, #0x5f}。   另外,经常有人问如何将一个常量的数值定义在Flash的特定地址上,我觉得这个功能不太实用,因为每次擦除的最小单位是8K,到不如直接写数据到Flash的一个地址,这个地址是在一个空扇区中,读和写都以这个地址为基址。由于编译后的代码是向下靠紧的,所以你可以查看一下编译后的代码量,然后选择靠上的地址做为用的变量区。如果实在想把数组定义在Flash的特定位置好像可以用分散加载。   3. 从Flash中读数据   从Flash中读数据比较简单,可以定义一个指针变量,该指针变量指向特定的Flash地址,例如可以写成下面的样子:   uint32 i;   uint8 * p;   p=(uint8 *)0x1C000;   for(i=0;i《400;i++)   {   Puthexbyte(*(p++));   }   4. Flash的加密   代码读保护 这是Bootloader修订版1.61的特性。代码读保护通过向Flash地址单元0x1FC(用户Flash扇区0)写入0x87654321(十进制表示为2271560481)来使能。地址单元0x1FC用来允许为fiq异常处理程序保留部分空间。当JTAG调试端口的代码读保护被使能时,外部存储器引导和以下ISP命令将被禁能:   l 读存储器   l 写RAM   l 运行   l 将RAM内容复制到Flash   上述ISP命令终止时返回CODE_READ_PROTECTION_ENABLED。代码读保护使能时,ISP擦除命令只允许擦除用户扇区的内容。这种限制是代码读保护不使能时所没有的。IAP命令不受代码读保护的影响。   采用工程模板的RelInFlash会自动加密。   5. 采用工程模板时需要注意的地方   采用ZLG的工程模板时需要注意下面几点:   对lpc2000系列微控制器片内flash编程的方法   1)修改堆栈,在STARTUP.S文件中的初始化堆栈为 StackUsr-20*4   2)设置编译参数-apcs/intervork,需要注意是修改 Language Settings/ARM C Compiler/ATPS下面的。我一开始的时候不小心选择的语言设置是ARM Assembler ,结果运行程序后一写Flash就错,大家要选准语言设置。   3)变量定义,由于一次至少写512个字节,所以跟读写操作的变量最好定义为uint32类型的,我犯的一个错误是将变量定义为uint8类型的,如下面:   uint8 i;   for(i=0;i《512;i++)   source[i]=0x41;   RamToFlash(0x00002000, (uint32)source, 512); // 写数据到扇区1   结果可想而知,一直在for循环中运行而跳不出来,这到给我们一个IAP不好用的假象

  • 发表了主题帖: ARM的嵌入式系统CF卡与CPLD连接技术详解

            随着应用需求的不断提高,许多嵌入式系统在应用时都要求带有扩展的大容量存储器来存储数据。CF 卡(Compact Flsah Card)由于价格便宜、存储容量大、体积小、兼容性好等优点被广泛应用于嵌入式产品。然而现有的CF 卡接口电路存在接口复杂,稳定性不高等缺点,不能满足客户的需求。通过深入研究ARM 处理器AT91RM9200 的外部总线接口(EBI)、CF 卡和CPLD 的工作原理,提出利用CPLD来改进CF 卡接口电路以解决现有接口电路中存在的缺点。   2 器件简介   2.1 外部总线接口   系统采用了以ARM920T 为内核的AT91RM9200作为微处理器,它是完全围绕ARM920T Thumb 处理器构建的系统。它有丰富的系统与应用外设及标准的接口,包括一个高速片上SRAM 工作区及一个低等待时间的外部总线接口(EBI)以完成应用所要求的片外存储区和内部存储器映射外设配置的无缝连接。外部总线接口结构如图1 所示。      EBI 通过集成电路支持CF 卡与SmartMedia 协议,从而极大地降低了对外部组件的需求。此外,EBI可处理多达8 个外设的数据传输,每个外设分配8 个在内置存储控制器中定义的地址空间。数据通过16 位或32 位数据总线进行传输,地址总线高达26位,8个芯片选择口(NCS[7:0])和在不同外部存储控制器间复用的多个控制引脚进行复用。   2.2 CF 卡   CF 卡(Compact Flash Card)是采用Flash Memory技术的存储卡,具有体积小、价格低廉、兼容性强、存储量大等优点。CF 卡支持三种接口模式,分别是PCCard Memory Mode、PC Card I/O Mode、True IDEMode。因为True IDE Mode 不经常使用,故接口电路以PC Card Memory Mode 和PC Card I/O Mode设计。   2.3 CPLD   CPLD(Complex Programmable Logic Device)是一种较PLD 复杂的逻辑元件[2],是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。   该文采用的CPLD 是Altera 公司的MAX7000S系列的EPM7128SQL100-10。它有84 个引脚,其中5 根用于ISP(IN System Programmable)下载,可方便的对其进行“在系统”编程。EPM7128SQL100-10支持对电压工作,可以利用Altera 公司的第四代开发平台quartus Ⅱ方便地进行仿真、综合和下载。   3 硬件接口电路设计   硬件接口电路的电路图如图2 所示。在此电路中用CPLD 来实现一般CF 卡接口电路中的双向缓冲器和与非门等一些逻辑器件的逻辑功能,使接口电路变的更为简单、稳定、高速,而且可以通过现场修改程序来实现不同的功能。      CF 卡中的_CD1、_CD2 是CF 卡是否安装的状态检测信号,在CF 卡中接地。当CF 卡没有安装时,电路中_CD1、_CD2 由上拉电阻将其输出拉为高电平;当CF 卡安装时,_CD1、_CD2 由CF 卡接地输出为低电平,_CD1、_CD2 相当于CF 卡的总开关。在实际接口电路中_CD1、_CD2 要接10 kΩ 的上拉电阻。   将片选任务寄存器的CS4A 编程为1 则可使能EBI 的复用引脚NCS4/CFCS、NCS5/CFCE1、NCS6/CFCE2 为CompactFlash 信号CFCS、CFCE1、CFCE2,使能NOE/NRD/CFOE、NWR0/NEW/CFWE、NWR1/NBS1/CFIOR、NWR3/NBS3/CFIOW、A25/CFRNW为Compact Flash 信号CFOE、CFWE、CFIOR、CFIOW、CFRNW。这样就可以通过访问保留给NCS4 的地址空间来访问外部的CF 卡。在NCS4 的地址空间中用当前的传输地址来分辨I/O 模式,通用存储模式是标志存储模式。传输地址总线的A23 用作I/O 模式选择。该文CF 卡用A22/REG 来分离通用存储模式和标志存储模式。   在I/O 模式下,CompactFlash 的逻辑驱动CFIOR与CFIOW 信号上SMC 的读写信号,此时CFOE 与CFWE 信号失效。同样在通用存储模式和标志存储模式下驱动CFOE 与CFWE 信号上的SMC,CFIOR与CFIOW 信号失效。该逻辑如图3 所示。     CFOE 与CFWE 通过CPLD 和CF 卡的OE 与WE连接起来,这是CF 卡在Memory Mode 的读写使能。   CFIOE 与CFIOW 通过是I/O Mode 的使能。除了使能信号外,其他的信号对2 种模式都是相同的。   CFCE1 与CFCE2 信号使能CF 卡的数据总线由上或是由下访问,具体信息见表1。只有当NCS4 引脚上的SMC 配置为驱动8 位存储器时才可进行奇字节访问,NCS4 地址空间中的片选寄存器必须如表1所示进行设置。      _CD1、_CD2 为低电平时,CPU 的地址总线的低11 位A[10∶0]于CF 卡的地址总线A[10∶0]连通,CPU的数据总线的低16 位D[15∶0]与CF 卡的地址总线D[15∶0]连通。CPU 的A25/CFRNW 信号是数据流的方向的,NCS4/CFCS 信号是数据总线的传输使能。详细内容请参阅表2。      CPU 是高速器件,CF 卡是低速器件,在CPU 给CF 卡传输数据的时候就会发生因为接收速度慢而丢失数据的情况。所以需要用_WAIT 信号来延迟CPU 的发送,这样才能使CPU 的发送时序与CF 卡的接受时序匹配,使得数据的传输正确无误。实际电路中CF 卡的_WAIT 信号通过CPLD 来控制CPU 的NWAIT 信号,_WAIT 要接10 kΩ 的上拉电阻。RDY/BSY 是CF 卡的工作状态信号,当RDY/BSY 为1 时,CF 卡已经做好准备接收新的数据;当RDY/BSY 为0 时,CF 卡正在接受数据,这个信号也要接个10 kΩ上拉电阻。CF 卡的复位RESET 信号也是由系统的复位nRESET 信号在CPLD 中反相后产生的,以保持和系统的复位信号同步。   4 CPLD 程序开发   CPLD 程序在quartus Ⅱ下用Verilog HDL 语言编写。程序经过编译后,下载到CPLD 中固化。连接电路板和CF 卡,对CF 卡进行数据的读写操作,测试结果表明数据传输正确无误,且传输速率更高。   5 结束语   该文重点研究了如何利用CPLD 来连接基于ARM 的嵌入式系统与CF 卡。其中使用的CPLD 不但简化了接口电路,使其适合现场编程,同时改进的接口电路还适合产生各种复杂组合逻辑和时序逻辑。这种存储技术的正确性已在电路板上得到验证,它为基于ARM 的嵌入式系统的CF 卡存储提供了一种有效的解决方案。

  • 2019-06-18
  • 发表了主题帖: Zigbee技术规范与协议栈分析

         伴随无线传感器网络的迅猛发展,Zigbee技术作为最近发展起来的一种短距离无线通信技术,以其低功耗、自组织、安全可靠、支持大量节点等优势,被业界 认为是最有可能应用在工控场合的无线方式。到目前为止,节点已经应用于工业监控、智能家庭、安全医疗等多个领域,具有很大的发展空间。     Zigbee协议栈(Z-STACK)作为Zigbee技术的核心,是开发802.15.4/Zigbee必须掌握的关键技术。协议栈发展至今已有四种版 本(见表1),尽管实现功能越发完善,但是并未移植标准的操作系统统一任务调度,嵌套相当复杂,而显得源代码的可读性和可操作性较差,开发者在理解和实现 协议的过程中仍会遇到很多困难。本文通过对最典型的、起到承上启下作用的Zigbee-2006协议栈的解读,对协议程序的运行过程提供一种准确的解释分 析,降低开发者的阅读难度和工作量,为协议栈自身的发展、Zigbee设备的开发及应用的推广提供强有力的技术支持。   1 协议栈体系结构及规范     Zigbee协议栈体系结构如图1所示[1], 协议栈的层与层之间通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。大多数层有两个接口:数据实体接口和管理实体接 口。数据实体接口的目标是向上层提供所需的常规数据服务;管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的服务[2]。   1.1 物理层服务规范     物理层通过射频固件和硬件提供MAC层与物理无线信道之间的接口。从概念上说,物理层还应包括物理层管理实体(PLME),以提供调用物理层管理功能的管 理服务接口;同时PLME还负责维护物理层PAN信息库(PHY PIB)。物理层通过物理层数据服务接入点(PD-SAP)提供物理层数据服务;通过物理层管理实体服务接入点(PLME-SAP)提供物理层管理服务。 1.2 MAC层服务规范     MAC层提供特定服务会聚子层(SSCS)和物理层之间的接口。从概念上说,MAC层还应包括MAC层管理实体(MLME),以提供调用MAC层管理功能 的管理服务接口;同时MLME还负责维护MAC PAN信息库(MAC PIB)。MAC层通过MAC公共部分子层(MCPS)的数据SAP(MCPS-SAP)提供MAC数据服务;通过MLME-SAP提供MAC管理服务。 这两种服务通过物理层PD-SAP和PLME-SAP提供了SSCS和PHY之间的接口。除了这些外部接口外,MCPS和MLME之间还隐含了一个内部接 口,用于MLME调用MAC数据服务。 1.3 应用层规范     Zigbee应用层包括APS子层、ZDO(包含ZDO管理平台)和厂商定义的应用对象。应用支持子层(APS)提供了网络层(NWK)和应用层 (APL)之间的接口,功能是通过ZDO和厂商定义的应用对象都可以使用的一组服务来实现。数据和管理实体分别由APSDE-SAP和APSME-SAP 提供。APSDE提供的数据传输服务在同一网络的两个或多个设备之间传输应用层PDU;APSME提供设备发现和绑定服务,并维护管理对象数据库—— APS信息库(AIB)。 1.4 网络层规范     网络层应提供保证IEEE 802.15.4 MAC层正确工作的能力并为应用层提供合适的服务接口。数据和管理实体分别由NLDE-SAP和NLME-SAP提供。具体来说,NLDE提供的服务:一 是在应用支持子层PDU基础上添加适当的协议头产生网络协议数据单元(NPDU);二是根据路由拓扑,把NPDU发送到通信链路的目的地址设备或通信链路 的下一跳。而NLME提供的服务包括配置新设备、创建新网络、设备请求加入/离开网络和Zigbee协调器或路由器请求设备离开网络、寻址、近邻发现、路 由发现、接收控制等。网络层的数据和管理服务由MCPS-SAP和MLME-SAP提供了应用层和MAC子层之间的接口。除了这些外部接口,在NWK内部 NLME和NLDE之间还有一个同隐含接口,允许NLME使用NWK数据服务。 2 协议栈程序分析 2.1 运行环境     软件环境:IAR 7.20、串口调试工具、数据分析仪以及各硬件驱动软件等。     硬件环境:PC(.NET 1.1 架构, Windows 98以上,1个串口,1个USB接口)、CC2430 ZigBee开发板(至少包括一个网络协调器和一个终端设备,验证阶段可省略路由设备)等。 2.2 程序流程     将各开发板与PC正确连接,运行各软件,当程序烧至开发板后,启动即调用主函数ZSEG int main( void )。主函数的主要工作流程如图2所示。需要注意的是,Zigbee协议栈的精华在于操作系统OSAL的任务调度,因此,在进入主循环处理函数之前的准备工 作中,操作系统的初始化尤为重要。osalTaskInit()、osalAddTasks()、osalInitTasks()三个函数的调用构成了协 议栈的七大任务列表,其具体实现结果如图3。         进入主循环处理函数以后,始终周期扫描此任务列表,这7个任务由taskID和taskPriority来决定扫描和处理顺序。在循环扫描的过程中,数据 的传输使用直接存取(DMA)控制器进行操作,可以减轻8051CPU核传送数据时的负担,实现CC2430在高效利用电源条件下得高性能,其操作流程如 图4所示。       作为协调器,如果程序使用了串口调试助手,则DMA将上位机的数据按照一个字节波特率加一个字节数据的形式组装到cfg->rxBuf中供其他函数 调用,并且通过回调函数SPIMgr_ProcessZToolData ( uint8 port, uint8 event )将任务的ID和强制事件发送到任务列表中,供主循环处理函数扫描;作为终端节点和路由设备,无法使用串口调试助手,则通过回调函数 SPIMgr_ProcessZAppData ( uint8 port, uint8 event ) 将任务的ID和强制事件发送到任务列表中。当扫描至参数events=1,则进入相应层的处理程序进行任务ID和events的约定比对,完成相应的功 能,具体流程如图5所示。   2.3 组网     利用数据分析仪[3]记录监控协调器与终端设备的组网过程如图6所示。       首先,Zigbee协调器上电以后,不断周期发送空的数据包,在允许的通道内搜索其他的Zigbee协调器,并基于每个允许通道中所检测到的通道能量及网络号,选择惟一的16位PAN ID,建立自己的网络[4]。 一旦一个新网络被建立,Zigbee路由器与终端设备就可以加入到网络中了。而终端设备上电以后,重复发送信标请求,要求加入到最近的网络中。当协调器发 现终端设备发出的信标请求,则响应一个超帧结构,用于设备间的同步,一旦同步成功,则实现图5中的关联过程,由终端设备向协调器发送关联请求,协调器同意 则回应终端设备并自动分配16位的短地址,至此,两者组网成功。     网络形成后,可能会出现网络重叠及PAN ID冲突的现象。协调器可以初始化PAN ID冲突解决程序,改变一个协调器的PAN ID与信道,同时相应修改其所有的子设备。通常,Zigbee设备会将网络中其他节点信息存储在一个非易失性的存储空间——邻居表中。加电后,若子设备曾 加入过网络,则该设备会执行孤儿通知程序来锁定先前加入的网络。接收到孤儿通知的设备检查它的邻居表,并确定设备是否是它的子,若是,设备会通知子设备它 在网络中的位置,否则子设备将作为一个新设备来加入网络。而后,该子设备将产生一个潜在双亲表,并尽量以合适的深度加入到现存的网络中[5]。     通常,设备检测通道能量所花费的时间与每个通道可利用的网络可通过ScanDuration 扫描持续参数来确定,一般设备要花费1 min的时间来执行一个扫描请求,对于Zigbee路由器与终端设备来说,只需要执行一次扫描即可确定加入的网络。而协调器则需要扫描两次,一次采样通道 能量,另一次则用于确定存在的网络。     限于篇幅,本文没有列出各种帧结构以及消息的处理过程,对于Zigbee协议的具体应用即是对数据包的封装与分解,这些分析、学习对于编写上位机软件,开 发通过Zigbee协议与上位机进行交互的轻量级的现场设备,都是有意义的。已经据此以C++开发出用户自定义的上位机程序,实现对传感器数据的监视和现 场采集、数据库入库、趋势图等功能。 参考文献 [1] ZigBee Alliance. ZigBee Document 053474r13 [S]. December 1, 2006 [2] Zheng JianLiang, Lee Myung. A Comprehensive Performance Study of IEEE 802.15.4[M]. IEEE Press Book,2004.  [3] Chipcon, Packet Sniffer for IEEE802. 15. 4 and Zigbee [S]. User Manual. Oslo, Norway, Oct. 2004. [4] KINNEY P. Zigbee Technology :Wireless Control that Simply Works [S] . Zigbee Alliance ,Oct . 2004. [5] Zigbee Alliance. Network Specification (Draft Version 1.0) [S] . 2004.

  • 发表了主题帖: UWB厘米级定位方案的快速入局,让室内定位迎来强劲动能

         随着位置服务产业与移动互联网的结合,异军突起的室内定位方案开始变得无处不在,但是从应用需求来说,只有更高精度的定位信息才能带来更高的价值,比如说提高流程效率、精确的人员与移动物体追踪、利用实时场景做出决策等等。而UWB厘米级定位方案的投入使用,满足了物联网行业领域的高精度室内定位需求。 UWB厘米级定位方案   针对工业/汽车、物流仓储、传统制造业、电力行业、医疗保健、高危化工业、隧道/管廊、建筑工地、公检司法的重点安保区域等高精度人员定位需求,SKYLAB推出了基于UWB技术的定位系统。通过在定位区域内部署UWB定位基站,人员/物资佩戴UWB定位标签,实时精准定位区域内人员/物资的位置信息,平均定位精度在30cm。 UWB定位原理(TDOA)   UWB的定位原理和卫星导航定位原理很相似。UWB的定位原理是通过在室内布置4个已知坐标的UWB定位基站,需要定位的人员或者设备携带定位标签,标签按照一定的频率发射脉冲,不断和四个已知位置的基站进行测距,通过TDOA算法精确的计算定位标签的位置。 (1)每个定位标签以UWB脉冲重复不间断发送数据帧; (2)定位标签发送的UWB脉冲串被定位基站接收; (3)每个定位基站利用高敏度的短脉冲侦测器测量每个定位标签的数据帧到达接收器天线的时间; (4)定位引擎参考标签发送过来的校准数据,确定标签达到不同定位基站之间的时间差,并利用三点定位技术及优化算法来计算标签位置。 (5)采用多基站定位多采用TDOA(Time difference of Arrival)算法。 UWB定位主要应用于室内高精度定位,用于在一定空间范围内获取人或物的位置信息,同时应用于各个领域的室内精确定位和导航,能够满足隧道、监狱、化工、工厂、煤矿、工地、电厂、养老、展馆、整车、机房、机场等高精度室内定位需求。 UWB定位系统框图   SKYLAB推出的UWB定位系统大致分为位置感知层、网络传输层和定位应用层,主要包括:定位引擎服务器、智能终端、POE交换机、UWB定位基站、UWB定位标签、UWB模块、软件接口等。

  • 发表了主题帖: 单片机应用系统硬件设计应该考虑哪些问题?

         (1)存储器扩展:容量需求,在选择时就考虑到单片机的内部存储器资源,如能满足要求就不需要进行扩展,在必须扩展时注意存储器的类型、容量和接口,一般尽量留有余地,并且尽可能减少芯片的数量。选择合适的方法、ROM和RAM的形式,RAM是否要进行掉电保护等。      (2)I/O接口的扩展:单片机应用系统在扩展I/O接口时应从体积、价格、负载能力、功能等几个方面考虑。应根据外部需要扩展电路的数量和所选单片机的内部资源(空闲地址线的数量)选择合适的地址译码方法。       (3)输入通道的设计:输入通道设计包括开关量和模拟输入通道的设计。开关量要考虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信号检测环节(传感器、信号处理电路等)结合起来,应根据系统对速度、精度和价格等要求来选择,同时还需要和传感器等设备的性能相匹配,要考虑传感器类型、传输信号的形式(电流还是电压)、线性化、补偿、光电隔离、信号处理方式等,还应考虑A/D转换器的选择(转换精度、转换速度、结构、功耗等)及相关电路、扩展接口,有时还涉及软件的设计。高精度的模数转换器价格十分昂贵,因而应尽量降低对A/D转换器的要求,能用软件实现的功能尽量用软件来实现。     (4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。开关量要考虑功率、控制方式(继电器、可控硅、三极管等)。模拟量输出要考虑D/A转换器的选择(转换精度、转换速度、结构、功耗等)、输出信号的形式(电流还是电压)、隔离方式、扩展接口等。     (5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警等。输入键盘、开关、拨码盘应考虑类型、个数、参数及相关处理(如按键的去抖处理)。启/停、复位操作要考虑方式(自动、手动)及其切换。显示器要考虑类型(LED,LCD)、显示信息的种类、倍数等。此外还要考虑各种人机界面的扩展接口。     (6)通信电路的设计:单片机应用系统往往作为现场测控设备,常与上位机或同位机构成测控网络,需要其有数据通信的能力,通常设计为RS-232C、RS-485、红外收发等通信标准。     (7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件进行设计,如Protel,OrCAD等。设计印刷电路板需要有很多的技巧和经验,设计好印刷电路板图后应送到专业化制作厂家生产,在生产出来的印刷电路板上安装好元件,则完成和制作。     (8)负载容限的考虑:单片机总线的负载能力是有限的。如MCS-51的P0口的负载能力为4mA,最多驱动8个TTL电路,P1~P3口的负载能力为2mA,最多驱动4个TTL电路。若外接负载较多,则应采取总线驱动的方法提高系统的负载容限。常用驱动器有:单向驱动器74LS244,双向驱动器74LS245等。     (9)信号逻辑电平兼容性的考虑:在所设计的电路中,可能兼有TTL和CMOS器件,也有非标准的信号电平,要设计相应的电平兼容和转换电路。当有RS-232,RS-485接口时,还要实现电平兼容和转换。常用的集成电路有MAX232,MAX485等。     (10)电源系统的配置:单片机应用系统一定需要电源,要考虑电源的组数、输出功率、抗干扰。要熟悉常用三端稳压器(78хх系列、79хх系列)、精密电源(AD580,MC1403,CJ313/336/385,W431)的应用。     (11)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

  • 发表了主题帖: 嵌入式实时操作系统uCOS II的分析

           早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所曰益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的uCOS II。 uCOS II的特点        1.uCOS II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。         2.uCOS II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的是如果数据处理程序简单,这样做就未必合适。因为uCOS II要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。          3.uCOS II和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。uCOS II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,uCOS II把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是uCOS II即支持优先级法又支持时间片轮转法就更合适了。         4.uCOS II对共享资源提供了保护机制。正如上文所提到的,uCOS II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),uCOS II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量,而一旦得到了此信号量,那就只有等使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,例如当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个现象。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以在使用uCOS II时,必须对所开发的系统了解清楚,才能决定对于某种共享资源是否使用信号量。 uCOS II在单片机使用中的一些特点        1.在单片机系统中嵌入uCOS II将增强系统的可靠性,并使得调试程序变得简单。以往传统的单片机开发工作中经常遇到程序跑飞或是陷入死循环。可以用看门狗解决程序跑飞问题,而对于后一种情况,尤其是其中牵扯到复杂数学计算的话,只有设置断点,耗费大量时间来慢慢分析。如果在系统中嵌入 uCOS II的话,事情就简单多了。可以把整个程序分成许多任务,每个任务相对独立,然后在每个任务中设置超时函数,时间用完以后,任务必须交出 CPU的使用权。即使一个任务发生问题,也不会影响其他任务的运行。这样既提高了系统的可靠性,同时也使得调试程序变得容易。        2.在单片机系统中嵌入uCOS II将增加系统的开销。现在所使用的51单片机,一般是指87C51或者89C51,其片内都带有一定的RAM和 ROM。对于一些简单的程序,如果采用传统的编程方法,已经不需要外扩存储器了。如果在其中嵌入uCOS II的话,在只需要使用任务调度、任务切换、信号量处理、延时或超时服务的情况下,也不需要外扩ROM了,但是外扩RAM是必须的。由于uCOS II是可裁减的操作系统,其所需要的RAM大小就取决于操作系统功能的多少。举例来说,μC/OS-II允许用户定义最大任务数。由于每建立一个任务,都要产生一个与之相对应的数据结构TCB,该数据结构要占用很大一部分内存空间。所以在定义最大任务数时,一定要考虑实际情况的需要。如果定得过大,势必会造成不必要的浪费。嵌入uCOS II以后,总的RAM需求可以由如下表达式得出:         RAM总需求=应用程序的RAM需求+内核数据区的RAM需求+(任务栈需求+最大中断嵌套栈需求)·任务数 所幸的是,μC/OS-II可以对每个任务分别定义堆栈空间的大小,开发人员可根据任务的实际需求来进行栈空间的分配。但在RAM容量有限的情况下,还是应该注意一下对大型数组、数据结构和函数的使用,别忘了,函数的形参也是要推入堆栈的。       3.uCOS II的移植也是一件需要值得注意的工作。如果没有现成的移植实例的话,就必须自己来编写移植代码。虽然只需要改动两个文件,但仍需要对相应的微处理器比较熟悉才行,最好参照已有的移植实例。另外,即使有移植实例,在编程前最好也要阅读一下,因为里面牵扯到堆栈操作。在编写中断服务程序时,把寄存器推入堆栈的顺序必须与移植代码中的顺序相对应。       4.和其他一些著名的嵌入式操作系统不同,uCOS II在单片机系统中的启动过程比较简单,不像有些操作系统那样,需要把内核编译成一个映像文件写入ROM中,上电复位后,再从ROM中把文件加载到RAM中去,然后再运行应用程序。uCOS II的内核是和应用程序放在一起编译成一个文件的,使用者只需要把这个文件转换成HEX格式,写入ROM中就可以了,上电后,会像普通的单片机程序一样运行。 结语         由以上介绍可以看出,uCOS II具有免费、使用简单、可靠性高、实时性好等优点,但也有移植困难、缺乏必要的技术支持等缺点,尤其不像商用嵌入式系统那样得到广泛使用和持续的研究更新。但开放性又使得开发人员可以自行裁减和添加所需的功能,在许多应用领域发挥着独特的作用。当然,是否在单片机系统中嵌入uCOS II应视所开发的项目而定,对于一些简单的、低成本

  • 发表了主题帖: SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗

    总线,总线,总要陷进里面。这世界上的信号都一样,但是总线却成千上万,让人头疼。       总的来说,总线有三种:内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。 除了总线外,还有一些接口,它们是多种总线的集合体,或者说来者不拒。 SPI (Serial Peripheral Interface):MOTOROLA公司提出的同步串行总线方式。高速同步串行口。3~4线接口,收发独立、可同步进行。        因其硬件功能强大而被广泛应用。在单片机组成的智能仪器和测控系统中。如果对速度要求不高,采用SPI总线模式是个不错的选择。它可以节省I/O端口,提高外设的数目和系统的性能。标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)。主机输出/从机输入线(MOSI)和片选信号(CS)。有的SPI接口芯片带有中断信号线或没有MOSI。        PI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C (Inter-Integrated Circuit):由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。       I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送。I2C是OD输出的,大部分I2C都是2线的(时钟和数据),一般用来传输控制信号。 I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。 UART:通用异步串行口,按照标准波特率完成双向通讯,速度慢。     UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:        将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。 SPI、I2C和UART做个比较       SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输。       而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART速度比上面两者者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡。 I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频 数据传输而制定的一种总线标准。 I2S则大部分是3线的(除了时钟和数据外,还有一个左右声道的选择信号),I2S主要用来传输音频信号。如STB、DVD、MP3等常用 I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号:1)串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。2)帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。3) 串行数据SDATA,就是用二进制补码表示的音频数据。       有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。 GPIO (General Purpose Input Output 通用输入/输出)或总线扩展器,利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。 当微控制器或芯片组没有足够的I/O端口,或当系统 需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。 GPIO的优点(端口扩展器): 低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。  集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。 小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN! 低成本:您不用为没有使用的功能买单! 快速上市:不需要编写额外的代码、文档,不需要任何维护工作! 灵活的灯光控制:内置多路高分辨率的PWM输出。 可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。 更好的灯光效果:匹配的电流输出确保均匀的显示亮度。 布线简单:仅需使用2条IIC总线或3条SPI总线 SDIO SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。支持 SDIO接口的PDA,笔记本电脑等都可以连接象GPS接收器,Wi-Fi或蓝牙适配器,调制解调器,局域网适配器,条型码读取器,FM无线电,电视接收 器,射频身份认证读取器,或者数码相机等等采用SD标准接口的设备。 SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。  SDIO和SD卡的SPEC间的又一个重要区别是增加了低速标准。SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开支来支持低速I/O能力,低速卡支持类似MODEM,条形扫描仪和GPS接收器等应用。对组合卡来说,全速和4BIT操作对卡内存储器和SDIO部分都是强制要求的。  在非组合卡的SDIO设备里,其最高速度要只有达到25M,而组合卡的最高速度同SD卡的最高速度一样,要高于25M。  CAN CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。 一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。 CAN总线的特点: 1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。  2)网络上的节点可分成不同的优先级,可以满足不同的实时要求。  3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传送数据。  4)可以点对点,一点对多点及全局广播几种传送方式接收数据。 5)直接通信距离最远可达10km(速率4Kbps以下)。 6)通信速率最高可达1MB/s(此时距离最长40m)。

  • 2019-06-17
  • 发表了主题帖: TMS320C6000系列二次Bootloader的设计与实现

            随着DSP(数字信号处理器)系统的广泛应用,其程序规模也随之不断扩大,使用芯片本身自带的Boot-loader通过Flash存储器来引导DSP程序,往往受到程序大小和结构的制约,比如程序很大超过厂商固化boot的范围,再如中断向量表的不同位置对程序boot跳转的影响,等等,因此越来越需要更加灵活的引导方式。   系统上电后,由引导程序将DSP的应用程序从该存储器引导到DSP应用板上的高速存储器(如内部SRAM、SDRAM等)中。由于Flash存储器具有电信号删除功能,且删除速度快,集成度高,因此已成为此种存储器的首选。由于Flash存储器的存取速度较慢,写入Flash存储器的程序将在系统上电时被DSP装载到快速的存储器中运行,这个过程称为Boot loader。不同的DSP有不同的引导方式。以TI公司TMS320C6000系列芯片为例,自举方式有3种:无自举(No Boot),CPU直接开始执行地   址0处的指令;主机自举(Host Boot),系统复位后主机通过CPU的HPI(主程序设计接口)初始化DSP的存储空间;ROM自举(ROM Boot),DMA控制器从CEl空间复制固定长度程序的地址0处,然后从地址0处开始执行。对于620x/670x DMA,复制64 kB数据从CEl到地址0;而对于621x/671x EDMA,复制1 kB数据从CEl地址开始到地址0。   关于TI公司的C6000芯片二次Bootloader在许多文献都介绍过,包括二次Bootloader的PLL、EMIF的设置和搬移表的设置和Flash存储器的烧写过程,但是对于有中断向量表的二次Bootloader实现的文献很少。本文以TI公司高性能DSP的代表作TMS320C6000系列芯片为例,介绍了一种带中断向量表的二次Bootloader的新途径,从而为TMS320C6000系列DSP的开发提供了一种新的思路。该方法在实际中得到具体应用,系统运行稳定可靠。   1 二次Bootload的过程   TMS320C6713是TI公司推出的TMS320C67xx系列浮点DSP中最新的一种芯片。TMS320C6713每周期可以执行8条32位指令;支持32/64位数据;具有最高225 MHz的运行速度和1800 MIPs(百万次运算每秒)或1350 MFLOPS(百万次浮点运算每秒)的处理能力;同时是有强大的外设支持能力;EMIP(外部存储器接口)可以很方便地与SDRAM、SBSRAM、Flash存储器、SRAM等同步和异步存储器相连,16位EHPI接口可以与各种处理器接口;另外,还有优化的多通道缓存串口和多通道音频串口,这些外部接口使设计人员可以很容易实现自己的应用系统。   在选择ROMBoot方式时,RESET由低变高后,C6713的CPU内核处于复位状态,而C6713的其他部分则开始工作,此时EMIF的CEl空间根据ROM Boot的方式自动地配置为8/16/32位异步存储器接口,并且CEl空间读/写时序自动地配置为最大,随后将CEl空间的前1 kB复制到0x0000 0000地址处。通过这1 kB的数据实现对其他程序的引导。对于中断向量表设在0x0000 0000~0x0000 0400处的程序来说,1 kB数据中处包含EMIF设置代码和搬移程序外,必然也包含中断向量表。本文重点叙述带中断向量表的Bootloader的过程,中断向量表起始地址为0x00000000。如果程序长度小于1 kB,那么就不需要二次bootloader,但是往往程序长度都会大于1 kB,所以二次bootloader是必然的过程。   二次Bootloader的实现需要引入EMIF设置和搬移的程序,即编写boot_c671x_2.s62、c6713_emif.s62,lnk2.cmd和boot.cmd3个文件。本文以实现多通道缓冲串口的程序进行说明,实现二次Bootload的过程框图如图1所示。   首先调入调试好的用户程序工程文件MeBSP_test.pjt工程作为例程,然后在此工程文件中引入3个文件。   程序编写好后,要引入3个很重要的文件;EMIF的值定义文件(c6713_emif.s62);关于EMIF的设置和数据搬移的程序(boot_c67lx_2.s62);cmd配置文件(lnk2.cmd)。同时,其原来的mcbsp.cmd文件要去掉。图2做了一个对比。图2(a)为原程序,图2(b)为生成要烧写的数据的程序,图2(b)中加入了3个文件,原有的mcbsp.cmd去掉了。其中boot_c67lx_2.s62是通用的,c6713_emif.s62要根据具体实际的芯片配置EMIF的参数。   其中boot_c671x_2.s62包含了.boot_load的函数,这个函数包含几个过程,如图3所示。c6713_emif.s62文件包括EMIF的几个参数配置。Ink2.cmd文件位COFF的配置。     其次,就是把生成的*.out文件首先使用CCS开发环境自带的工具Hex6x.exe把工程生成的*.out文件转化成hex格式,在DOS环境下指令为>Hex6x.exeboot.cmd。         最后根据Flash存储器芯片的要求把hex文件烧写到Flash存储器中指定的地址即可。本例采用的AM29LV800BB-70ecFlash存储器芯片,采用3.3 V供电,完全兼容JEDEC标准,并支持在系统编程,用户只需向其内部的命令寄存器写入命令序列即可实现部分擦除、全部擦除、数据写人等功能;同时可提供硬件和软件方法来检查Flash存储器的操作执行情况。首先需要对芯片进行擦除全部变为0xFFFF,然后再进行烧写。由于Flash存储器是以16位进行访问的,所以对Flash存储器而言其物理地址以16位为单位进行编址,而程序中使用的逻辑地址是以字节为单位进行编址的,二者之间的关系如下:逻辑地址=物理地址<<1 ,所以程序中有地址偏移。下面给出烧写的程序。     2 带有中断向量表的二次Bootloader的实现   第1节介绍了一般的二次Bootload过程,但当需要boot带中断向量表的程序时,需要仔细考虑3个重要文件的编程,否则将会遇到意想不到的后果。   2.1 配置文件Ink2.cmd   Ink2.cmd有了细微差别,此时有中断向量表,所以在分配时要考虑vectors的分配空间。在配置文件中差异主要在Memory中,section的部分如下:    SECTIONS   MEMORY的差别具体如下:   a) 没有考虑中断向量表配置的部分程序:   b) 考虑中断向量表配置的部分程序:   .vectors为中断向量表,其有0x200的长度的数据,必须放在0x90000000的地址处,.boot_load紧接着放置。   2.2 中断向量表文件vec.asm   还有一个很重要的一点是图2中vec.asm文件的变化。在调试程序时,中断向量表开始会直接跳到c_int00处,但是待烧写的前1 kB数据,首先要进行EMIF设置和搬移过程,所以其指向要发生变化。   vecter.asm部分程序如下:   a) 原程序的vecter.asm部分程序:   b) 产生Bootload数据的程序的vecter.asm部分程序:   以上程序中,程序a)开始是指向c_int00,程序b)为指向_boot,即.boot_load()的人口。这是因为在1 kB的程序复制完成后,程序即开始执行。首先应执行二次boot程序,即入口点_boot,完成二次boot后,再执行正常的初始化C语言环境代码,进而跳转到用户main函数。此时生成的.out的文件,通过hex6x.exe转化成可烧写的数据。   2.3 转换数据的配置文件boot.cmd   通过hex6x.exe可以把boot.out文件转化成boot.hex形式,方便烧写到Flash存储器中。此时Boot.cmd的也要做相应的变化,把中断向量表的程序同.boot_load程序,程序段,数据段一样转化过来。   boot.cmd配置程序如下:   a) 没有考虑中断向量表的boot.cmd配置:   b) 考虑中断向量表boot.cmd配置:   以上程序中len可以根据实际程序的长度进行修改,如果用hex6x.exe boot.cmd进行转化,程序长度过短时,会产生警告提示。此时可以查看map文件,看看程序和数据占用的空间来定len的大小,只要len大于实际的程序长度即可。Romwidth根据所用的Flash存储器的位数来定,如果是8位的就写8,如果是16位的就换成16。以上程序中,程序b)与程序a)不同的是加入了.vectors,使得生成的boot.hex文件中0x0000 0000地址就为vectors的程序。此时生成的*.hex的文件可以烧写到Flash中。   3 结束语   本文以TI公司高性能DSP TMS320C6000系列芯片为例,介绍了从Flash存储器进行引导,带中断向量表的二次Bootloader的新途径,其中对Bootloader的程序需要改写的部分详细叙述了具体的差别,从而为TMS320C6000系列DSP的开发提供了一种新的思路。该方法简单可行,在TI公司提供的文档上,只要稍做修改就可以得到正确的结果,该方法已在实际工程中得到具体应用,系统性能稳定。一般情况下中断向量表的首地址都为0x0000 0000,如果中断向量表没有设在0x0000 0000地址时,要对boot_c671x_2.s62文件中ISTP进行设置,此时vectors就不需要放在1 kB的数据中,而是在1 kB的程序空间中指向vectors的初地址。

  • 发表了主题帖: TMS320C6000嵌入式系统优化编程的分析

           嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式。具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时的和多任务的体系。本文分析了TMS320C6000的硬件设计和指令系统的特点,结合应用开发过程中遇到的问题,对这种高速并行DSP器件开发方法进行了总结。   1 TMS320C6000的硬件设计与指令系统   TMS320C6000系列DSP是TI公司最新推出的一种并行处理的数字信号处理器。它是基于TI的VLIW技术的,其中,TMS320C62xx是定点处理器,TMS320C67xx是浮点处理器。本文主要讨论TMS320C6201。该处理器的工作频率最高可以采用50MHz,经内部4倍频后升至200MHz,每个时钟周期最多可以并行执行8条指令,从而可以实现1600MIPS的定点运算能力,而且完成1024定点FFT的时间只需70μs。   1.1 TMS320C6000的硬件结构   TMS320C6000 CPU的结构图如图1所示。   TMS320C6000的CPU有两个数据通道A和B,每个通道有16个32位字长的寄存器(A0~A15,B0~B15),四个功能单元(L,S,M,D),每个功能单元负责完成一定的算术或者逻辑运行。A、B两通道的寄存器并不是完全共享,只能通过TM320C6000提供的两个交换通道1X、2X,才能实现处理单元从不同通道的寄存器堆那里获取32位字长的操作数。   TMS320C6000的地址线为32位,存储器寻址空间是4G。C6201片内集成有1Mbit SRAM——512Kbit的程序存储器(根据需要可全部配置成Cache)和512Kbit的数据存储器。通过片内的程序存储空间控制器,CPU一次可以取出256bit,即一次最多可以取出8条32位指令。   C6201有32位的外部存储接口EMIF为CPU访问外围设备提供了无缝接口。外围设备可以是同步动态存储器(SDRAM)、同步突发静态存储器(SBSRAM)、静态存储器(SRAM)、只读存储器(ROM),也可以是FIFO寄存器。   DSP器件一般都带有DMA控制器,可以在CPU操作的后台进行数据传输。TMS320C6201的DMA控制器有4个独立的可编程通道,可以同时进行四个不同的DMA操作,每个通道的优先级可以通过编程设定。每个通道可以根据需要传输8/16/32bit的数据,并且DMA控制器可以访问全部32位的地址空间。此外,还有一个辅助通道允许DMA控制器响应主机通过HPI口发来的请求。   1.2 指令系统   C62xx和C67xx共享同一个指令集。C67xx可以使用所有的C62xx指令,但因为C67xx是浮点芯片,怕以C67xx的指令集中有一些指令只能用于浮点运算。TMS320C6201CPU的设计采用了类似于RISC的结构,指令集简单、运算速度快。8个功能单元负责不同功能的运算,指令和功能单元之间存在一个映射关系。其中,L单元有23条指令,M单元有20条指令,S单元29有条指令,D单元有26条指令。   TMS320C6201指令集针对数字信号处理算法提供了一引起特殊指令:为复杂计算提供的40bit的特殊操作的加法运算;有效的溢出处理和归一化处理;简洁的位操作功能等。TMS320C6201中最多可以有8条指令同时并行执行;所有指令均可条件执行。以上所有特点提高了指令的执行效率、减小了代码长度、大大减少了因跳转引起的开销、提高了编码效率。   流水线操作是DSP实现高速度、高效率的关键技术之一。C6000的流水线分为三个阶段:取指、解码、执行、总共11级。和以前的C3x、C54x相比,有非常大的优势,主要表现在:简化了流水线的控制以消除流水线互锁;增加流水线的深度以消除传统流水线结构在取指、数据访问和乘法操作上的瓶颈。其中取指、数据访问分为多个阶段,使得C6000可以高速地访问存储空是。   2 优化编程的几个方法   C6000在设计时采用了一种类RISC机的结构,运算速率特别快,但是指令集却非常简单。象DSP算法中常用的乘加指令、循环操作指令等,在C54x和C3x中两条指令就可以完成的功能,而在C6000中却需要一个循环体,所以它的程序设计一般比较复杂。要想充分发挥C6000的运算能力,必须从它的硬件结构出去,最大限度地利用八个功能单元,使用软件流水线,尽量让程序无冲突的并行执行。   线性汇编语言的指令系统和汇编语言的指令系统完全相同,但是它有自己的汇编优化器指令系统,用于和汇编性汇编语言时不需要考虑指令的延时、寄存器的使用和功能单元的分配,完全可以按照高级语言的方式进行编写。另外计数顺只能使用减计数,如果使用加计数,优化器将不能工作等等。但总的说来,它的代码效率远远高于高级语言,而且开发难度和开发周期比汇编语言要小得多。   在实际开发过程中需要具体情况具体分析,选择一种高效、快捷的开发方法。以下结合应用开发中的几个模块来简述我们使用的优化方法。   2.1 使用汇编语言进行   使用汇编语言进行并行编程难度比较大。但在有些情况下,程序中数据有非常强的承接关系,并且该程序体逻辑关系清楚,使用的寄存器不超过32个,这时直接使用汇编语言实现,效率会更高。另外,有些使用C语言比较难实现的运算函数,在C6000的汇编指令集中可能有专用DSP指令,这时就可以直接使用汇编语言实现。   使用汇编语言进行编程时特别需要注意的是C6000指令的延迟情况,有些指令并不是立刻就能得到结果。C6000指令集中有延迟的指令如表1所示。 表1 C6000的有延迟指令   例1 32位归一化函数morm_1()   short morm_1(long L_var1)   {short var_out;   if (L_var1= = 0L){   var_out = (short)0;   }   else {   if (L_var1= = (logn)0xffffffffL{   var_out = (short)31;   }   else {   if (L_var1< 0L) {   L_var1 = ~L_var1;   }   for(var_out=(short)0;L_var1<(long)0x40000000L;   var_out++){   L_var1 《= 1L;   }}}   return(var_out);   }   使用汇编语言进行优化;   .global norm_1   _norm1:   B B3   CMPEQ 0,A4,B0   [!B0] NORM A4,A4   NOP 3   消耗时间(时钟周期):C语言norm_1()为723;汇编语言为11。   2.2 使用线性汇编语言重写整个函数   对于某些以循环体为主的函数可以使用线性汇编语言重写整个函数。使用汇编优化器进行优化之后,效率是非常高的。   下面例子是算法中计算帧能量的函数,其中包含两个单循环体。进行优化时,首先要确定循环的次数。其次尽量减少数据存取次数。仔细观察C代码,会发现两次循环次数相同。第二个循环要用到第一个循环的结果,因此可以将两个循环合并在一起,这样就避免了在第二个循环中再从存储器中取结果,减少了一半的Load操作。   Long Comp_En(short *Dpnt)   { int i;   long Rez;   short Temp[60];   for (i=0;i<60;i ++) Temp [i] = shr(Dpnt[i],(short) 2);   Rez=(long) 0;   for (i=0; i <60; i ++) Rez=L_mac(Rez,Temp[i],Temp[i]);   return Rez;   }   相应的线性汇编程序如下:   .global _Comp_En ;函数名定义,对c变量前加_   _Comp_En .cproc Dpnt;函数头定义,Dpnt是参数   .reg Rez,Rez1,Rez2,1 ;寄存器定义,不必考虑实际的寄存器分配   .reg t1,t2,x1,c1,m1,m2   zero Rez   zero Rez1   zero Rez2   mv Dpnt,c1   mvk 30,i ;确定循环次数。因为用LDW代替LDH,循五环次数减少一半。   loop1 .trip 30   ldw *c1++,x1   sh1 x1,16,t1   shr t1,2,t1   shr x1,2,t2 ;将两个循环合在一起,又减少了一半的从内存取数据的时间。   smpyh t1,t1,m1   smpyh t2,t2,m2   sadd Rez1,m1,Rez1   sadd Rez2,m2,Rez2   [i] sub i,1,i ;循环计数器从30递减   [i] b loop1   sadd Rez1,Rez2,Rez   .return Rez   .endproc   消耗时间(时钟周期):C语言为32971;线性汇编语言为93。   2.3 使用线性汇编改写复杂函数中的循环体   当函数的逻辑关系复杂,判断、跳转、函数调用情况特别多时,上面方法的效果就会在打折扣。这时可以使用线性汇编将其中的循环部分改写成一个函数,以优化后的函数调用代替环部分,而不是优化整个复杂函数。   高速数字信号处理器件的应用范围越来越广,特别是在移动通信领域中,软件无线电、智能天线等新技术的实都需要强大的实时数字信号处理的支持。TMS320C6000系列DSP完全可以满足此类要求。但目前对于并行DSP技术的软硬件开发还处在摸索阶段,如何充分利用高速DSP的资源,是这方面的研究重点。本文研究了最新推出的TMS320C6000的优化策略,从工程和系统的角度总结出一套既能满足实时性又能保证开发时效性的实用的优化编程方法,以供分飨。

统计信息

已有1217人来访过

  • 芯币:8918
  • 好友:--
  • 主题:2154
  • 回复:695
  • 课时:--
  • 资源:19

留言

你需要登录后才可以留言 登录 | 注册


博浩元电子 2018-10-25
不错,干货
查看全部