打印

香主请进关于STM32L低功耗问题

[复制链接]
9197|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hyper007|  楼主 | 2012-8-15 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STM32L151芯片,主时钟使用内部HSI*4/3为12M;RTC使用外部32.768K晶振;使用串口1;RTS、CTS做通用IO口 、PA0输入、PA1输出、PA3输出、还有两个PB口做输出;输出通用IO口都是GPIO_OType_PP,GPIO_PuPd_UP;输入IO口是GPIO_OType_PP,GPIO_PuPd_DOWN;VLCD和VDDA接电源,但LCD和AD转换都不会使用;用TIM2输出一路PWM。

下面是进入低功耗代码:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, DISABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, DISABLE);

    //PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);
//PWR_EnterSTANDBYMode();
    SetSysClock();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

工作时工作电流6.6MA,进入停止模式电流2.5MA(远大于资料中10几uA,PWR_Regulator_LowPower和PWR_Regulator_ON差别不大)
进入待机模式0.339MA。

我需要PA1上升和下降唤醒、串口1输入唤醒、和RTC唤醒,待机时要小于200uA,请问香主:
1、进入停止模式串口能否唤醒,是不是直接中断就能唤醒
2、VLCD和VDDA没有使用接电源是否会耗电,管脚是否要悬空
3、上面要求和使用的一些功能进入停止模式是否能做到小于200uA
4、怎样才能让MCU的功耗在停止模式时做到最低

谢谢
沙发
hyper007|  楼主 | 2012-8-15 11:30 | 只看该作者
还有一个问题,使用外部晶振是否功耗更低

使用特权

评论回复
板凳
IJK| | 2012-8-15 12:34 | 只看该作者
还有一个问题,使用外部晶振是否功耗更低
hyper007 发表于 2012-8-15 11:30


功耗一样:对于STOP和STANDBY模式。

使用特权

评论回复
地板
IJK| | 2012-8-15 12:36 | 只看该作者
输入IO口,应该配置成 AN(模拟端口)比较好。

STM32L STOP模式电流一般不到1uA

使用特权

评论回复
5
hyper007|  楼主 | 2012-8-15 14:36 | 只看该作者
谢谢IJK,输入口配成AN功耗没有明显下降,AN方式PA0不能唤醒

使用特权

评论回复
6
IJK| | 2012-8-15 15:39 | 只看该作者
需要唤醒的引脚,可以不配置成AN。
另外,不要把其它器件的耗电归到STM32L上,为此,输出通用IO口应该配置成GPIO_OType_PP,GPIO_PuPd_None,并输出低电平。

使用特权

评论回复
7
hyper007|  楼主 | 2012-8-15 16:38 | 只看该作者
谢谢IJK,找出原因了,是外围器件消耗了几个mA,外部器件其实没有焊,只是器件的电源控制部份消耗,是硬件设计上的出了问题,现在整体的功耗能降至200uA以下,
还有一个问题,进入停止模式串口能否唤醒,如下使能中断 能否唤醒,是否会丢失数据(资料上说停止模式时钟是关闭的,串口没有时钟第一个数据能正常接收吗?)

        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

        /* Configure the NVIC Preemption Priority Bits */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        /* Enable the USART1 Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);       

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);

        USART_InitTypeDef USART_InitStructure;
        USART_InitStructure.USART_BaudRate = 115200;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

        /* Configure USART1 */
        USART_Init(USART1, &USART_InitStructure);

        /* Enable USART1 Receive and Transmit interrupts */
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
        USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

        /* Enable the USART1 */
        USART_Cmd(USART1, ENABLE);

使用特权

评论回复
8
nichengyu89| | 2013-7-21 19:53 | 只看该作者
请问楼主standby+rtc,和stop+rtc的区别是啥?

使用特权

评论回复
9
meizi.0123| | 2014-6-5 10:35 | 只看该作者
请教一下楼主,STM32L15x有没有试过在low power sleep模式下使用串口唤醒,现在碰到这个问题卡住了,其他外部中断、RTC都是可以唤醒的,但是串口就是没有反应

使用特权

评论回复
10
liaoyijiaren| | 2014-8-6 16:52 | 只看该作者
meizi.0123 发表于 2014-6-5 10:35
请教一下楼主,STM32L15x有没有试过在low power sleep模式下使用串口唤醒,现在碰到这个问题卡住了,其他外 ...

这个应该是你把串口的接收发送脚设置成模拟输入了。

使用特权

评论回复
11
snyvel| | 2014-9-26 14:31 | 只看该作者
1. 不能。L1系列没有LPUART。
2. 不会额外耗电。
3. 查手册
4. 把不用的外设都关掉。

使用特权

评论回复
12
情乐涵| | 2015-4-23 17:47 | 只看该作者
mark

使用特权

评论回复
13
734774645| | 2015-4-23 23:11 | 只看该作者
外部晶振功耗更高

使用特权

评论回复
14
mintspring| | 2015-4-23 23:30 | 只看该作者
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

使用特权

评论回复
15
hugo0chen| | 2016-3-29 12:50 | 只看该作者
mark 最近也在搞stm32l151

使用特权

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

本版积分规则

12

主题

26

帖子

0

粉丝