[技术问答] HC32L130J8TA在深度睡眠模式下任然有200多UA

[复制链接]
1918|6
 楼主| shibing2005 发表于 2019-12-31 13:59 | 显示全部楼层 |阅读模式
HC, IO, pi, GPIO, gp
本帖最后由 shibing2005 于 2019-12-31 14:01 编辑

公司最近在试用国产芯片华大的HC32L1330J8TA的,写了一些程序功能都没有问题就是深度睡眠模式下始终电流太大。希望大家给帮忙分析下问题出在哪里?
//*****************************************************************************
int32_t main(void)
{

                App_ClkInit();
                App_LedInit();     //< LED端口初始化
                R_LED_L;
                delay1ms(1000);
                delay1ms(1000);
                delay1ms(1000);        
                delay1ms(1000);        
                R_LED_H;
                delay1ms(500);
          _LowPowerModeGpioSet();
          Lpm_GotoSleep(TRUE);//进入深度睡眠模式    FALSE:唤醒后不再自动进入休眠        
    while(1)
    {                                 
    }
}

//时钟初始化配置
void App_ClkInit(void)
{
        stc_sysctrl_clk_cfg_t stcCfg;
        Sysctrl_SetRCHTrim(SysctrlRchFreq4MHz);  
        stcCfg.enClkSrc    = SysctrlClkRCH;        
        stcCfg.enHClkDiv   = SysctrlHclkDiv1;
        stcCfg.enPClkDiv   = SysctrlPclkDiv1;
        Sysctrl_ClkInit(&stcCfg);        
        Sysctrl_ClkSourceEnable(SysctrlClkXTL, TRUE);

}

void App_LedInit(void)
{
    stc_gpio_cfg_t stcGpioCfg;  
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);     
    stcGpioCfg.enDir = GpioDirOut;
    stcGpioCfg.enPu = GpioPuDisable;
    stcGpioCfg.enPd = GpioPdEnable;
    Gpio_ClrIO(R_LED_PORT, R_LED_PIN);
    Gpio_Init(R_LED_PORT, R_LED_PIN, &stcGpioCfg);   
}

static void App_LowPowerModeGpioSet(void)
{
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

    //swd as gpio
    Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);

    ///< 配置为数字端口
    M0P_GPIO->PAADS = 0;
    M0P_GPIO->PBADS = 0;
    M0P_GPIO->PCADS = 0;
    M0P_GPIO->PDADS = 0;

    ///< 配置为端口输入(除LED端口外)
    M0P_GPIO->PADIR = 0XFFFF;
    M0P_GPIO->PBDIR = 0XFFFF;
    M0P_GPIO->PCDIR = 0XDFFF;
    M0P_GPIO->PDDIR = 0XFFFF;

    ///< 输入下拉
    M0P_GPIO->PAPD = 0xFFFF;
    M0P_GPIO->PBPD = 0xFFFF;
    M0P_GPIO->PCPD = 0xFFFF;
    M0P_GPIO->PDPD = 0xFFFF;
}
//*****************************************************************************

TUZ.png
hayden0 发表于 2020-1-1 08:50 | 显示全部楼层
没设置IO,IO漏电造成的!
hjl2832 发表于 2020-1-2 12:51 | 显示全部楼层
进入低功耗后,IO口三态,你确认LED这样接的漏电流是多少了吗?去掉LED看看。
正常用法,做低功耗的应用,LED最好是IO拉电流,而不是灌电流,灌电流是会形成漏电回路的。要做灌电流应用,通过外部N型三极管或MOSFET管控制吧。
一事无成就是我 发表于 2020-1-2 15:01 | 显示全部楼层
PD03关闭上拉,电流基本就降下来了
martinhu 发表于 2020-1-3 18:57 | 显示全部楼层
LED用的PC13,为什么初始化的时候要使能PC13的下拉?这样不是一直有电流存在吗?
正确的做法,应该是在进入低功耗之前,设置为输入,或者输出高电平3v3,与外挂的电路等电势
 楼主| shibing2005 发表于 2020-1-8 14:20 | 显示全部楼层
一事无成就是我 发表于 2020-1-2 15:01
PD03关闭上拉,电流基本就降下来了

谢谢  找到原因了 基本就是这个问题
国芯发烧友 发表于 2020-1-19 11:14 | 显示全部楼层
华大有个“华大单片机应用交流”群 有问题可以群里讨论
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部