发新帖本帖赏金 60.00元(功能说明)我要提问
12下一页
返回列表
打印
[活动专区]

【AT-START-L021测评】基于深度睡眠的低功耗测试

[复制链接]
1797|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小宏121|  楼主 | 2024-12-27 16:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小宏121 于 2024-12-30 09:42 编辑

雅特力的AT-START-L021开发板拿到手是这样的,打算测试一下这MCU的低功耗是否和手册描述的一样

板子上供电有两种电压,分别是1.8V和3.3V,通过排针JP2选择
测试时把功耗分析仪接到JP2的2号脚就可以了


根据MCU AT32L021手册描述,在1.71V的时候功耗能达到8.54uA,就选择1.8V来测试

下面就开始测试

1、从雅特力官网下载资料
AT32L021的资料网址:https://www.arterytek.com/cn/product/AT32L021.jsp#Resource
我选择用Keil MDK来调试代码,所以下载好pack和官方例程就够了



2、测试官方的例程
这里我选择串口1低功耗唤醒的例程,路径如下
AT32L021_Firmware_Library_V2.0.6_ZH\project\at_start_l021\examples\pwc\deepsleep_usart1
deepsleep_usart1例程的内容:上电后LED会点亮,延时300ms熄灭LED再给串口1发送字符串、从外置时钟源切换到内置高速时钟源、减少内置LDO电压为1.0V后就进入低功耗模式的深度睡眠模式,之后如果串口1的RX有数据到来就触发唤醒,然后LED亮起、提高内置LDO电压为1.2V,恢复为外置时钟源后再打印字符串。
int main(void)
{
  __IO uint32_t index = 0;
  __IO uint32_t systick_index = 0;
  
  /* enable pwc clock */
  crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);

  /* congfig the system clock */
  system_clock_config();

  /* init at start board */
  at32_board_init();

  /* turn on the led light */
  at32_led_on(LED2);
  at32_led_on(LED3);
  at32_led_on(LED4);
  
  delay_ms(300);

  /* config usart1 */
  usart1_config(2400);
  usart1_wakeup_config();

  printf("exit deepsleep mode by usart1 rdbf interrupt \r\n");
  while(1)
  {
    at32_led_off(LED2);
    printf("now enter deepsleep mode \r\n");

    /* make sure that no usart receiver is ongoing */
    while(usart_flag_get(USART1, USART_OCCUPY_FLAG) == SET)
    {
    }
   
    /* select system clock source as hick before ldo set */
    crm_sysclk_switch(CRM_SCLK_HICK);

    /* wait till hick is used as system clock source */
    while(crm_sysclk_switch_status_get() != CRM_SCLK_HICK)
    {
    }
   
    /* reduce ldo before enter deepsleep mode */
    pwc_ldo_output_voltage_set(PWC_LDO_OUTPUT_1V0);

    while(usart_flag_get(USART1, USART_TDC_FLAG) == RESET)
    {
    }
  
  /* congfig the voltage regulator mode.only used with deep sleep mode */
    pwc_voltage_regulate_set(PWC_REGULATOR_LOW_POWER);
   
    /* enter deep sleep mode */
    pwc_deep_sleep_mode_enter(PWC_DEEP_SLEEP_ENTER_WFI);

    /* turn on the led light */
    at32_led_on(LED2);
   
    /* resume ldo before system clock source enhance */
    pwc_ldo_output_voltage_set(PWC_LDO_OUTPUT_1V2);
   
    /* wake up from deep sleep mode, congfig the system clock */
    system_clock_recover();
   
    /* wake up from sleep mode */
    printf("\r\nnow exit deepsleep mode by usart1 rdbf interrupt \r\n");
    printf("usart1_rdne_data = 0x%x\r\n", usart1_index);
    delay_ms(300);
  }
}
该例程实测进入低功耗时的功耗如图,电流是258uA,远远大于手册中描述的8.54uA

于是我查看手册
MCU进入低功耗深度睡眠模式时,手册描述了LDO、PLL、内部和外部时钟源都会关闭,但是GPIO的模式保持进入深度睡眠模式之前不变,
而且258uA远小于运行模式时和睡眠模式PLL开启时的电流,所以可以确定MCU已经进入低功耗深度睡眠模式了,那么只剩下GPIO配置的原因导致功耗偏高。




运行模式时的电流


睡眠模式PLL开启时的电流


3、修改官方例程
在进入深度睡眠模式之前,把GPIO配置为模拟输入可以最省电,这里我直接把GPIO和串口配置的代码都屏蔽了



重新烧录,1.8V供电测试,测试功耗已经和手册描述的8.54uA十分接近

至此,测评结束。

使用特权

评论回复

打赏榜单

ArteryMCU 打赏了 50.00 元 2025-01-09
理由:[L021开发板评测活动]内容优质

ArterySW 打赏了 10.00 元 2025-01-07
理由:作品优秀

