This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR5992:ADC功耗大于预期值

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430FR5992, MSP430FR5869, MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/636686/ccs-msp430fr5992-adc-power-dissipation-is-larger-than-expected

部件号:MSP430FR5992
主题中讨论的其他部件: MSP430FR5869MSP430FR5994

工具/软件:Code Composer Studio

尊敬的团队:

  我的客户使用MSP430FR5992作为其故障指示器的MCU。 但功耗不能降低。 他们发现,当进入LPM3时,功率消耗小于1uA,没有 任何外设。 当他们打开DMA但关闭AD时,功率消耗仅为20uA。 一旦开始转换AD,功耗就会超过130uA。 它们还按以下方式测试两种情况: 选择AD时钟源ACLK时,功耗小于61uA;选择AD时钟源 MODOSC时,功耗大于130uA。  

配置代码如下所示:

		ADC12CTL0 &=~(ADC12SC);	
		ADC12CTL0 &=~(ADC12ENC);//使能清零	
		ADC12CTL0 = ADC12SHT0_2 | ADC12ON;// 0010b = 16 ADC12CLK周期
		ADC12CTL1 = ADC12SHP + ADC12SHT0_2;ADC12SC0和ADC12SC1= 1;ADC12SC1CADSC1_
		

		//交流电压采样 

您能否为我提供一些降低功耗的建议?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将在数据表的表5-23中发现,当MODCLK为ADC12提供源时,此功耗与预期相同。 仅MODOSC需要25 uA才能运行。 您可以将ADC12PWRMD位设置为节电,改为使用ACLK,或每秒采集较少的ADC12样本。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Ryan:
    感谢您的回复,使用ACLK时功耗会下降。 但是,设置ADC12PWRMD会使AD处于低功耗模式,看起来功耗没有变化。 但与Msp430FR5869中使用的配置代码相同,功耗仅为60 uA,我没有发现在使用方法的AD中Msp430FR5869和MSP430FR5992之间的差异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您当前的测量值是否作为一段时间内的平均值? MSP430FR5869在活动模式和LPM3中提供了更低的功耗数字,这在比较两个数据表时就可以看到。 您还应确保没有任何模块请求SMCLK,这将导致只输入LPM1,如Family User's Guide (家庭用户指南)的表1-3所示。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    //配置ADC12
    ADC12CTL0 = ADC12SHT0_2 | ADC12ON; //采样时间,S&H=16,ADC12打开
    
    ADC12CTL1 = ADC12SHP + ADC12SHS_1 + ADC12CONSEQ_3; //使用采样计时器,将TA0CCR1输出用作触发器,重复通道序列
    
    ADC12CTL2 || ADC12RES_2 + ADC12PWRMD;// 12位转换结果,低功耗模式
    
    ADC12MCTL0 |= ADC12INCH_2; // A2 ADC输入选择;Vref=AVCC
    ADC12MCTL1 = ADC12INCH_4 + ADC12EOS; // ref+=AVcc,通道= A4
    
    
    
    ADC12CTL0 |= ADC12ENC | ADC12SC;//开始采样/转换
    
    
    	DMACTL0 = DMMA0TSEL_26 + DMA1TSEL_26; // ADC12转换结束触发
    	//配置DMA通道0
    	__data16_write_addr ((unsigned short)&DMA0SA,(unsigned long)&(ADC12MEM0));
    	//源块地址
    	__data16_write_addr (unsigned short)&DMA0DA,(unsigned long)&(ADC_Data1);
    
    //配置DMA通道1
    __data16_write_addr ((unsigned short)&DMA1SA,(unsigned long)&(ADC12MEM1));
    //源块地址
    __data16_write_addr ((unsigned short)&DMA1DA,(unsigned long)&(ADC_Data2));
    
    	//目标地址
    	DMA0SZ =20; //块大小
    	DMA0CTL = DMADT_4 | DMADSTINCR_3 | DMAIE;// Rpt,inc
    	DMA0CTL || DMAEN; //启用DMA0
    
    //目标地址
    DMA1SZ = 20; //块大小
    DMA1CTL = DMADT_4 | DMADSTINCR_3 | DMAIE;//报表,inc
    DMA1CTL |= DMAEN; //启用DMA0
    
    同时(1)
    {
    
    
    __bis_sr_register(LPM3_bits | GIE);// LPM0,ADC12_ISR将强制退出
    __no_operation(); //用于调试器
    P1OUT ^= BIT3; //触发
    器// __delay_cycles(80万);			// 100ms 8MHz
    
    }
    
    
    }
    
    
    #pragma vector=DMA_vector
    __interrupt void DMA_ISR(void)
    {
    SWITCH(__EVEN_IN_RANGE(DMAIV,16))
    {
    案例0:中断;
    案例2: // DMA0IFG = DMA通道0
    __no_operation();
    __BIC_SR_REGISTER_ON_EXIT (LPM3_bits);
    中断;
    案例4:中断; // DMA1IFG = DMA通道1
    案例6:中断; // DMA2IFG = DMA通道2
    案例8:中断; // DMA3IFG = DMA通道3
    案例10:中断; // DMA4IFG = DMA通道4
    案例12:中断; // DMA5IFG = DMA通道5
    判例14:中断; // DMA6IFG = DMA通道6
    判例16:中断; // DMA7IFG = DMA通道7
    默认值:break;
    }
    }
    
    

    尊敬的 Ryan:

       感谢您的回复,我们将编写一 个新的演示,只需使用ADC&DMA模块,但 FR5869和FR5992的功耗有所不同。

    Fr5869仅为32uA,FR5992大于132uA。 ADC低功耗功能中的两个器件之间存在差异,我们在数据表中找不到差异。能否给我一些建议?

    非常感谢。

    代码如下所示:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请将所有未使用的端口引脚初始化为低输出,漏电流可能是两个器件之间差异的原因,因为MSP430FR5992比MSP430FR5869多了几个GPIO。 这还可以提高FR5869的功耗。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Ryan:
    我们已将所有未使用的端口引脚初始化为输出低电平,但电流不会下降。 还有其他原因吗? 或者您是否检测到FR5992的双通道ADC功耗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是硬件问题,具体取决于主板设计之间的差异。 您是否能够在TI生产的EVM上测试您的代码?
    如果将msp430fr599x_ADC12_11.c或msp430fr599x_lpm3/[02/03].c示例加载到设备中,您的当前功耗是多少?

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Ryan:
    我们还没有EVM板,但我们测试了单通道ADC,电流消耗仅为23.6uA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是您所需的ADC设置吗? 在添加DMA之前,使用完整的ADC设置测量电流消耗,以查看哪个模块导致最大功率增加。 DMA实现是否按预期工作并产生正确的结果?

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    全部,

    我看到您正在使用DMA + ADC并从MSP430FR5869移植到MSP430FR5992。 我希望大家都知道,由于MSP430FR5869出现ADC43错误,而MSP430FR5994上已修复此错误,因此不应在这两个部件之间使用完全相同的DMA + ADC代码。 错误的性质意味着ADC + DMA触发在受影响的部件上的工作方式与在其固定的部件上的工作方式不同。 在FR5869上,DMA将在每次ADC转换后按通道模式顺序触发(ADC12CTL1.CONSEQ = 3,我看到您在使用它)。 但是,在修正了此错误的MSP430FR5992上,DMA将仅在转换序列结束时触发(按最初的预期)。

    这意味着您需要在这两个设备上以不同的方式设置DMA -请检查FR5992上的DMA行为,以查看您的软件移植是否正确考虑了这一点。

    此致,
    Katie