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.

MSP430FR5969: ADC单次采样,通道A3和A12功耗问题

Part Number: MSP430FR5969

mcu进入LMP3低功耗,使用adc的A12通道比比A3通过功耗高十几个微安。理论上功耗不是一样的吗?

  • 使用adc的A12通道比比A3通过功耗高十几个微安

    ADC采样的话,是从选择的最高通道一直采集到A0,如A12的话,是从A12-A0

    A3的话,是从A3-A0

  • 如果我在12通道的时候设置了ADC12EOS是否会在12通道直接结束采样

  • ADC12EOS

    序列结束。指示序列中的最后一次转换。仅当 ADC12ENC = 0 时可以修改

    如果我在12通道的时候设置了ADC12EOS是否会在12通道直接结束采样

    应该是可以的

  • 测试发现A12加了ADC12EOS和A3通道加上ADC12EOS,功耗还是多了十几个微安

  • 能否给出您的程序?

  • A12的初始化

    {
    while(ADC12CTL1&ADC12BUSY); /* 等待采样结束 */
    /* 初始化AD引脚 */
    P1SEL0 |= P1_AD_I|P3_AD_U|P1_VEREF;/*模拟*/
    P1SEL1 |= P1_AD_I|P3_AD_U|P1_VEREF;


    P4SEL0 |= P4_AD_CAP_C|P4_AD_BAT;/*模拟*/
    P4SEL1 |= P4_AD_CAP_C|P4_AD_BAT;

    REFCTL0 |= REFVSEL_0; // Enable internal 1.2V reference
    REFCTL0 &= ~REFON;
    /* 初始化AD数据 */
    ADC12CTL1 |= ADC12CONSEQ_0;
    ADC12CTL0 &= ~ADC12ENC;


    ADC12CTL0 &=~ADC12ENC;/*取消允许转换下面目的要设置*/

    ADC12CTL1 = ADC12SHP/*使用采样和脉冲保持模式*/\
    |ADC12CONSEQ_1 /*使用多通道单次采样功能*/
    |ADC12SHS_0
    |ADC12SSEL_0;

    ADC12CTL2 = ADC12RES_2;/*12位转换结果*/

    ADC12CTL3 = ADC12CSTARTADD_0;/*MEM0开始ADC12TCMAP内部温度采集使能*/

    ADC12MCTL0 = ADC12VRSEL_4/*选择V+=verev=2.5V作为参考 V-=Vss*/\
    |ADC12INCH_12/*选择A2通道->电场通道1->ADC12MEM0*/\
    |ADC12EOS;


    // ADC12MCTL1 = ADC12VRSEL_4|ADC12INCH_1; /* 参考电源采样 */

    // ADC12MCTL2 = ADC12VRSEL_4/*选择V+=verev=2.5V作为参考 V-=Vss*/\
    // |ADC12INCH_2/*选择A11通道->电场采样1->ADC12MEM6*/;
    //
    ADC12CTL0 = ADC12ON/*模块使能*/
    |ADC12MSC
    |ADC12ENC
    |ADC12SHT1_1
    |ADC12SHT0_1;/*多通道采样*/

    }

    A3通道

    {
    while(ADC12CTL1&ADC12BUSY); /* 等待采样结束 */
    /* 初始化AD引脚 */
    P1SEL0 |= P1_AD_I|P1_AD_U|P1_VEREF;/*模拟*/
    P1SEL1 |= P1_AD_I|P1_AD_U|P1_VEREF;


    P4SEL0 |= P4_AD_CAP_C|P4_AD_BAT;/*模拟*/
    P4SEL1 |= P4_AD_CAP_C|P4_AD_BAT;

    REFCTL0 |= REFVSEL_0; // Enable internal 1.2V reference
    REFCTL0 &= ~REFON;
    /* 初始化AD数据 */
    ADC12CTL1 |= ADC12CONSEQ_0;
    ADC12CTL0 &= ~ADC12ENC;


    ADC12CTL0 &=~ADC12ENC;/*取消允许转换下面目的要设置*/

    ADC12CTL1 = ADC12SHP/*使用采样和脉冲保持模式*/\
    |ADC12CONSEQ_1 /*使用多通道单次采样功能*/
    |ADC12SHS_0
    |ADC12SSEL_0;

    ADC12CTL2 = ADC12RES_2;/*12位转换结果*/

    ADC12CTL3 = ADC12CSTARTADD_0;/*MEM0开始*/

    ADC12MCTL0 = ADC12VRSEL_4/*选择V+=verev=2.5V作为参考 V-=Vss*/\
    |ADC12INCH_3
    |ADC12EOS/*选择A2通道->电流通道1->ADC12MEM0*/;

    ADC12MCTL1 = ADC12VRSEL_4|ADC12INCH_1; /* 参考电源采样 */

    ADC12MCTL2 = ADC12VRSEL_4/*选择V+=verev=2.5V作为参考 V-=Vss*/\
    |ADC12INCH_2/*选择A11通道->电场采样1->ADC12MEM6*/;

    ADC12CTL0 = ADC12ON/*模块使能*/
    |ADC12MSC
    |ADC12ENC
    |ADC12SHT0_1;/*多通道采样*/

    }

  • 谢谢您的反馈。我会在确认后给您回复

  • 我看了一下代码,并没有进入LPM3的配置。

    请问不同通道的实际电流多大,是否符合我们的datasheet。

    请问你们有这个问题是因为想优化功耗?

  • 是要优化功耗,我在主函数中会进入LPM3低功耗模式,低功耗模式是已经进入了,不然不可能功能那么低。现在主要问题是不同通道功耗不同,即使在A12中加了停止还是不行,功耗还是比A3大十几个微安

  • 那不同通道在LPM下的峰值功耗呢。

    你看看这几个引脚的IO是否设为输入,无上下拉,否则会有漏电流。

  • 就是不同通道下,在LPM状态下,A12功耗比A3高了十几个微安

    引脚配置成AD状态,这个状态还需要配置上下来拉?

    P1SEL0 |= P1_AD_I|P1_AD_U|P1_VEREF;/*模拟*/
    P1SEL1 |= P1_AD_I|P1_AD_U|P1_VEREF;

  • 是让你设为输入,无上下拉。

    我问了两遍ADC A3和A12在LPM3下的峰值功耗,如果峰值功耗在spec范围内说明是正常现象。

  • 我是设置单次采样,每20ms读取一次,其他时间在LMP3。A3的峰值在35ua左右,A12在50ua左右,

  • 你把A12和A3采样的最小代码发一下吧,我这边测一下。

x 出现错误。请重试或与管理员联系。