关于ADC10与低功耗的问题
msp430G2系列
手册中写道:
WhenREFON=1,but no conversionis active,the bufferis automatically disabled and automatically
re-enabled when needed.When the bufferis disabled,it consumes no current.In this case,the band-gap
voltage sourcere mains enabled.
请问在框图中是通过哪里控制的呢?
When REFOUT=1,the REFBURST bit controls the operation of the internal reference buffer.WhenREFBURST=0,the buffer will be oncontinuously,allowing the reference voltage to be present outsidethe device continuously.When REFBURST=1,the bufferis automatically disabled when the ADC10 isnot actively converting,and automatically re-enabled when needed.
请问REFBURST 是否只对输出有影响?对buffer无影响?前一段是否有个条件就是 REFOUT不等于1或者 REFOUT=1但是
REFBURST=1?
自带的时钟振荡器稳定时间是多少?也就是核心的建立时间tADC10ON一般为100ns?
REF的稳定时间在低功耗设计时如何考虑?长了不好,短了不行,用什么计时?
The ADC10is designed for low power applications.When the ADC10 is not actively converting,the core isautomatically disabled and automatically re-enabled when needed.The ADC10OSC is also automaticallyenabled when needed and disabled when not needed.When the core or oscillatoris disabled,itconsumes no current.这个和ADC10ON控制位是什么关系?还有ADC10ON内置的振荡器不如果不用用其它时钟源是否能减低
功耗?手册中没有内置振荡器的功耗数据。
ADC10的功耗和时钟源频率的高低在低功耗要求下如何权衡?
对于如果考虑到尽量减低功耗,msp430需要在哪些方面注意到?有没有详细的考虑到各种情况的指导手册?官方有个中文
视频,讲到了低功耗的注意事项,感觉太短了,也许应该考虑的都讲到了,其它的没有必要考虑,但是作为初学者,即使
不用考虑,有时候还是有疑问需要给个确定的回答。例如,定时器本身也有没有功耗?和频率有没有关系?其它的模块呢
?
能不能就低功耗问题给点参考?谢谢!
Jason Guo:
研究的很细致啊。
一个问题一个问题的回答
Jason Guo:
手册中写道:
WhenREFON=1,but no conversionis active,the bufferis automatically disabled and automatically
re-enabled when needed.When the bufferis disabled,it consumes no current.In this case,the band-gap
voltage sourcere mains enabled.
请问在框图中是通过哪里控制的呢?
A : REF的buffer自动控制逻辑没有画出来,所以图上看不到。
Jason Guo:
When REFOUT=1,the REFBURST bit controls the operation of the internal reference buffer.When
REFBURST=0,the buffer will be oncontinuously,allowing the reference voltage to be present outside
the device continuously.When REFBURST=1,the bufferis automatically disabled when the ADC10 is
not actively converting,and automatically re-enabled when needed.
请问REFBURST 是否只对输出有影响?对buffer无影响?前一段是否有个条件就是 REFOUT不等于1或者 REFOUT=1但是
REFBURST=1?
A:
当REFOUT==0时,buffer纯粹自动控制,自动开启自动关闭
当REFOUT==1时,buffer是否自动控制要看REFBURST位,如果为1,那就自动控制开关,也就是说,在非ADC转换期间,对应引脚是没有REF电压的。如果为0,buffer就一直开着,引脚上会一直有电压。
Jason Guo:
回复 Jason Guo:
自带的时钟振荡器稳定时间是多少?也就是核心的建立时间tADC10ON一般为100ns?
REF的稳定时间在低功耗设计时如何考虑?长了不好,短了不行,用什么计时?
A:ADC10OSC是ADC的专用时钟,典型值是5M,也是系统自动控制的。它的稳定时间没有给出来,我觉得应该是包含在100nS之内了。
REF的稳定时间就长多了,具体请参考对应的D/S. 有一个值是30uS。所以用到内部的REF,至少要等30uS。时间长了到无所谓,只不过要牺牲功耗。
这30uS可以用Timer来定时,例如下面的例程
ADC10CTL1 = CONSEQ_2+INCH_5; // Repeat single channel
ADC10CTL0 = REFOUT + REFON + MSC + ADC10ON+REF2_5V+SREF_1+ADC10IE;//+ADC10SHT_3;
__enable_interrupt(); // Enable interrupts.
TACCR0 = 30; // Delay to allow Ref to settle
TACCTL0 |= CCIE; // Compare-mode interrupt.
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
LPM0; // Wait for delay.
TACCTL0 &= ~CCIE; // Disable timer Interrupt
ADC10AE0 |= BIT5+BIT4; // P1.4&P1.5 ADC option select
#pragma vector=TIMER0_A0_VECTOR
__interrupt void ta0_isr(void)
{
TACTL = 0;
LPM0_EXIT; // Exit LPM0 on return
}
当然也可以软件延时来做。
Jason Guo:
The ADC10is designed for low power applications.When the ADC10 is not actively converting,the core is automatically disabled and automatically re-enabled when needed.The ADC10OSC is also automatically enabled when needed and disabled when not needed.When the core or oscillatoris disabled,it consumes no current.这个和ADC10ON控制位是什么关系?还有ADC10ON内置的振荡器不如果不用用其它时钟源是否能减低功耗?手册中没有内置振荡器的功耗数据。ADC10的功耗和时钟源频率的高低在低功耗要求下如何权衡?
A:ADC10对内核,时钟以及REF的控制是自动的,对用户来讲,我觉得是透明的。当用户把ADC10ON设成1后,并不意味着S/H,converter,时钟等都开始运行了。只有当用户发出开始转换(ADC10SC+ENC)的命令之后,ADC10才会依次开始采样(S/H),转换,数据搬运(DTC)。期间的时钟,REF buffer都只有在用到时才开启,用完后自动关闭。
也可以用其他的时钟源来代替ADC10OSC,但是用比较慢得时钟,可能使转换时间拉长(比如converting的时候需要13个ADC clock),不一定能带来低功耗的结果。这个问题就需要仔细去权衡了。ADC10OSC的功耗已经包含在IADC10这个指标中了
ADC10功耗和时钟源的关系没有仔细研究过,我觉得这个和主频与功耗的有点类似。主频降低了但是处理同样的任务时间就会加长。所以最终结果要全面来看。
我的建议其实是推荐用默认时钟ADC10OSC,因为ADC10OSC完全可由芯片自动控制,换了其他时钟可能会和低功耗模式相互牵连,反而麻烦。另外,其它的时钟未必会比内置时钟稳定性好,在做各种稳定性,抗干扰实验时是一个隐患。
Fuchong Wang:
回复 Jason Guo:
十分感谢!您回答得也很细致!
我也有点过份像钻牛角尖一样,其实从宏观考虑,在一定的应用需求下,不一定要那么穷尽那么一点功耗,有的地方还没有执行指令的消耗大吧,我只是想弄明白点。还有些枝节小问题,不影响考虑问题,有些猜可能也能猜出来可能应该是怎么回事。有时间需要的话我再另外开帖询问。不知道确定解决问题也是对阁下的一种尊重和感谢,所以我点击确定解答了问题,因为事实上也确实详细解决了我的提问,其它小问题是因为我没有问到。
如果作为一个用户和入门者可以随便表达意见的话,我对此问题的解答表示十分非常满意!
作为入门初学者,有些问题可能有点鲁莽甚至幼稚,可能是有点没有看完所有的资料有点急躁想早点知道答案或者能力所致,不过像阁下一样解答问题肯定也是在百忙之中不吝赐教,时间肯定是比我们这样的宝贵呀。所以再次表示感谢!