查看: 2128|回复: 3

[分享] KL26芯片vlpr模式,低功耗模式IO设置

[复制链接]

该用户从未签到

7

主题

19

帖子

0

注册会员

Rank: 2

积分
143
最后登录
2015-11-4
发表于 2015-5-18 11:54:15 | 显示全部楼层 |阅读模式
现在使用Kl26芯片,在vlpr模式下,板子整体测试电流在280uA左右,但是只要配置了IO口,板子整体功耗在大于900uA,关于降低功耗的配置的方式求助
进入vlpr模式,什么都不做,功耗在280uA
    int main ( void )
        {
                unsigned int led_cnt=0u;
                SMC_PMPROT =  SMC_PMPROT_AVLLS_MASK |SMC_PMPROT_ALLS_MASK |SMC_PMPROT_AVLP_MASK;
                from_fei_into_blpi ();
                enter_vlpr ();
                while ( 1 )
                {
                        Watchdog_Reset();
                }
        }


配置IO口后,功耗大于900uA
        #define        LED_BLUE_ON()                   FGPIOC_PCOR     |=      (1<<0)//点亮led
        #define        LED_BLUE_OFF()                  FGPIOC_PSOR     |=      (1<<0)//led 灭
        void led_init ( void )
        {
                SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
                PORTC_PCR0  |= PORT_PCR_MUX(1);
                FGPIOC_PDDR |= (1<<0);
        }
       
        void dis_led ( void )
        {
                FGPIOC_PSOR = 0u;
                FGPIOC_PDOR = 0u;
                FGPIOC_PDDR = 0x0u;
                PORTC_PCR0  = PORT_PCR_MUX(0);
                SIM_SCGC5 &= ~(SIM_SCGC5_PORTC_MASK);
        }
       
        int main ( void )
        {
                unsigned int led_cnt=0u;
                SMC_PMPROT =  SMC_PMPROT_AVLLS_MASK |SMC_PMPROT_ALLS_MASK |SMC_PMPROT_AVLP_MASK;
                from_fei_into_blpi ();
                enter_vlpr ();
                while ( 1 )
                {
                        led_cnt ++;
                        Watchdog_Reset();
                        if ( led_cnt==500u )
                        {
                                exit_vlpr();
                                //blpi_fbi ( FAST_IRC_FREQ, FAST_IRC );
                                //fbi_fei(SLOW_IRC_FREQ);
                                led_init ();
                        }
                        if ( led_cnt==2000u )
                        {
                                LED_BLUE_ON();
                        }
                        if ( led_cnt == 30000u )
                        {
                                LED_BLUE_OFF();
                                dis_led ();
                                //from_fei_into_blpi ();
                                enter_vlpr ();           
                        }
                        if ( led_cnt == 120000u )
                          led_cnt = 0u;
                }
        }

LED点亮后功耗在1.5mA,LED灭功耗在950uA左右。
我现在想配置 io 到初始状态的想法有问题,还是我的配置寄存器写的有问题?请指导;( from_fei_into_blpi ,enter_vlpr ,exit_vlpr这些函数是从low_power_demo中复制修改的,低功耗是有效的)
回复

使用道具 举报

该用户从未签到

7

主题

19

帖子

0

注册会员

Rank: 2

积分
143
最后登录
2015-11-4
 楼主| 发表于 2015-5-18 15:05:44 | 显示全部楼层
在产品化的过程中只有我遇到这个问题?这个是我的工程源码,希望有调试经验的大神指点一下,这个已经纠缠了好几天了

vlpr-test.rar

3.04 MB, 下载次数: 14, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

31

主题

253

帖子

20

金牌会员

Rank: 6Rank: 6

积分
1532
最后登录
2021-7-20
发表于 2015-5-21 12:45:23 | 显示全部楼层
学习了,一直没用过低功耗模式。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

17

帖子

0

注册会员

Rank: 2

积分
53
最后登录
1970-1-1
发表于 2015-5-26 14:17:20 | 显示全部楼层
这个情况可能有两个可能
1. dis_led()这个函数是把IO口置为输入了,在没有稳定高电平或低电平输入的情况下,有可能造成一定的电流。可以只执行LED_BLUE_OFF()并注释掉dis_led()函数测试一下。
2. 如果第一点没有任何帮助,那么这个电流可能是程序访问Flash时造成的,可以试一下不操作这个IO口而进行一些简单的运算,看电流是否还是这样。手册中标称的电流值是有一定限定条件的,需要仔细阅读。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-26 13:48 , Processed in 0.085650 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表