某工控设备开发厂商的设备中采用单片机控制电路,单片机使用外接的两脚晶体振荡器产生11.0592MHz的工作时钟。用户希望能够精确测量工作时钟的频率,但用示波器测量时一方面测不准,另一方面测量时还会出现晶体停振的情况,对于这种晶体的频率测量有没有好的办法呢?
在分析晶体停振原因前,先要了解不同振荡器的区别。一般来说,晶体振荡器分为无源晶振和有源晶振两种类型。
无源晶振一般称为crystal(晶体),由石英晶体按照特定角度和尺寸切割而成,其本身相当于一个高Q值得选频电路,需要借助外部谐振和反相器提供能量才能起振。
而有源晶振则叫做oscillator(振荡器),其内部除了晶体以外,还包含了起振和驱动电路。下图是有源晶振的结构原理,可见其内部包含了谐振和输出端(Fout)的驱动电路。有源晶振由于驱动能力强,通常不会在测量中造成停振,会造成停振的通常都是晶体。
出于成本的考虑,很多单片机采用类似下面的晶体谐振电路,通过晶体和并联的起振电容振荡出需要的工作频率。一般示波器标配的无源探头的寄生电容会在10~15pf左右,这样在测量时探头的电容并在谐振回路上会改变原振荡电路的电容值从而造成晶体停振。
对这种没有经过驱动的晶体振荡器的频率测量有没有好的方法呢?答案是当然有,但一方面要减小探头的负载,另一方面要能实现准确的频率测量。
一般无源探头的寄生电容都比较大,为了减小寄生电容,可以使用有源探头,有源探头的寄生电容通常在2pf以下,对于被测电路的影响比较小。另外,一般示波器都是基于周期测量结果反算频率,测量误差比较大,频率计测量频率是最精确的,但是又没有办法直接连接示波器的有源探头,所以最好使用内置频率计功能的示波器。
以下是进行晶体频率测量时建议的测试步骤:
1、选择寄生电容较小的有源探头。由于用户要测试的信号频率不高,选择1GHz左右带宽的有源探头就足够用了,以下是两款典型的单端有源探头的主要指标,其寄生电容只有1pf左右。
2、选择有内置频率计功能的示波器。有些示波器内置的频率计分辨率可以达到5位,连接外部10MHz的参考时分辨率可以达到7位。为了提高测量精度,可以从其它比较精准的信号发生器、铷钟或者频率计上引一个10MHz的参考信号送到示波器的外参考时钟输入端,并设置示波器使用外部参考时钟。
3、通过示波器探头连接被测信号,并在示波器上开启频率计数的测量功能。下图是用一款带内置频率计功能的示波器配合有源探头对晶体振荡器频率的测量结果,可以看到,这种方法可以提供到ppm级别的测量分辨率(具体精度取决于外参考时钟的频率精度),并且避免了由于探头寄生电容对于被测电路的影响。
一、定义:
1、上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!下拉同理
2、上拉是对器件注入电流,下拉是输出电流
3、弱强只是上拉电阻的阻值不同,没有什么严格区分
4、对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
二、拉电阻作用:
1、一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
2、数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定!
3、一般说的是I/O端口,有的可以设置,有的不可以设置,有的是内置,有的是需要外接,I/O端口的输出类似与一个三极管的C,当C接通过一个电阻和电源连接在一起的时候,该电阻成为上C拉电阻,也就是说,如果该端口正常时为高电平,C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平,其作用主要是确保某端口常态时有确定电平:用法示例:当一个接有上拉电阻的端口设为输入状态时,他的常态就为高电平,用于检测低电平的输入。
4、上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流,下拉电阻是用来吸收电流的,也就是我们通常所说的灌电流。
5、接电阻就是为了防止输入端悬空。
6、减弱外部电流对芯片产生的干扰。
7、保护cmos内的保护二极管,一般电流不大于10mA。
8、通过上拉或下拉来增加或减小驱动电流。
9、改变电平的电位,常用在TTL-CMOS匹配。
10、在引脚悬空时有确定的状态。
11、增加高电平输出时的驱动能力。
12、为OC门提供电流。
三、上拉电阻应用原则:
1、当TTL电路驱动COMS电路时,若TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平值。注:此时上拉电阻连接的电压值应不低于CMOS电路的最低高电压,同时又要考虑TTL电路方电流(如某端口最大输入或输出电流)的影响。
2、OC门电路必须加上拉电阻,才能使用。
3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
6、提高总线的抗电磁干扰能力,管脚悬空就比较容易接受外界的电磁干扰。
7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
8、在数字电路中不用的输入脚都要接固定电平,通过1k电阻接高电平或接地。
四、上拉电阻阻值选择原则:
1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。
2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
3、对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在1k到10k之间选取。对下拉电阻也有类似道理。
对上拉电阻和下拉电阻的选择应结合开关管特性和下级电路的输入特性进行设定,主要需要考虑以下几个因素:
1、驱动能力与功耗的平衡。以上拉电阻为例,一般地说,上拉电阻越小,驱动能力越强,
但功耗越大,设计是应注意两者之间的均衡。
2、下级电路的驱动需求。同样以上拉电阻为例,当输出高电平时,开关管断开,上拉电阻
应适当选择以能够向下级电路提供足够的电流。
3、高低电平的设定。不同电路的高低电平的门槛电平会有不同,电阻应适当设定以确保能
输出正确的电平。以上拉电阻为例,当输出低电平时,开关管导通,上拉电阻和开关管导通电阻分压值应确保在零电平门槛之下。
4、频率特性。以上拉电阻为例,上拉电阻和开关管漏源级之间的电容和下级电路之间的输入电容会形成RC延迟,电阻越大,延迟越大。上拉电阻的设定应考虑电路在这方面的需求。
在集成电路中,吸电流、拉电流输出和灌电流输出是一个很重要的概念。拉电流:拉即泄,主动输出电流,是从输出口输出电流。
关于电阻的参数不能一概而定,要看电路其他参数而定,比如通常用在输入脚上的上拉电阻如果是为了抬高峰峰值,就要参考该引脚的内阻来定电阻值的!
1、一般LED的电流有几个mA就够了,最大不超过20mA,根据这个你就应该可以算出上拉电阻值来了。(5-0.7)/20mA=200ohm,差不多吧,保险起见考虑到功耗问题就用1~2k左右的电阻较为合适以上4图表示的是上拉电阻从220欧到5.1K欧的LED亮度变化,当然实际还是有出入的,我们实验室开发板10K的电阻依然把LED点的很亮~(当然根据我们的计算电阻最小不要小于200欧姆,否则电流太大)
2、对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个1~4.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k~500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的。
3、对于驱动晶体管,又分为PNP和NPN管两种情况:
a、对于NPN:毫无疑问NPN管是高电平有效的,因此上拉电阻的阻值用2K~20K之间的。具体的大小还要看晶体管的集电极接的是什么负载,对于LED类负载,由于发管电流很小,因此上拉电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K的。
b、对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻值用100K以上的就行了,且管子的基极必须串接一个1~10K的电阻,阻值的大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。
4、对于驱动TTL集成电路,上拉电阻的阻值要用1~10K之间的,有时候电阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路,上拉电阻的阻值就可以用的很大,一般不小于20K,通常用100K的,实际上对于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。
5、关于I2C的上拉电阻:因为I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉。上拉电阻的取值和I2C总线的频率有关,工作在standard mode时,其典型值为10K。在FAST mode时,为减少时钟上升时间,满足上升时间的要求,一般为1K。电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响。总之一般情况下电压在5V时选4.7K左右,3.3V在3.3K左右.这样可加大驱动能力和加速边沿的翻转
I2C上拉电阻确定有一个计算公式:
Rmin={Vdd(min)-o.4V}/3mA
Rmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHz
C是Bus capacitance
五、下面通过场效应管的漏极开路门电路的例子简单说明一下上拉电阻:
TTL电平标准:
输出 L: <0.8V ; H:>2.4V。
输入 L: <1.2V ; H:>2.0V。
CMOS电平标准:
输出 L: <0.1*Vcc ; H:>0.9*Vcc。
输入 L: <0.3*Vcc ; H:>0.7*Vcc。
注:管子导通或截止可以理解为单片机的软件对端口置1或0.
(1)如果没有上拉电阻(10k),将5V电源直接与场效应管相连。
当管子导通时,管子等效一电阻,大小为1k左右,因此5v电压全部加在此等效电阻上,输出端Vout=5v。
当管子截止时,管子等效电阻很高,可以理解为无穷大,因此5v的电压也全部加在此等效电阻上,Vout=5v。在这两种情况下,输出都为高电平,没有低电平。
(2)如果有上拉电阻(10k),将5v电源通过此上拉电阻与与场效应管相连。
当管子导通时,管子等效一电阻,大小为1k左右,与上拉电阻串联,输出端电压为加在此等效电阻上的电压,其大小为Vout = 5v * 管子等效电阻/(上拉电阻+管子等效电阻)=5v * 1/(10+1)=低电平。
当管子截止时,管子等效电阻很高,可以理解为无穷大,其与上拉电阻串联,输出端电压为加在此等效电阻上的电压,其大小为Vout = 5v * 管子等效电阻/(上拉电阻+管子等效电阻)=5v*无穷大/(无穷大+1)=高电平。
在前极输出高电平时,Vout输出电流,U为高电平。有两种情况:
A、当I0 >= I1 + I2
这种情况下,RL1和RL2两个负载不会通过R取电流,因此对R阻值大小要求不高,通常4.7 KΩ
B、当I0 < I1 + I2
I0 +I= I1 + I2
U=VCC-IR
U>=VHmin
由以上三式计算得出,R<=(VCC- VHmin)/I
其中,I0、I1、I2都是可以从datasheet查到的,I就可以求出来,VHmin也是可以查到的。
当前极Vout输出低电平时,各管脚均为灌电流,则:
I’= I1’ + I2’ +I0’
U’ =VCC-I’ R
U’ <=VLmax
以上三式可以得出:R>=(VCC- VLmax)/I’
由以上二式计算出R的上限值和下限值,从中取一个较靠近中间状态的值即可。注意,如果负载的个数大小不定的话,要按照最坏的情况计算,上限值要按负载最多的时候计算,下限值要按负载最少的计算。
另一种选择方式是基于功耗的考虑。根据电路实际应用时,输出信号状态的频率或时间比选择。若信号Vout长期处于低电平,宜选择下拉电阻;若长期处于高电平,宜选择上拉电阻。为的是静态电流小。
六、灌电流
灌电流:灌即充,被动输入电流,是从输出端口流入吸电流:
吸则是主动吸入电流,是从输入端口流入吸电流和灌电流就是从芯片外电路通过引脚流入芯片内的电流,区别在于吸收电流是主动的,从芯片输入端流入的叫吸收电流。灌入电流是被动的,从输出端流入的叫灌入电流。拉电流是数字电路输出高电平给负载提供的输出电流,灌电流时输出低电平是外部给数字电路的输入电流,它们实际就是输入、输出电流能力。
吸收电流是对输入端(输入端吸入)而言的;而拉电流(输出端流出)和灌电流(输出端被灌入)是相对输出端而言的。