[资源分享]

MINI板低功耗测试(附例程)

[复制链接]
798|5
手机看帖
扫描二维码
随时随地手机跟帖
JasonLee27|  楼主 | 2019-10-18 14:35 | 显示全部楼层 |阅读模式
硬件平台: AC781x MINI开发板,外用表,电源,ATC-LINK仿真器
软件平台:keil 5.23

一,准备步骤,搭建电流测试环境:
WeChat Image_20191018135803.jpg
因为我没办法直接测量到进入MCU的电流,所以只能测整个板子的功耗,这里要注意,因为MINI板上有一个电源指示灯,在进入休眠后也是会亮的,所以我把它下掉了,因为没有其他外围了,所以基本可以认为这个电流就是MCU的功耗了。
从原理图上找到VCC和GND,用电源直接供电。
WeChat Screenshot_20191018134548.png

好,初步的环境就搭建完成了。

二,编写测试代码,测试功耗
新建一个空的AC7811 keil工程,新建一个main文件。写如下代码:
#include "ac78xx.h"

int main(void)
{
    InitDelay();
   
    mdelay(10000);
    SysStop();
    while(1);
}
这应该是一个最简单的进入休眠的代码了,这里初始化延时函数,并执行10s的延时,是为了预留部分时间可以更新程序,因为m3内核在休眠下是无法连接仿真器的。这个一定要注意,如果程序上电就休眠的话,那你的板子就GG了,就必须要从ISP模式启动才可以重新烧录了。

程序运行后,测试得到电流为80uA左右:
WeChat Image_20191018140602.jpg
显然与数据手册描述还有很大差距,查阅参考手册,发现还有个LVD功能是默认开启的,在stop模式下也并不会自动关闭,所以我们手动将其关闭:
 
#include "ac78xx.h"

int main(void)
{
    InitDelay();
   
    mdelay(10000);
    WriteBitsValue(0x40008000, 4, 1, 0);
    SysStop();
    while(1);
}
此时再测试功耗为47uA:
WeChat Image_20191018141243.jpg

再查阅手册,有测试一些其他方法(关闭一些默认开始的时钟等),但都没有降低到一个预期值,这个时候想到以前用瑞萨芯片的时候也碰到过类似问题,就是IO口漏电,为了解决IO口漏电,我将所有IO全部设置为输出模式(经验上来讲好像IO在输入模式下内部本身就会漏电,至于为什么我就不清楚了),并根据外围电路,设置为相应的电平。
 
#include "ac78xx.h"
#include "ac78xx_gpio.h"

/* makesure n < 16 */
#define PAout(n)   BIT_ADDR(GPIOA_ODR_ADDR, n)
#define PAin(n)    BIT_ADDR(GPIOA_IDR_ADDR, n)

#define PBout(n)   BIT_ADDR(GPIOB_ODR_ADDR, n)
#define PBin(n)    BIT_ADDR(GPIOB_IDR_ADDR, n)

#define PCout(n)   BIT_ADDR(GPIOC_ODR_ADDR, n)
#define PCin(n)    BIT_ADDR(GPIOC_IDR_ADDR, n)

#define PDout(n)   BIT_ADDR(GPIOD_ODR_ADDR, n)
#define PDin(n)    BIT_ADDR(GPIOD_IDR_ADDR, n)

