
关于gpio的保护电阻问题.doc
2页GPIO保护电阻我没有怎么看过LPC系列的GPIO引脚结构,所以我就从通用的角度来谈一下这个问题,希望能对大家有所启发首先,我不太清除楼主所要谈的到底是上拉电阻还是限流电阻,所以就都谈一下GPIO引脚连接上拉电阻目的主要是为了在信号传输时或者CPU reset期间保持外围电平的稳定性,另外对于集电极或者漏级开路型引脚必须加上拉电阻上拉电阻的大小同系统的功耗和速度有直接关系,功耗的关系大家我想都明白,主要是上拉电阻越大那么外围电路的工作速度越慢,当然我们一般的应用通常不会遇到因为上拉电阻的大小导致速度不够的情况,这仅对工作速度在100MHZ以上电路而言而且,根据我的实践经验,在100MHZ以下电路中,100K以下的电阻通常对速度没有影响GPIO的限流电阻如果GPIO用于开关性控制,比如说连接LED或者光耦又或者连接三极管的基极的时候,通常需要考虑GPIO的最大拉电流或者灌电流能力比较特殊的情况是GPIO引脚输出信号连接到另一个芯片的输入引脚上,有时也要加限流电阻这主要出于以下情况:1)目前我们采用的器件的门电路输出越来越陡峭,从EMC的角度来看,这种输出会导致产品的EMC性能严重下降,所以在采用某些快速器件的时候通常会加小限流电阻来减缓输出信号的建立,平滑边沿,当然单电阻是不能起到这个作用的,和电阻一起起作用的还有器件上的电容,比如说封装电容,引脚输入电容等等,一般来说一个帖片器件的封装电容通常在3-10PF之间,所以RC共同作用下就可以起到有效平滑边沿的作用。
这也就导致了另一个现象,就是我们在采用外围逻辑电路的时候并不是器件越快越好,而是越适合越好实际应用中往往我们会在这方面遇到困难,因为逻辑器件的工艺越来越好,相应的输出边沿建立时间也越来越小,所以处于EMC角度,我们会加限流电阻,其时这时候它起到的作用是减缓逻辑器件信号边沿建立时间的作用2)现在的系统设计中通常会有两种工作电压不同的器件混用的情况,又或者输入信号可能会高于器件工作电压的情况现在一般的器件都具有防静电或者过压的功能,说简单点其时就是在引脚的输入端对电源和对地分别连接一个反向的肖特级二极管把过压控制到工作电压的0.3v摆动范围内,而静电则通过二极管直接被释放到逻辑器件的衬地部分不直接进入逻辑器件中但,这种集成的肖特级二极管的最大流过电流通常只有10-20mA左右(瞬间电流是该值的3-5倍),所以当外围器件可能工作在过压状态的时候需要外加限流电阻使得最大的二极管导通电流小于10mA,需要注意的是虽然逻辑器件输入阻抗很高,但肖特级二极管在该输入引脚的最前端,所以输入阻抗没有对过压部分的限流作用,所以不要产生输入阻抗高为何还要多次一举加限流电阻的误解另外,我有一些朋友问我逻辑器件的输入部分一般不都是三极管结构嘛,而三极管的Vec或者Veb通常不都是在5v左右嘛,也就是说过压不会有什么作用啊,我没有深入研究过这个问题,但需要指出的是我们一般用的普通三极管的封装是独立的所以PN节可以做的比较厚,但逻辑器件集成了几千个甚至几万个三极管类型的器件,他的PN节厚度明显不够,这种输入结构工作的区域是放大和截止区,所以PN节的反向耐压值一般不大,我对于集成电路也不太懂,仅能如此解释了。
3)比较特殊的情况是我们应用可编程逻辑器件或者一种比较陌生的控制器的时候,通常不太确定这种器件的引脚在上电和RESET器件的工作状态,也就是不清楚的知道它在该时刻是输入还是输出或者高阻抗状态,这时需要加限流电阻,保护电路4)跨板连接,这种情况下有些会在输出信号端连接51、或者33、或者75欧姆电阻,这就不仅仅是限流了,更多的是起到阻抗匹配的概念了,主要为了防止信号频率在高频状态下产生的信号反射问题对于限流电阻,我也就知道这么多了,希望能对你有所帮助至于说你连接AD器件的问题,我得意见是如果控制器GPIO和AD器件的工作电压一直的话可以不加限流电阻,如果是严格的EMC产品的话需要考虑信号边沿的建立时间的时候可以加限流电阻,至于是330还是470在这里也仅是一个通常数据,你可以随意选用但,最后多说一句的是如果你的GPIO引出线同AD器件的连接距离超过10cm的话,还是在中间加以总线缓冲器好一点加总线缓冲器的原因不好意思,刚才着急就发了,我补充一下关于加总线缓冲器情况:1、驱动能力不足的时候,一般我们应用的TTL输出信号都会表明自己的驱动能力,如果出现驱动电流不足的情况,需要加2、隔离信号,比如说你有一个信号需要同时提供给两个外设使用,但还不想让这两个信号之间有互扰,那么就可以采用缓冲器的方式。
3、总线连接的两个芯片电压不同,比如说3.3V和5v系统的连接,而你的3.3V芯片又不具备5v的信号输入容限,这时候就需要利用可以承受5v信号输入的缓冲器来完成信号的电平变换4、总线信号频率很高,这里有个概念信号频率一般我们会从其频率特性上判断,比如说1MHZ以下算是低频,100MHZ以上算是高频,但随着新器件的出现,这些器件在信号建立的边沿部分很陡峭,有些都达到了3、4ns这个量级,这时候同样要按高频信号的方式来处理问题在通常的嵌入式系统领域中,具有外部开放总线的芯片的总线频率是比较高的,比如说我们用XSCALE PXA系列或者ARM9200这类具有开放型总线的芯片,那么通常总线上需要外加的不仅仅是单一的一个外设,这时候往往将FLASH和SDRAM这样的芯片直接放置在芯片总线上,而将其他的外设连接利用总线缓冲器的方式这主要出于以下考虑:1)总线隔离,即非核心系统部分同核心系统部分之间没有直接连接2)增加总线驱动能力3)消除在高频情况下,由于输出端和输入端阻抗不匹配所导致的信号反射回波问题4)消除由于数据总线和地址总线多根信号线布线长度不一致导致的信号传输时间的差异问题 我说的如果信号线(特指数据地址总线)长度超过10cm以上需要考虑加总线驱动就是基于以上理论的,关于10cm我是从一篇文章上看到的,我也没有严格遵守这条原则来布线,不过通常如果我的外部总线同器件之间的连接距离超过15cm以上而且总线频率高于10MHZ时,我是一定会加总线驱动器的。
关于总线驱动器的添加问题,我没有解释清除,我现在把我知道的关于缓冲的知识基本上都讲了,希望能对大家有所帮助其他的希望别人来补充吧,我觉得很多时候知识在讨论中才能更好的理解。
