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.

[参考译文] MSP430FR2111:1.5V 片上参考断电失败

Guru**** 2381970 points
Other Parts Discussed in Thread: MSP430FR5949, MSP430FR2111
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1078837/msp430fr2111-1-5-v-on-chip-reference-power-down-fail

部件号:MSP430FR2111
线程中讨论的其他部件:MSP430FR5949

您好:

我指的是图像。当我启用 内部参考时,ADC 样本会正确地重新定位,但电流消耗为 higi,即60uA。

当我禁用内部参考时,ADC 示例出现雷诺错误(10位 ADC :1023),电流消耗低至13uA。

void Init_ADC(void)
{
  P1SEL0 = BIT0 + BIT1;
  P1SEL1 = BIT0 + BIT1;
  
  ADCCTL0  &= ~(ADCENC);
  ADCCTL0 |= ADCON | ADCMSC | ADCSHT_2;                                // ADCON
  ADCCTL1 |= ADCSHP | ADCSHS_2 | ADCCONSEQ_1|ADCSSEL_1;   //  repeat single channel; TB1.1 trig sample start
  //ADCCTL2 |= ADCRES;                                        // 10-bit conversion results
  ADCMCTL0 |= ADCINCH_1 | ADCSREF_1;                        // A1 ADC input select; Vref=1.5V
  ADCIE |= ADCIE0;      
  
  PMMCTL0_H = PMMPW_H;                                      // Unlock the PMM registers
  PMMCTL2 |= INTREFEN;                                      // Enable internal reference
  __delay_cycles(400);                                      // Delay for reference settling    
   
   PMMCTL2 &=~ INTREFEN;  //disable internal reference: 13uA
                          //Comment  the statement   60uA
   
  ADCCTL0 |= ADCENC;                                        // ADC Enable
  // ADC conversion trigger signal - TimerB0.1 (32ms ON-period)
  TB0CCR0 = t1-1;                                         // PWM Period
  TB0CCR1 = t1-1;                                          // TB1.1 ADC trigger
  TB0CCTL1 = OUTMOD_3|CCIS_1;                                      // TB1CCR0 toggle
  TB0CTL = TBSSEL__ACLK | MC_1 | TBCLR;                     // ACLK, up mode
  ADC_num=1;
}


#pragma vector=ADC_VECTOR
__interrupt void ADC_ISR(void)
{
    switch(__even_in_range(ADCIV,ADCIV_ADCIFG))
    {        
        case ADCIV_ADCIFG:
        {
            ADC_Result[ADC_num] = ADCMEM0;
            if(ADC_num==0)
            {
                LPM3_EXIT;         
                ADCCTL0 &=~ ADCENC;  
                ADC_num=1; 
                ADCCTL0 |= ADCENC;
            }
            else
            {
                ADC_num--;
            }   
        }break;
        default:break;
    }  
}

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

    您好,尚

    禁用内部参考时,请提供有关配置的更多详细信息

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

    以下配置:

    void Init_ADC(void)
    {
    P1SEL0 = BIT0 + BIT1;
    P1SEL1 = BIT0 + BIT1;
    
    ADCCTL0 &= ~(ADCENC);
    ADCCTL0 |= ADCON | ADCMSC | ADCSHT_2; // ADCON
    ADCCTL1 |= ADCSHP | ADCSHS_2 | ADCCONSEQ_1|ADCSSEL_1; // repeat single channel; TB1.1 trig sample start
    //ADCCTL2 |= ADCRES; // 10-bit conversion results
    ADCMCTL0 |= ADCINCH_1 | ADCSREF_1; // A1 ADC input select; Vref=1.5V
    ADCIE |= ADCIE0;
    
    ADCCTL0 |= ADCENC; // ADC Enable
    // ADC conversion trigger signal - TimerB0.1 (32ms ON-period)
    TB0CCR0 = t1-1; // PWM Period
    TB0CCR1 = t1-1; // TB1.1 ADC trigger
    TB0CCTL1 = OUTMOD_3|CCIS_1; // TB1CCR0 toggle
    TB0CTL = TBSSEL__ACLK | MC_1 | TBCLR; // ACLK, up mode
    ADC_num=1;
    }

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

    您好,

    编码时,您的参考源被选为 VREF1.5,但您没有在 PMM 寄存器中打开内部参考模块。 在 ADCCTL0寄存器中为 ADCSREFx 位选择了 AVCC 和 AVSS。

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

    您好,

    《MSP430FR4xx 和 MSP430FR2xx 系列用户指南》21.2.4自动断电描述:

    选择可变片上参考时,如果 INTREFEN =1,则内部参考始终打开。 如果
    INTREFEN =0,仅当 ADC 转换被触发时,才会打开参考。

    《MSP430FR58xx,MSP430FR59xx 和 MSP430FR6xx 系列用户指南》34.2.4自动断电描述:

    如果 REFON=1,则内部引用将持续打开;否则,只有在触发 ADC 转换时才会请求内部引用。

      当我使用 MSP430FR5949,时,我的 参考源被选择为 VREF (2.5V)。ADC 样本重新正确默认 。电流消耗低至16uA。

    但当我使用 MSP430FR2111时,没有达到同样的效果。

    FR5949 ADC 配置:

    void ADC_init(void)
    {    
        P1SEL1 |= BIT1+BIT2+BIT4; //bat电池  DINT电流超大通道
        P1SEL0 |= BIT1+BIT2+BIT4;
            
        P2SEL1 |= BIT4; //取电电压C+
        P2SEL0 |= BIT4;
        
        P3SEL1 |= (BIT0+BIT1+BIT2);//电流通道2 电流通道1 电场采样
        P3SEL0 |= (BIT0+BIT1+BIT2);//+BIT3
        
        while(REFCTL0 & REFGENBUSY);
        REFCTL0 = REFVSEL_2;// | REFON;
        //while(REFCTL0 & REFGENRDY);//Reference voltage output is ready to be used
        
        ADC12CTL0 &= ~ADC12ENC;
        ADC12CTL0 |= ADC12ON|ADC12MSC; //          // Turn on ADC12, set sampling time
        ADC12CTL1 |= ADC12SHP|ADC12SHS_1| ADC12CONSEQ_1; //CSTARTADD_0++                // Use sampling timer, single sequence
        ADC12CTL2 |= ADC12RES_2|ADC12PWRMD;                 // 12-bit conversion results
        //ADC_ui();
       
        ADC12CTL3 &=~ ADC12TCMAP;
        ADC12CTL0 |=ADC12SHT0_1;
        ADC12MCTL0 = ADC12VRSEL_1+ADC12INCH_12;  //0001b = VR+ = VREF buffered, VR- = AVSS
        ADC12MCTL1 = ADC12VRSEL_1+ADC12INCH_14;
        ADC12MCTL2 = ADC12VRSEL_1+ADC12INCH_4+ADC12EOS;
        ADC12IER0 = 0x04;                              
        ADC12CTL0 |= ADC12ENC;
        
        TA0CCR0 = TIME_SAMPLE;//TIME_1MS;                         // PWM Period
        TA0CCR1 = TIME_SAMPLE;//TIME_1MS;                           // TACCR1 PWM Duty Cycle
        TA0CCTL1 = OUTMOD_3;//CCIE;// |                       // TACCR1 set/reset
        TA0CTL = TASSEL__ACLK | MC__UP;//|TAIE;           // ACLK, up mode     
    }
    

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

    您好,尚杜,

    检查在 ADC 中使用内部1.5V 时应设置 PMMCTL2.INTREFEN。 当3FF 时,您可以检查 INTREFEN 是否被清除。