#define PEout(n)   BIT_ADDR(GPIOE_ODR_ADDR, n)
#define PEin(n)    BIT_ADDR(GPIOE_IDR_ADDR, n)
/**
* port_Init
*
* @param[in]  none
* [url=home.php?mod=space&uid=266161]@return[/url] 0
*
* [url=home.php?mod=space&uid=247401]@brief[/url] init all port
*/
void port_Init(void)
{
   
    GPIO_SetDir(GPIO_PA0, 1);
    PAout(0) = 1;   
    GPIO_SetDir(GPIO_PA1, 1);
    GPIO_SetDir(GPIO_PA2, 1);  
    GPIO_SetDir(GPIO_PA3, 1);   
    GPIO_SetDir(GPIO_PA4, 1);
    GPIO_SetDir(GPIO_PA5, 1);
    GPIO_SetDir(GPIO_PA6, 1);
    GPIO_SetDir(GPIO_PA7, 1);
    GPIO_SetDir(GPIO_PA8, 1);  
    GPIO_SetDir(GPIO_PA9, 1);
    GPIO_SetDir(GPIO_PA10, 1);   
    GPIO_SetDir(GPIO_PA11, 1);
    GPIO_SetDir(GPIO_PA12, 1);  
    GPIO_SetDir(GPIO_PA13, 1);     
    GPIO_SetDir(GPIO_PA14, 1);
    GPIO_SetDir(GPIO_PA15, 1);
   
    GPIO_SetDir(GPIO_PB0, 1);   
    GPIO_SetDir(GPIO_PB1, 1);  
    GPIO_SetDir(GPIO_PB2, 1);
    PBout(2) = 1;
    GPIO_SetDir(GPIO_PB3, 1);
    GPIO_SetDir(GPIO_PB4, 1);
    GPIO_SetDir(GPIO_PB5, 1);  
    GPIO_SetDir(GPIO_PB6, 1);
    GPIO_SetDir(GPIO_PB7, 1);   
    GPIO_SetDir(GPIO_PB8, 1);
    GPIO_SetDir(GPIO_PB9, 1);
    GPIO_SetDir(GPIO_PB10, 1);
    GPIO_SetDir(GPIO_PB11, 1);
    GPIO_SetDir(GPIO_PB12, 1);
    GPIO_SetDir(GPIO_PB13, 1);
    GPIO_SetDir(GPIO_PB14, 1);
    GPIO_SetDir(GPIO_PB15, 1);
   
    GPIO_SetDir(GPIO_PC0, 1);   
    GPIO_SetDir(GPIO_PC1, 1);  
    GPIO_SetDir(GPIO_PC2, 1);
    GPIO_SetDir(GPIO_PC3, 1);
    GPIO_SetDir(GPIO_PC4, 1);
    GPIO_SetDir(GPIO_PC5, 1);  
    GPIO_SetDir(GPIO_PC6, 1);
    GPIO_SetDir(GPIO_PC7, 1);
    PCout(7) = 0;
    GPIO_SetDir(GPIO_PC8, 1);
    GPIO_SetDir(GPIO_PC9, 1);
    PCout(9) = 1;
    GPIO_SetDir(GPIO_PC10, 1);
    GPIO_SetDir(GPIO_PC11, 1);
    GPIO_SetDir(GPIO_PC12, 1);
    GPIO_SetDir(GPIO_PC13, 1);
    GPIO_SetDir(GPIO_PC14, 1);
    GPIO_SetDir(GPIO_PC15, 1);
   
    GPIO_SetDir(GPIO_PD0, 1);   
    GPIO_SetDir(GPIO_PD1, 1);
    PDout(1) = 1;
    GPIO_SetDir(GPIO_PD2, 1);
    PDout(2) = 1;
}
int main(void)
{
    InitDelay();
   
    mdelay(10000);
    WriteBitsValue(0x40008000, 4, 1, 0);
    port_Init();
    SysStop();
    while(1);
}
整个代码改完后如上。再次测试,电流降到8uA。
WeChat Image_20191018143228.jpg
至此,与手册描述的还是有些差距,不过我测到这里也就降不下去了,曾经和内部同事沟通,好像测试方法不一样,他们是直接把电流表串在进入MCU的电源上。那就不知道是不是还有别的地方耗电了。

使用特权

评论回复

相关帖子

JasonLee27|  楼主 | 2019-10-18 15:05 | 显示全部楼层
好像工程没贴,就算了,上面的就是全部代码了。剩下的就加了m3 core,gpio驱动还有startup了。

使用特权

评论回复
gx_huang| | 2019-10-18 15:17 | 显示全部楼层
低功耗的硬件检查,看来我还是有一套的,如果数据手册是1uA,实测8uA,肯定还有鬼。

使用特权

评论回复
hayden0| | 2019-10-22 09:22 | 显示全部楼层
不错,有空我也试试挑战一下低功耗

使用特权

评论回复
AutochipsMCU| | 2019-10-22 09:55 | 显示全部楼层
gx_huang 发表于 2019-10-18 15:17
低功耗的硬件检查,看来我还是有一套的,如果数据手册是1uA,实测8uA,肯定还有鬼。 ...

强烈推荐楼主把鬼抓出来

使用特权

评论回复
JasonLee27|  楼主 | 2019-10-22 15:19 | 显示全部楼层
AutochipsMCU 发表于 2019-10-22 09:55
强烈推荐楼主把鬼抓出来

毕竟测试方法不专业,而且芯片验证肯定是有往小了测的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

415

帖子

10

粉丝