• “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 打印

    广东11选五的开奖结果: [MSP430] 程序从MSP430FR4133移植到MSP430FR6972如何做到低功耗一样?

    [复制链接]
    96|4
    跳转到指定楼层
    楼主
     楼主 | 2019-3-15 10:59 | 只看该作者 ||退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
    程序内容:RTC 、LCD显示、ADC电池采样;MSP430FR4133可以做到7UA,MSP430FR6972却有40UA;多余的电流经查ADC10UA),AD 关闭,内部参考电压无法关闭而MSP430FR4133可以关闭,为什么?
    void ADC12_Config()  // MSP430FR6972
    {
             PMMCTL0= SVSHE + PMMPW;
             
             while(REFCTL0& REFGENBUSY);              // If refgenerator busy, WAIT
    REFCTL0 |= REFVSEL_1 + REFON;            // Enable internal 2.0V reference //参考电压配置
    ADC12CTL0 &= ~ADC12ENC;                   // Disable ADC12 (ADC12ENC=0的情况下,修改启动或关闭AD)
    ADC12CTL0 = ADC12SHT0_8 + ADC12ON;       // Set sample time  采样保持时间 256ADCCLK;启动AD
    ADC12CTL1 = ADC12SHP;                    // Enable sample timer ADCCLK = MODOSC; sampling timer   从采样保持器中获取信号
    ADC12CTL2 |= ADC12RES_2;                 // 12-bit conversion results分辨率
    ADC12CTL3 = ADC12BATMAP;                // Enable internal 1/2 AVCC+
    ADC12MCTL0 = ADC12VRSEL_1 + ADC12INCH_31; // ADC input ch A30 =>internal 1/2 AVCC+
    ADC12IER0 |= ADC12IE0;                       // ADC_IFG upon convresult-ADCMEMO
    while(!(REFCTL0 & REFGENRDY));            // Wait for reference generator
                                                //to settle
    ADC12CTL0 |= ADC12ENC;
    __delay_cycles(400);
    }
    ADC中断
       case ADC12IV_ADC12IFG0:                // Vector 12:  ADC12MEM0 Interrupt
         ui16Bat_Vol = (uint32_t)100*ADC12MEM0/0x3FF;
         if(ui16Bat_Vol_Old!=ui16Bat_Vol)
                         {
                                       bADC_done_flag= true;
                                    ui16Bat_Vol_Old= ui16Bat_Vol;
                 }
         //Exit from LPM0 and continue executing main  
         
         while(REFCTL0 & REFGENBUSY);              // If ref generator busy, WAIT
         REFCTL0 = 0;
         while(!(REFCTL0 & REFGENRDY));            // Wait for reference generator
            
         ADC12CTL0 &= ~ADC12ENC;
                         ADC12CTL0 &= ~ADC12ON;      //AD 关闭
         break;

    沙发
     楼主 | 2019-3-15 10:59 | 只看该作者
    void ADC10_Config()   // MSP430FR4133
    {
            CSCTL8 |= MODCLKREQEN;
            PMMCTL0 = SVSHE + PMMPW;
           
            PMMCTL2 |= INTREFEN;                // 1.5V voltage reference generate
            ADCCTL0 = ADCSHT_8 + ADCON;         // 256 ADCCLK cycles

            ADCCTL1 = ADCSHS_0 + ADCSHP + ADCSSEL_0 + ADCCONSEQ_0;  // ADCSC bit SHS,
            // MODCLK
            // SC-SC  单通道单次
            ADCCTL2 |= ADCRES + ADCSR;          // 10 bit resolution, 50ksps
            ADCMCTL0 = ADCSREF_0 + ADCINCH_13;  // Reference AVCC+/AVSS-, Channel 13
            ADCIE |= ADCIE0;                    // Interrupt enable

            __delay_cycles(400);
    }
    ADC中断
    case 12:  // MSP430FR4133
    。。。
    PMMCTL2 &= ~INTREFEN;   // 关闭内部参考电压 为低功耗
    ADCCTL0 &= ~ADCON; //AD 关闭
    break;
    板凳
     楼主 | 2019-3-15 11:00 | 只看该作者
    还有不执行LCD显示,电流就降到8.5UA,那就差不多,LCD显示攻耗近20UA太大了,我现在这样设置有错吗?电路差不多,区别就在R23/LCDCAP 接4.7uF,而FR4133 接0.1uF
    VSS--4.7uF -| R23/LCDCAP
    VSS--0.1uF -|R03
    VSS--0.1uF -|R13
    VSS--0.1uF -|R23
    程序设置有错吗?
    void CLOCK_Config()  // MSP430FR6972
    {
                    PJSEL0 = BIT4 | BIT5;                   // For LFXT
            // Configure LFXT 32kHz crystal
      CSCTL0_H = CSKEY >> 8;                  // Unlock CS registers
      CSCTL4 &= ~LFXTOFF;                     // Enable LFXT
      do
      {
        CSCTL5 &= ~LFXTOFFG;                  // Clear LFXT fault flag  清除 LFXT 失效标志
        SFRIFG1 &= ~OFIFG;
      } while (SFRIFG1 & OFIFG);              // Test oscillator fault flag  如果失效标志存在
      CSCTL0_H = 0;                           // Lock CS registers
    }

    void LCD_Config(void)  // MSP430FR6972
    {
             //Initialize LCD segments 0 - 15;  18 - 21; 24 ; 28 - 30
      LCDCPCTL0 = 0xFFFF;
      LCDCPCTL1 = 0x713C;
      LCDCPCTL2 = 0x0000;                                //设置LCD管脚 L0 - L15; L18 - L21; L24 ; 28 - 30 pins selected

      // Initialize LCD_C
      // ACLK, Divider = 1, Pre-divider = 16; 4-pin MUX
      LCDCCTL0 = LCDDIV__1 | LCDPRE__16 | LCD4MUX | LCDLP;

      // VLCD generated internally,
      // V2-V4 generated internally, v5 to ground
      // Set VLCD voltage to 2.60v
      // Enable charge pump and select internal reference for it
      LCDCVCTL = VLCD_2_96 | VLCDREF_0 | LCDCPEN;

      LCDCCPCTL = LCDCPCLKSYNC;               // Clock synchronization enabled

      LCDCMEMCTL = LCDCLRM;                   // Clear LCD memory
       
      //Turn LCD on
      LCDCCTL0 |= LCDON;  // 打开LCD
    }
    地板
     楼主 | 2019-3-15 11:01 | 只看该作者
    void CLOCK_Config()// MSP430FR4133
    {
            P4SEL0 |= BIT1 + BIT2;                  // Select pin4.1 pin4.2 as crystal function
            do
            {
                    CSCTL7 &= ~(XT1OFFG + DCOFFG);            // Clear XT1 and DCO fault flag  清除 XT1 DCO 失效标志
                    SFRIFG1 &= ~OFIFG;
            }while (SFRIFG1 & OFIFG);                     // Test oscillator fault flag  如果失效标志存在

            CSCTL4 = SELA__XT1CLK;                                        // IMPORTANT. Select ACLK = XT1 = 32768Hz
    }

    void LCD_Config(void)   // MSP430FR4133
    {
            uint8_t ui8Cnt;
            uint8_t *pLCD = (uint8_t *)&LCDM0;
           
            for (ui8Cnt = 13; ui8Cnt > 0; ui8Cnt--)                        // Clear LCD memory
            *pLCD++ = 0x00;                                        // CLR LCD

            SYSCFG2 |= LCDPCTL;                              // R13/R23/R33/LCDC1/LCDC2 pins selected  设置 LCD功耗

            LCDPCTL0 = 0xFFFF;
            LCDPCTL1 = 0x01FF;                                        //设置 LCD管脚 L0~L24 pins selected

            LCDVCTL = LCDSELVDD + LCDCPEN;                // Mode 2 设置 降低LCD 功耗 片上电荷泵

            LCDCSSEL0 = 0x000F;                                        // 设置 公共极  COM0~3
            LCDCSSEL1 = 0x0000;

      LCDM0 = 0x21;                        // L0 = COM0, L1 = COM1
      LCDM1 = 0x84;
       
            LCDCTL0 |= LCD4MUX + LCDLP + LCDON;        // 打开LCD: 4-mux 模式
    }
    5
     楼主 | 2019-3-15 14:41 | 只看该作者
    ADC功耗问题已经找到
    ADC12CTL0 &= ~ADC12ENC;
    REFCTL0 &= ~REFON;
    ADC12CTL0 &= ~ADC12ON;      //AD 关闭
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07