沙发
xhackerustc| | 2024-12-28 22:10 | 只看该作者
赞,我用万用表测deepsleep模式电流0.13mA,还没细查比官方数据差的原因,从你这里有启发

使用特权

评论回复
板凳
averyleigh| | 2025-1-3 20:52 | 只看该作者
详细介绍了AT-START-L021开发板及其OLED显示功能,涵盖了硬件规格、软件配置和实际操作等多个方面。

使用特权

评论回复
地板
abotomson| | 2025-1-3 22:20 | 只看该作者
作者分享了具体的资源链接和所需下载的文件,如Keil MDK的pack和官方例程,这大大简化了其他开发者复现测试过程的工作。

使用特权

评论回复
5
jonas222| | 2025-1-3 23:52 | 只看该作者
依据 AT32L021 手册描述,对不同电压下的功耗进行了分析

使用特权

评论回复
6
linfelix| | 2025-1-4 02:58 | 只看该作者
详细说明了供电电压的选择和功耗分析仪的连接方式

使用特权

评论回复
7
yorkbarney| | 2025-1-4 07:38 | 只看该作者
内容涉及较多技术细节,但作者用通俗易懂的语言进行了讲解,使得即使是初学者也能轻松理解。

使用特权

评论回复
8
lzmm| | 2025-1-5 15:55 | 只看该作者
帖子为读者提供了详细的操作步骤和测试方法,无论是硬件连接还是软件调试,都能让读者快速上手。作者在介绍例程时,不仅描述了例程的功能,还分享了测试过程中的注意事项和经验,使读者能够更好地进行测试和开发工作。

使用特权

评论回复
9
alvpeg| | 2025-1-5 18:03 | 只看该作者
对官方例程的介绍详细且具体,如串口 1 低功耗唤醒例程,描述了其功能:上电后 LED 点亮,延时 300ms 熄灭 LED,发送字符串,切换到内置高速时钟源,降低内置 LDO 电压进入低功耗模式深度睡眠,当串口 1RX 有数据到来时触发唤醒,LED 亮起,提高内置 LDO 电压恢复为外置时钟源并打印字符串。这使得读者能够快速了解例程的功能和实现过程,对实际应用具有很大的帮助。

使用特权

评论回复
10
tifmill| | 2025-1-5 19:15 | 只看该作者
对于开发低功耗应用具有重要的指导意义。

使用特权

评论回复
11
backlugin| | 2025-1-7 15:49 | 只看该作者
介绍了板子上供电电压的情况,包括两种电压(1.8V 和 3.3V)以及通过排针 JP2 进行选择的方式,这对于读者了解硬件环境和进行相关测试至关重要。同时,明确指出测试时将功耗分析仪接到 JP2 的 2 号脚,为读者提供了实际操作的指导。

使用特权

评论回复
12
dspmana| | 2025-1-7 19:37 | 只看该作者
介绍了测试前的准备工作,包括下载必要的软件和例程,以及如何配置开发环境

使用特权

评论回复
13
earlmax| | 2025-1-7 22:41 | 只看该作者
涉及到从外置时钟源切换到内置高速时钟源、降低内置 LDO 电压等技术细节

使用特权

评论回复
14
sdlls| | 2025-1-8 01:47 | 只看该作者
选择了串口1低功耗唤醒的例程进行测试,这个实例不仅展示了AT32L021的低功耗特性,还体现了其在实际应用中的唤醒机制。

使用特权

评论回复
15
rosemoore| | 2025-1-8 08:27 | 只看该作者
如何选择供电电压、如何连接功耗分析仪以及如何下载和使用官方例程

使用特权

评论回复
16
药无尘| | 2025-1-8 15:57 | 只看该作者
xhackerustc 发表于 2024-12-28 22:10
赞,我用万用表测deepsleep模式电流0.13mA,还没细查比官方数据差的原因,从你这里有启发 ...

应该是有IO漏电,,没处理好

使用特权

评论回复
17
我喜欢打游戏| | 2025-1-8 15:59 | 只看该作者
烧录口会不会漏电,都屏蔽会不会没法烧录

使用特权

评论回复
18
xhackerustc| | 2025-1-8 19:28 | 只看该作者
我喜欢打游戏 发表于 2025-1-8 15:59
烧录口会不会漏电,都屏蔽会不会没法烧录

启动前加个2s~5s的延时

使用特权

评论回复
19
yeates333| | 2025-1-9 20:58 | 只看该作者
对于初学者来说,这样的详细介绍非常有帮助,能够快速了解和上手这款开发板。

使用特权

评论回复
20
pl202| | 2025-1-11 15:56 | 只看该作者
高质量的资源,对于那些对AT32L021微控制器感兴趣或者正在寻找相关测试指导的读者来说,是非常有价值的。

使用特权

评论回复
发新帖 本帖赏金 60.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

21

帖子

0

粉丝