0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32L4进入STOP2模式后的漏电问题的分析及解决

电子设计 ? 作者:电子设计 ? 2018-09-21 09:02 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

STM32L4 系列,目前是STM32超低功耗产品中最强大的一个系列。它为我们提供了丰富的低功耗模式,包括STOP2 模式、低至30nA 的Shutdown 模式。对于这些模式,我们需要进行深入地了解,才能把它们用好。

问题

某客户在其产品的设计中,使用了STM32L476RGT6。客户在开发过程中,发现当进入STOP2模式后,MCU电流保持在179.6uA,远大于数据手册中所描述的值:1.18uA (3V 工作电压 & 室温 & 无LCD& 无RTC)。

调研

1.了解问题

首先,我们先确认这个179.6uA 的电流真实存在,而且只是MCU上的电流,不是整机电流。客户并没有使用LCD,也没有RTC,根据参考手册,在3V 的供电电压下,这个电流应该是1.18uA 左右,如下图:

STM32L4进入STOP2模式后的漏电问题的分析及解决

目前所测的这个电流实在是太大了。

2.问题分析

根据代码和现象确认MCU 已经进入了STOP2 模式。那么,这个电流是如何产生的呢?初步怀疑是有输出口在对外输出电流。

于是,找到电路图,对电路图进行了检查,客户的电路图并不复杂,没有很明显可能会导致往外输出电流的情况。结合电路图,我们对I/O 口的状态进行了检测,最后发现MCU 的一个I2C接口上的两根信号线电平为低!

鉴于此,我们还得分成两种情况来看。一是如果这两个I/O 口被配置为输入口,那么它是没问题的,不会产生电流;另一种情况是,它仍然为I2C功能的开漏输出口,那么这种情况下将会产生漏电流。所以,需要对代码进行检查。

从电路图上来看,MCU 的I2C 接口,SCL 和SDA 两条线直接连接到外部器件,没有上拉电阻。所以,先检查I/O配置,这两个口被配置为具有内部上拉的复用开漏功能模式使用了内部上拉电阻,这是正确的配置,没问题。但是,我们发现客户在进入STOP2模式之前并没有对这两个口的配置进行调整,也就是说,它们仍然带着内部上拉电阻并保持I2C 功能的开漏输出结构。

我们知道,如果I2C 是在空闲状态下进入STOP2 模式,按道理,它们应该是保持在高电平。为什么两个引脚都是低电平呢?再检查用户代码,发现代码中将数据写入I2C 进行发送后,就直接进入STOP2 模式了。

问题来了,如果进入STOP2 模式的时间点上,数据还在发送过程中,此时,若SCL和SDA 都处于低电平的情况下,I2C 外设时钟停止,SCL 和SDA 的状态将被锁定在输出低电平状态上。我们使用示波器对此情况进行测试,发现确实如此,在进入STOP2模式时,I2C 数据还在发送;处于STOP2 模式中,SCL 和SDA 保持为输出低电平;从STOP2模式唤醒后,I2C 继续把剩下的bits 发完。

来看一下此时SCL和SDA 的I/O 配置结构图:

STM32L4进入STOP2模式后的漏电问题的分析及解决

到此,这个问题基本就理清楚了:当I2C 在工作时,并在SCL 线和SDA 线上发送低电平时,N-MOS 被打开,电流从VDDIOx 经过上拉电阻流入I/O 口内部,经过N-MOS 流入VSS。若此时进入STOP2 模式,由于Vcore 域的所有时钟停止,导致I2C 外设时钟停止,那么此I/O 状态被保持,将导致在STOP 2 模式下电流持续产生。

STM32L476 的内部上拉电阻为25~55kΩ,标称值为40 kΩ ,3V 的工作电压,两个I/O 的上的电流大约是3V/40 kΩ * 2=150uA
因为内部上拉电阻并非刚好40 kΩ,所以我们测得到179.6uA就是相当地正常了。

3.问题解决

检查STM32L476的参考手册RM0351,在STOP2 模式下的描述中,可以看到以下这一段话:

STM32L4进入STOP2模式后的漏电问题的分析及解决

意思是说:所有在STOP2 模式下不能使用的外设,在进入STOP2模式之前,必须在其外设本身清除相应的使能位来进行禁用,或者通过设置相应的位将其恢复到复位状态。

于是,需要对代码进行修改:在进入STOP2 模式之前,将I2C 外设进行复位,复位后将SCL和SDA 两根线配置为输入上拉状态。为什么要配置为输入上拉呢?因为此I2C 在外部上没有上拉电阻连接,需要在STOP2模式下保持这两个I/O 上有确定的电平,以避免其易受电磁干扰和额外的电流消耗。而这两个口工作中又作为I2C接口,所以选择上拉电阻而不是下拉电阻。修正后,再进行测试,可测得在STOP2 模式下的电流为1.0uA,与数据手册相符。

