打印

AT086低功耗问题

[复制链接]
924|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lz34|  楼主 | 2023-4-12 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
操作如下代码,处理休眠定时器唤醒8S钟直接继续进入休眠,测量电路电压还有1.5ma
硬件上只有一个电源芯片和MCU复位电路,电源芯片实测3ua电流,已经断开jlink。请问哪里还需要关闭。


/**********关闭除低功耗中断外的其它中断,防止其它中断打断休眠**********************/
           /*例如关闭MCPWM中断:NVIC_DisableIRQ(MCPWM_IRQn);*/
        //关闭各大模块
        Reg_Reset();
                NVIC_DisableIRQ(HALL_IRQn);//使能hall中断
    NVIC_DisableIRQ (MCPWM_IRQn);
    NVIC_DisableIRQ(TIMER3_IRQn);      /* 使能UTimer定时器中断*/
    NVIC_DisableIRQ(ADC0_IRQn);        /* enable the ADC0 interrupt */
    NVIC_DisableIRQ (TIMER0_IRQn);
    //NVIC_DisableIRQ (CMP_IRQn);        /* 打开比较器中断 */
               
    //NVIC_DisableIRQ(PWRDN_IRQn);       /* 打开电源检测中断 */
    NVIC_DisableIRQ(UART0_IRQn);      //使能UART0定时器中断

               
       
/******************************************************************************/       
    Switch2HRC();          /*关闭高速时钟与BGP和掉电检测电路*/
    SYS_FallSleep();       /*进入休眠模式*/
    SYS_UtimerFallSleep(); /*在IO唤醒模式中,判断是Utimer唤醒则继续进入休眠*/
    Switch2PLL();          /*开启高速时钟与BGP和掉电检测电路*/
/***********************************复原关闭的外的其它中断**********************/       
    /*例如开启MCPWM中断:NVIC_EnableIRQ(MCPWM_IRQn);*/
/******************************************************************************/       
        NVIC_EnableIRQ(HALL_IRQn);//使能hall中断
    NVIC_EnableIRQ (MCPWM_IRQn);
    NVIC_EnableIRQ(TIMER3_IRQn);      /* 使能UTimer定时器中断*/
    NVIC_EnableIRQ(ADC0_IRQn);        /* enable the ADC0 interrupt */
    NVIC_EnableIRQ (TIMER0_IRQn);
    NVIC_EnableIRQ (CMP_IRQn);        /* 打开比较器中断 */
    NVIC_EnableIRQ(PWRDN_IRQn);       /* 打开电源检测中断 */
    NVIC_EnableIRQ(UART0_IRQn);      //使能UART0定时器中断

使用特权

评论回复
沙发
lz34|  楼主 | 2023-4-12 20:38 | 只看该作者
更新一下,应该是卡在下面函数while(SYS_AFE_CMP & BIT13){};  //等待外部5VOK 这句,但是这个函数好像是上电才调用的,代码里面没有调用,所以是进入低功耗之后,复位了吗
void Clock_Init(void)
{
    SYS_WR_PROTECT = 0x7a83;      /* 解除系统寄存器写保护 */
    SYS_AFE_REG5 |= BIT15;        /* BIT15:PLLPDN 开PLL */
          SoftDelay(100);               /* 延时100us, 等待PLL稳定 21.4.17*/
          SYS_AFE_REG6 |=POWER_4V5 << 8;//配置为4.5V监控,可根据实际配置其它档位:3.6V/3.9V/4.2V/4.5V
    SoftDelay(100);              /* 延时100us, 等待电源检测配置完毕*/
          while(SYS_AFE_CMP & BIT13){};  //等待外部5VOK
    SYS_CLK_CFG = 0x000001ff;   /* BIT8:0: CLK_HS,1:PLL  | BIT[7:0]CLK_DIV  | 1ff对应96M时钟 */
}

使用特权

评论回复
板凳
lz34|  楼主 | 2023-4-12 21:17 | 只看该作者
NVIC_DisableIRQ (CMP_IRQn);        /* 打开比较器中断 */

这条,如果把CMP中断关了,大概能到50ua,虽然离手册的30ua平均水平还有点距离,但是忍了,
但是会出现wake时间到了之后,就无法再进入休眠,电流大概保持在1.5ma
如果cmp irq没关,那么进入休眠就是一直在1.5ma做优,怎么破

使用特权

评论回复
地板
lz34|  楼主 | 2023-4-12 21:28 | 只看该作者
解决了,官方给的例程的中断服务函数有问题

使用特权

评论回复
5
一路寻你| | 2023-4-17 14:01 | 只看该作者
lz34 发表于 2023-4-12 21:28
解决了,官方给的例程的中断服务函数有问题

您好,方便说下具体问题吗,我们也好完善下例程,提高客户体验。

使用特权

评论回复
6
weifeng90| | 2023-4-18 07:46 | 只看该作者
应该是没有用到的IO没有按照低功耗要求进行配置。

使用特权

评论回复
7
tpgf| | 2023-5-4 11:12 | 只看该作者
可以在仿真情况下打断点确认是不是复位啊

使用特权

评论回复
8
nawu| | 2023-5-4 11:27 | 只看该作者
lz34 发表于 2023-4-12 20:38
更新一下,应该是卡在下面函数while(SYS_AFE_CMP & BIT13){};  //等待外部5VOK 这句,但是这个函数好像是上 ...

等待外部电压的话 应该是有一个范围的 这个范围可以人为限定吗

使用特权

评论回复
9
aoyi| | 2023-5-4 12:15 | 只看该作者
lz34 发表于 2023-4-12 21:28
解决了,官方给的例程的中断服务函数有问题

这种官方例程有问题的情况 会出勘误手册吗

使用特权

评论回复
10
zljiu| | 2023-5-4 13:11 | 只看该作者
lz34 发表于 2023-4-12 21:28
解决了,官方给的例程的中断服务函数有问题

是中断服务函数有问题 还是说中断服务函数没有满足楼主的要求呢

使用特权

评论回复
11
gwsan| | 2023-5-4 14:12 | 只看该作者
lz34 发表于 2023-4-12 21:28
解决了,官方给的例程的中断服务函数有问题

希望楼主详细说明一下中断服务函数哪里有问题了

使用特权

评论回复
12
tfqi| | 2023-5-4 14:30 | 只看该作者
中断函数里边应该是我们自己进行处理的吧

使用特权

评论回复
13
lz34|  楼主 | 2023-5-27 10:24 | 只看该作者
lz34 发表于 2023-4-12 21:28
解决了,官方给的例程的中断服务函数有问题

回复,官方给的例程的中断服务函数有问题,这里指的是中断服务函数的名称和入口名称不一样,也就是中断响应了,但是没有进入代码里的服务函数,要改成统一的

使用特权

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

本版积分规则

11

主题

22

帖子

0

粉丝