lovelessing 发表于 2023-1-10 14:20

N32L403低功耗测试

N32L403低功耗测试,只焊接芯片最小单元,VDD处3.3V供电standby模式下电流最低9uA,这个数值是不是正常的,如何进一步降低待机电流,待机操作步骤如下
log_info("\r\nMCU Goto Standby!\r\n");
      //LED_ON;
      LORA_PWR_OFF;
      TIM_Enable(TIM1, DISABLE);
      TIM_Enable(TIM6, DISABLE);
      ADC_Enable(ADC, DISABLE);
      DMA_EnableChannel(DMA_CH1, DISABLE);
      USART_Enable(USART1, DISABLE);//log
      USART_Enable(USART2, DISABLE);
      
      GPIO_InitType GPIO_InitStructure;
      GPIO_InitStruct(&GPIO_InitStructure);
      GPIO_InitStructure.Pin      = GPIO_PIN_15;
      GPIO_InitStructure.GPIO_Pull = GPIO_No_Pull;
      GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Input;
      GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
      GPIO_InitStructure.Pin      = GPIO_PIN_7;
      GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
      //372uA
//      GPIOA->PMODE = 0x00000000;GPIOA->PUPD = 0x00000000;
//      GPIOB->PMODE = 0x00000000;GPIOB->PUPD = 0x00000000;
//      GPIOC->PMODE = 0x00000000;GPIOC->PUPD = 0x00000000;
//      GPIOD->PMODE = 0x00000000;GPIOD->PUPD = 0x00000000;
      RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_GPIOB | \
                              RCC_APB2_PERIPH_GPIOC | RCC_APB2_PERIPH_GPIOD | \
                              RCC_APB2_PERIPH_TIM1| RCC_APB2_PERIPH_AFIO| \
                              RCC_APB2_PERIPH_USART1, DISABLE);
      RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_ADC | RCC_AHB_PERIPH_DMA, DISABLE);
      RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM6 | RCC_APB1_PERIPH_USART2, DISABLE);
      if(RESET == RCC_GetFlagStatus(RCC_CTRLSTS_FLAG_MSIRD))
      {
            RCC_ConfigMsi(RCC_MSI_ENABLE, RCC_MSI_RANGE_100K);
            while(SUCCESS != RCC_WaitMsiStable());
      }
      RCC_EnableHsi(DISABLE);
      RCC_EnableMsi(DISABLE);
      RCC_EnablePll(DISABLE);
      Wakeup_Pin_Config();
      /* Enable PWR and BKP clock */
      RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, ENABLE);
      /* Enable WKUP pin */
      PWR_WakeUpPinEnable(WAKEUP_PIN1,ENABLE);
      //DBG_ConfigPeriph(DBG_STDBY,ENABLE);
      
      /* Check if the Wake-Up flag is set */
      if (PWR_GetFlagStatus(1,PWR_STBY_FLAG) != RESET)
      {
            /* Clear Wake Up flag */
            PWR_ClearFlag(PWR_STBY_FLAG);
      }
            /* Check if the Wake-Up flag is set */
      if (PWR_GetFlagStatus(1,PWR_WKUP1_FLAG) != RESET)
      {
            /* Clear Wake Up flag */
            PWR_ClearFlag(PWR_WKUP1_FLAG);
      }
      
      //507uA
      /* Request to enter STANDBY mode */
      PWR_EnterSTANDBYMode(PWR_STOPENTRY_WFI,PWR_CTRL3_RAM2RET);
      
      //空片最低8.1uA,平均9uA还有寄存器方式设定所有IO为输入电流反而加大了

sy12138 发表于 2023-1-10 14:32

外部电路有漏电流进来吧,我这边在开发板上跑demo实测是1uA多

lovelessing 发表于 2023-1-10 14:46

sy12138 发表于 2023-1-10 14:32
外部电路有漏电流进来吧,我这边在开发板上跑demo实测是1uA多

只有芯片和外围电容,ldo都没有,直接3.3V供电测试的

lovelessing 发表于 2023-1-10 17:11

手册上说除了IO都输入外,所有IO还要连到静态电平,悬空还会增加功耗嘛

chenjun89 发表于 2023-1-10 19:40

看看芯片数据手册描述不就知道了吗

lovelessing 发表于 2023-1-11 09:19

chenjun89 发表于 2023-1-10 19:40
看看芯片数据手册描述不就知道了吗

手册也写的standby不到2uA,但是测试做不到啊,也没有最低功耗测试的demo,就是不清楚哪里没有彻底关掉嘛

lovelessing 发表于 2023-1-11 11:06

sy12138 发表于 2023-1-10 14:32
外部电路有漏电流进来吧,我这边在开发板上跑demo实测是1uA多

你的测试程序方便参考下嘛,sdk里面的例子不是最低功耗

sy12138 发表于 2023-1-11 14:19

lovelessing 发表于 2023-1-11 11:06
你的测试程序方便参考下嘛,sdk里面的例子不是最低功耗

我跑的就是demo,不过我用的是裸片测的,你有外围电路的话建议在进入低功耗之前把GPIO全部配置为模拟输入模式

lovelessing 发表于 2023-1-12 09:32

sy12138 发表于 2023-1-11 14:19
我跑的就是demo,不过我用的是裸片测的,你有外围电路的话建议在进入低功耗之前把GPIO全部配置为模拟输入 ...

多谢,IO全换成模拟输入功耗降了非常大,测试只有0.9uA,应该是表有误差,但是效果已经很不错了,之前一直是设置PMODE为0的浮空输入,学习到了,非常感谢

sy12138 发表于 2023-1-12 09:46

lovelessing 发表于 2023-1-12 09:32
多谢,IO全换成模拟输入功耗降了非常大,测试只有0.9uA,应该是表有误差,但是效果已经很不错了,之前一 ...

好的,有外围电路的话建议配置IO模拟输入
页: [1]
查看完整版本: N32L403低功耗测试