结论

由于在进入STOP2 模式之前没有对I2C 进行复位及I/O 口处理,导致在STOP2 模式中产生了漏电流。

处理

在进入STOP2 模式下,请确保所有不相关的外设都已经被正确复位或禁用,并配置I/O口为相应的正确结构。此种情况还容易发生在使用操作系统的应用中,因为多个任务的调度很容易让使用者在进入STOP2模式时忘记对所有的外设进行检测。所以,在进入STOP2 模式前,请检查一下其他任务的工作情况,是否还有外设在传输数据还没传输完,是的话需要等待其结束,确保所有数据传输完成后,对外设进行复位或禁用,再进入STOP2模式。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    18075

    浏览量

    371001
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4530

    浏览量

    172155
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助,关于STM32F030进入Stop模式RTC唤醒问题求解

    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)进入STOP模式正常,但是RTC唤醒第二次调用HA
    发表于 07-23 06:59

    STM32L152进入STOP模式,WAKEUP by RTC唤醒ADC读取数值不变了是什么原因导致的?

    ),进入STOP,RTC唤醒后读出来的ADC没有变化(依然是4.10V)。以前没有进入STOP模式,连续读取是OK的。 请问大虾,这大概是
    发表于 07-23 06:09

    STM32L433VCT6进入STOP模式2之后,功耗依然和正常运行模式没有差别,为什么?

    STM32CubeMX上配置power savinf mode 2、系统电源供电时LDO 结果: 1、运行是10mA,进入STOP模式
    发表于 07-21 06:42

    L433进入stop2模式还有874uA的电流,有什么排查的办法吗?

    现象描述:将芯片所有引脚设置为无上拉的analoginput模式进入stop2模式之后,电流表显示还有600uA的电流(拔掉仿真器之后),手册显示
    发表于 06-11 08:10

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 ?6次下载

    STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

    我使用的是STM32U585系列芯片,开启了IWDG,并在运行模式下测试提前唤醒中断正常触发,但在进入STOP2模式
    发表于 04-27 08:05

    STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

    我使用的是STM32U585系列芯片,开启了IWDG,并在运行模式下测试提前唤醒中断正常触发,但在进入STOP2模式
    发表于 04-24 07:50

    STM32U031C8T6低功耗电流STOP2模式下电流240微安,怎么解决?

    ,使用LPTIM1输出PWM,在在STOP2模式下,LED灯关闭情况下,电流测出来居然有240ua左右,这个什么情况,谁有demo程序,让测下电流到底有多少,是我程序有问题还是片子有问题,电流太大了。 程序也是
    发表于 04-23 06:11

    STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

    我使用的是STM32U585系列芯片,开启了IWDG,并在运行模式下测试提前唤醒中断正常触发,但在进入STOP2模式
    发表于 04-22 08:14

    STM32F072无法清除EXTI4_15_IRQn pending标志,导致无法进入stop模式,怎么解决?

    开发环境:STM32F072RBT6+stm32cubemx+freertos 问题描述: 1。 开始发现进入STOP模式失败,在调用HAL_PWR_EnterSTOPMode前通过发
    发表于 03-13 07:56

    STM32U5退出stop2模式进入HardFault_Handler如何解决?

    主循环每两秒修改stopFlag为1,进入stop2模式,外部中断(lis2ds12的6d检测)唤醒并修改stopFlag为0; 不连接stlink时,退出
    发表于 03-13 06:12

    STM32L431进入STOP1模式ADC产生多余功耗怎么解决?

    我使用STM32L431进入STOP1模式,原始功耗为53uA。在进入停止模式之前,我调用HAL
    发表于 03-12 06:47

    请问stm32u073如何进入STOP2模式

    (PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); 我测量发现有100uA左右的电流。这个应该是在STOP1模式。但是我查了库文件定义。没有找到关于STOP1和
    发表于 03-12 06:38

    STM32L431在STOP2模式下能否将串口的RX配置成EXTI唤醒呢?

    STM32L431在STOP2模式下能否将串口的RX配置成EXTI唤醒呢?为什么我的唤醒不了呢?并且空闲中断也不能用,手册中说在硬件上已经将EXTI与RX引脚连到一块了,但是呢STOP2
    发表于 03-12 06:03

    STM32U575为什么无法通过LPTIM3将MCU从STOP2模式唤醒?

    客户在 STM32U575 的研发过程中发现了一个奇怪的问题,无法通过 LPTIM3 将MCU 从 STOP2 模式唤醒。
    发表于 09-27 07:22