This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:休眠模式消耗的电流过高

Guru**** 608295 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1229924/ek-tm4c123gxl-hibernation-mode-is-drawing-too-much-current

器件型号:EK-TM4C123GXL
主题中讨论的其他器件: TM4C123GH6PM

你好

我正在尝试使 EK-TM4C123GXL 评估板上的休眠功能正常工作。  我‘在~C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\HIBERNATE 中成功构建和运行休眠示例、但在示例代码运行时、CPU 仍会消耗 22mA 电流。

我禁用了代码的 UART 部分、这会将电流降至~5mA。

我通过休眠 GPIORetentionEnable()使能 VDD3ON 模式,因为评估板在休眠时不使用 HIB 管脚关闭 VDD 电源管脚的电源。  根据相关文档、VDD3ON 模式应在内部切断除 GPIO 引脚和休眠模块之外的所有电源。  遗憾的是、它没有显著降低我的~5mA 电流消耗。

您知道为什么此电路板消耗如此多的电量吗?  如果我从 VDD 引脚上移除电压、是否只能实现超低的休眠电流?

谢谢!
斯科特·维尔德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     您是对的。 为了获得最低电流、必须在 Vbat 由电池提供的情况下关闭 VDD。 通常情况下、HIBn (休眠请求)信号会连接到稳压器、以关闭连接到 MCU 的 VDD。 但是、在 LaunchPad 上、HIB 保持未连接状态、VBAT 连接到 VDD。 当您通过 VDD3ON 将 MCU 置于休眠模式时、I/O 仍会消耗电流以保持 I/O 状态。 如果您查看数据表中的电流消耗、VDD3ON 模式将在室温下消耗约4.5mA 的电流、这与您测得的电流接近。  

    2.2.2休眠
    Tiva C 系列 LaunchPad 提供一个外部32.768kHz 晶体(Y1)作为
    TM4C123GH6PM 休眠模块时钟源。 休眠模式下的电流消耗
    是通过对 Tiva C 系列 LaunchPad 进行一些小的调整来测量的。 此过程是
    本节稍后将进行更详细的说明。


    可以为 Tiva C 系列 LaunchPad 上休眠模块生成唤醒信号的条件
    是实时时钟(RTC)匹配时唤醒和/或 WAKE 引脚置位时唤醒。 (1)第二个
    用户开关(SW2)连接到微控制器的 WAKE 引脚。 WAKE 引脚和
    可通过 Tiva C 系列 LaunchPad 上的分线板轻松访问 VDD 和 HIB 引脚。 参见
    详细信息随附原理图。

    Tiva C 系列 LaunchPad 休眠模块上没有外部电池源、这意味着
    应使用 VDD3ON 电源控制机制。 该机制使用内部开关来
    在断开 Cortex-M4处理器以及大多数模拟和数字功能的电源的同时、
    保持 I/O 引脚电源。


    为了测量休眠模式电流或运行模式电流、使用 VDD 跳线将3.3
    V 引脚和 MCU_PWR 引脚必须被移除。 请参阅完整的原理图(附在本
    文档)以了解有关这些引脚和元件位置的详细信息。 然后、应放置一个电流表、
    在3.3V 引脚和 MCU_PWR 引脚之间测量 IDD (或 IHIB_VDD3ON)。 该 TM4C123GH6PM
    在 VDD3ON 休眠模式中、微控制器使用 VDD 作为电源、所以 IDD 是休眠
    模式(VDD3ON 模式)电流。 这种测量也可以在运行模式下进行、
    IDD 微控制器运行电流。

    为了实现最低电流消耗、请参考数据表中以及下面所示的推荐示例。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哎呀。  我看起来不够接近您向我展示的电流消耗表。  实际上表示此器件应该只消耗~4.5uA (非 mA)的电流、此时 VDD 和 VDDA 的电压为3.3V。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     抱歉、我的意思是 VDD3ON 为4.5uA。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    那么这又回到了我原来的问题——为什么在休眠时看到~5mA 的电流消耗、而我应该只看到~5uA 的电流消耗呢?  为了实现超低的电流消耗、我还需要向休眠示例代码中添加其他参数吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     该示例使用 RTC、每5秒从休眠状态中唤醒一次。 您所测量的平均电流包括运行模式和休眠模式。  您能否尝试延长 RTC 唤醒时间、使其处于休眠模式的时间更长? 您会看到电流下降吗? 您还启用 WAKEn 引脚作为唤醒源、并使用 WAKEn 来生成中断、而不是使用 RTC 进行中断。 这样、您可以将器件置于休眠模式、直到手动按下 WAKEn 引脚。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Charles

    我在电流测量跳线引脚上放置一个10Ω Ω 分流电阻器、并在电阻器上看到非常一致的50mV 平均值、因此没有任何明显的电流波动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     您能否发布修改过的代码?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Charles

    给你。  它只是原始 TI 示例代码、并进行了以下更改:

    • 切换到低频内部振荡器以降低功耗
    • 删除了 UART 内容以降低功耗
    • 通过 MAP_HIBynateGPIORetentionEnable()切换至 VDD3ON 模式

    我加入了.git 文件夹、便于您查看我对原始代码所做的更改。

    e2e.ti.com/.../hibernate.zip

    谢谢!
    斯科特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     首先、我运行库存休眠示例、使用 Fluke 115 DMM 测量大约4mA。 我再次阅读了数据表、它具有以下注释。  

    7.3.9启动休眠
    当 HIBCTL 寄存器中的 HIBREQ 位被置位、休眠功能就会启动。  如果需要将唤醒条件
    休眠模块尚未通过 HIBCTL 寄存器的 PINWEN 或 RTCWEN 位进行配置
    请求被忽略。  如果 HIBREQ 位置位时正在进行 Flash 存储器写入操作、
    互锁功能会延迟到休眠模式的转换、直到写入完成。 此外、
    如果电池电压低于 HIBCTL 寄存器中 VBATSEL 域所定义的阈值电压
    则休眠请求会被忽略。

     我在下面插入了线、电流显著下降。 您能试一下吗?

    Hibernate WakeSet (HIBERNAT_WAKE_PIN | HIBERNAT_WAKE_RESET | HIBERNAT_WAKE_RTC);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Charles

    感谢您的建议。  这确实将电流降低到~700uA、因此朝着正确的方向迈出了一步、但它仍然远未达到所宣传的超低电流消耗。  此外、蓝色 LED 闪烁模式从每五秒切换一次更改为每五秒快速闪烁一次。

    再讲一点背景信息: 我们目前正在销售 使用 Tiva 处理器的电池供电的光谱仪产品、但我们没有在 板上放置32kHz 晶体、因此只有在 关闭光谱仪后才能进入深度睡眠模式。  这将在断电时导致~1mA 的电流消耗。  由于我们的产品用于学校、因此可在两次使用之间将其置于货架上数周。  这会导致在客户接下来想使用电池时电池电量耗尽。

    我们要在下一个电路板版本中放置一个32kHz 晶体、以便我们能够以超低电流消耗进入休眠模式、所以我要尝试在 Tiva Launch Pad 板上证明这个概念。  ~700uA 的功耗优于以往、但目前在深度睡眠模式下仍过于接近~1mA 的电流消耗。

    有没有什么办法进一步降低休眠电流消耗?  我很乐意接受100uA。

    谢谢!
    斯科特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、您好、

     您能否删除用于切换 LED 的代码? 我认为  在启用 VDDON 的情况下、LED 可能也会消耗电流。 它有什么不同?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Charles

    是的、解决了这个问题!  忘记了 LED 开关晶体管的基极电流。  我太习惯了 FET 及其零栅极电流。

    谢谢!
    斯科特