查看: 3336|回复: 8

[分享] KL26 vlpr低功耗 IO配置

[复制链接]

该用户从未签到

7

主题

19

帖子

0

注册会员

Rank: 2

积分
143
最后登录
2015-11-4
发表于 2015-5-18 12:24:17 | 显示全部楼层 |阅读模式
现在使用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:10:35 | 显示全部楼层
在产品化的过程中只有我遇到这个问题?这个是我的工程源码,希望有调试经验的大神指点一下,眼看这个帖子就沉了

vlpr-test.rar

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

回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-5-18 17:58:47 | 显示全部楼层
    感觉楼主把东西弄复杂了。IO 端口不用频繁的使能禁能,只根据开关状态置高置低就好了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    143
    最后登录
    2015-11-4
     楼主| 发表于 2015-5-18 18:09:13 | 显示全部楼层
    cxtarm 发表于 2015-5-18 17:58
    感觉楼主把东西弄复杂了。IO 端口不用频繁的使能禁能,只根据开关状态置高置低就好了。 ...

    要有闪灯指示设备运转正常,我调试一下午了,感觉问题不是出在IO口,应该是有哪一个模块的功能被开启了,这个问题感觉很纠结,进入vlpr模式直接喂狗死循环功耗在280uA,后来我不点亮LED灯,只是io的初始化,然后关闭io时钟,功耗在900uA,有没有m0的内核框图,我想知道在这个过程中,我可能把哪个功能模块使能了,这个问题真纠结
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-5-18 18:26:26 | 显示全部楼层
    zh724270050 发表于 2015-5-18 18:09
    要有闪灯指示设备运转正常,我调试一下午了,感觉问题不是出在IO口,应该是有哪一个模块的功能被开启了, ...

    跟踪下程序,看看寄存器
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-5-28 15:08:20 | 显示全部楼层
    zh724270050 发表于 2015-5-18 18:09
    要有闪灯指示设备运转正常,我调试一下午了,感觉问题不是出在IO口,应该是有哪一个模块的功能被开启了, ...

    楼主你好!
    你试下直接打开PORT口,然后不配置GPIO看看这个时候的功耗是多少?有没有增加。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-9 09:28
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    9

    主题

    351

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1461
    最后登录
    1970-1-1
    发表于 2015-5-29 19:24:19 | 显示全部楼层
    在配置低功耗方面,最近也做了几个产品,总结了一下:
    1. 模拟部分的模块很多时候在进入低功耗前是需要关闭的
    2. 串口以及其他通信端口的IO(注意用于唤醒的外设接口不要做这些操作)配置为高阻软件或模拟输入模式
    3. 确定所有外设的复位状态和低功耗状态下的模式配置(有些外设需要手动关闭,有些则是低功耗状态下直接自动停止)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
    发表于 2015-5-29 21:42:54 | 显示全部楼层
    学习了!!
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-17 15:25:38 | 显示全部楼层
    非常感谢你关于Kinetis的技术问题。如果你没有其他问题,我们将此帖默认为已解决.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 17:45 , Processed in 0.098142 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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