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.

[参考译文] RTOS/TM4C129XNCZAD:TM4C 能量优化

Guru**** 2439710 points
Other Parts Discussed in Thread: TM4C129XNCZAD, EK-TM4C1294XL, CC3100, TPS63020, BQ25892

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611174/rtos-tm4c129xnczad-tm4c-energy-optimizations

器件型号:TM4C129XNCZAD
主题中讨论的其他器件: EK-TM4C1294XLCC3100TPS63020BQ25892

工具/软件:TI-RTOS

大家好、

我希望你能做得好。

我正在一个项目中进行能源优化、我使用不同的技术来充分利用仪器电池的运行时间。 我在监控 MCU 电流消耗的同时、尝试使用外部25MHz 晶体振荡器测试了介于30MHz 和120MHz 之间的不同 MCU 时钟频率。 在较低频率下、MCU 电流消耗会相当下降。 此外、我还在尝试通过检查以太网电缆连接来节省更多能源、以供 Web 服务器使用;如果电缆未连接、我将关闭以太网 PHY。 我必须在此提及的是、我使用的是 TM4C 集成 PHY。 我的代码每5秒为 PHY 上电并检查电缆是否已连接。 如果是、它不会关闭 PHY。 但是、这里有一个限制条件、我要观察到。 PHY 上电后、在30MHz 和120MHz 频率下、检测到连接的电缆需要大约1600毫秒。 这种电缆检测似乎与 MCU 时钟频率无关。 由于 PHY 处于通电状态时的延迟为1600毫秒、因此消耗能量图会上升。 下面给出了我用于此目的的代码。 请查看我以及下面列出的问题。 提前感谢与此帖子互动的所有人。

//获取 EMAC PHY 断电状态
emacPhyBmcr = EMACPHYREAD (EMAC0_BASE、0U、EPHY_BMCR);
//如果 EMAC PHY 断电
if (emacPhyBmcr 和 EPHY_BMCR_PWRDWN)

//打开电源
EMAPPHYPowerOn (EMAC0_BASE、0U);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_PIN_4);
SysCtlDelay(40000u*emacDelay);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_4、0);

//等待 EMAC PHY 上电
while (EMAC0_BASE、0U、EPHY_BMCR)& EPHY_BMCR_PWRDWN)


//获取 EMAC 链路状态
emacIsLinkUp = EMACSnow_isLinkUp();
//检查电缆是否已连接
if (emacIsLinkUp == false)

//打开电源
EMAPPHYPowerOff (EMAC0_BASE、0U);

我还必须提及的是、我将 TI RTOS NDK 用于以太网客户端。 在上面给出的代码中、我将切换 PQ4以测量 PHY 从断电状态通电后检测到连接电缆的延迟。 请查看下面列出的问题。

(i)是否有任何可能遗漏的步骤可消除电缆检测的1600ms 延迟?

(ii)由于这个上电关闭周期、以太网 PHY 寄存器配置是否会丢失?

(iii)如果有人从事 TM4C 能源优化工作、您能分享您的经验吗?

谢谢、

Muhammad Shuaib.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    内部 PHY 由独立于 SYSCLK 的25MHz MOSC 提供时钟。

    请查看以下链接、其中估算了 PHY 自动协商的时间。 1600ms 似乎没有道理。

    www.ieee802.org/.../brown_1_0102.pdf
    www.tomshardware.com/.../19648-42-ethernet-auto-negotiate-time

    如果您始终保持 PHY 打开,但只关闭 MOSC,该怎么办? 与每次上电时进行协商相比、电源看起来是什么样子?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    感谢您花时间为本帖子做出贡献。 您提供的信息对于朝着正确的方向发展非常有帮助。 您能告诉我这种开/关 PHY 是否会有任何问题吗? 因此、我们是否有 PHY 故障的机会或对 MCU 有任何影响?
    我们正在考虑的另一种能源优化解决方案是、我们每隔两秒将 MCU 置于睡眠状态、并在睡眠模式下禁用以太网 PHY 以及其他外设。 请分享您对此方法的专家意见。

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

    您好、Muhammad、

     我看不到打开/关闭 PHY 电源的问题。  

     阅读数据表、您可以将 PHY 置于不同的省电模式。 我不确定 EMACPHYPowerOff ()将 PHY 置于哪种模式。 您能否使用不同的节能模式(例如 IEEE 断电模式或其他模式)进行实验、以了解您是否获得了不同的电能系统配置?

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

    我将深入了解它、看看可以通过 PHY 实现哪些功能来节省一些功耗。 现在、我尝试根据 TM4C129XNCZAD 将我的系统配置为30MHz、以节省一些毫安电流。 根据文档、在60MHz 时、MCU 将消耗大约76mA 的电流、而在120MHz 时为105mA。 当我检查 EK-TM4C1294XL 的功耗差异时、30MHz 时的功耗与120MHz 相比接近于文档中提到的值。 但是、在 TM4C129XNCZAD 系统板上以较低频率运行 MCU 时、功耗差异仅在120MHz 和30MHz 之间的11至12mil 之间。 是否缺少特定于 TM4C129XNCZAD 的任何配置?

    谢谢、
    Muhammad Shuaib.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    与 LaunchPad 相比、您的系统板有何不同? 在120MHz 和30Mhz 频率下、您在系统板上测量了什么? 您是否有其他可对其进行电流测量实验的板? 您能否确认您确实以30MHz 而非更高频率运行? 通常、电流消耗由两部分组成、即泄漏电流和动态电流。 动态电流与频率相关、而泄漏是硅所基于技术节点中晶体管的固有特性。 您应该会看到动态电流 wrt 频率上的线性关系。 在允许的最高温度、允许的最高电压和最强的硅材料下工作时、泄漏电流最高。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    我有一个具有外设(CC3100、LED、按钮和一些其他模块)的定制板。 我在30MHz 和120MHz 下测量了系统的总体电流消耗。 是的、我有其他板、我已经检查了多个板的电流消耗、并获得了相同的结果。 为了确认30MHz 系统频率、我使用 PWMClockSet (PWM0_BASE、PWM_SYSCLK_DIV_1)将 PWM 模块时钟配置为30MHz、并使用下面给出的公式将 PWM 发生器0配置为6MHz 频率。
    NumberOfCycles = 300000/6000000;
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、numberOfCycles);
    我在示波器上监控了 PWM 输出信号、并确认信号频率为6MHz。 我还想在这里提到另一点。 尽管在 EK-TM4C1294XL 上、我使用为此目的提供的 JP2测量 MCU 电流消耗、即仅测量 MCU 的电流消耗、但我还测量了 EK-TM4C1294XL 从电源的总电流消耗、在30MHz 时仍然看到合理的电流消耗下降、 与120MHz 的频率相比。 但是、由于我的定制板上没有一个仅可测量 MCU 电流消耗的点、因此我将测量电路板的整体电流消耗。 但与120MHz 相比、30MHz 时的总电流消耗下降幅度很小、而30MHz 时 EK-TM4C1294XL 的总电流消耗下降幅度很大。 如果将能源优化目标设置为电流消耗远低于我目前所拥有的值、则更改系统时钟不会节省足够的功耗或至少接近 MCU 文档中提到的功耗。 如果您对此有任何意见或建议、请告知我。

    谢谢、
    Muhammad Shuaib.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    您是否可以将系统板上的主要组件(即 CC3100和其他组件)置于某种类型的深度睡眠模式并仅使 MCU 处于活动状态? 然后、您将在不同频率下测量与 LaunchPad 相对应的电流。 在您的 LaunchPad 测量中、从120MHz 到60MHz 的电流会下降约30mA。 但是、在您提到的系统板中、您观察到的内容要少得多。 我倾向于认为、MCU 侧的压降量被系统板中其他组件的增益抵消。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    我将查看是否可以将电路板上的主要组件置于某个低功耗模式、然后检查不同频率下的电流消耗。 我对您在最后提到的电流消耗点有疑问 如果连接到我的系统板的组件确实需要消耗特定的电流、则无论 MCU 在不同频率下消耗或节省多少电流、它们都应该是。 组件如何开始获得 MCU 下降的电流? 在这种情况下、无论我们运行 MCU 的频率是多少、它都不会对功耗产生任何影响、或者、在某些情况下、组件已经消耗了它们所需的最大电流、然后我们看到总体功耗降低了?

    谢谢、
    Muhammad Shuaib.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    我在上次答复中的意思是、如果 launchpad 出现30mA 的压降、但您的系统主板仅出现12mA 的压降、则其他18mA 压降可能是由其他组件的功耗引起的。 我同意、无论其他组件消耗多少电量、MCU 中的 Δ 压降都应与 LaunchPad 类似。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    感谢您的更新。

    我已禁用系统板上可以使用的所有组件。 一些外设通过开关(TPS63020)供电、我的控制中没有使能引脚。 相反、我启用了 IC 的省电模式、以便当从中汲取的电流低于100mA 时 、IC 将进入省电模式(这有助于节省几毫安)。 在进行上述配置后、我修改了代码以仅初始化 GPIO、以确保板载组件处于低功耗模式、并将代码置于无限 while 环路中。 下面是120MHz 和30MHz (while 循环)下的功耗情况。

    系统电流消耗是关于的

    (I)30MHz 运行时为93mA

    (ii)以120MHz 运行时为101mA

    我认为这里应该提到的一点是、我的系统由 5-36V 输入范围 LTM8055 降压/升压稳压器(当前由12v 电源供电)供电、该稳压器配置为12v 输出。 该输出被馈送到 BQ25892BQ25892的输出 提供给 TPS63020、后者为 MCU 提供3.0V 电压。 就 EK-TM4C1294XL 而言、我使用 Booster Pack 5V 引脚为其供电。 我能否看到使用系统板时的电流下降足够接近或与我使用 EK-TM4C1294XL 观察到的情况直接相关、  由于这些多级电源转换或受系统板中使用的这些电源稳压器效率的影响?

    谢谢、

    Muhammad Shuaib.

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

    赦免-我今天早上碰巧和 Charles 进行了沟通-因此知道他"绑在一起"-他的回答很可能会被推迟。

    随着公司/我完成了类似的"低功耗设计工作"(在我们的案例中为"地下自动海上车辆")、您(刚刚)提到的所有"新事实"(今天、通过您的10:17帖子)都在您的总体功率预算中"大量"注册。

    在执行此类比较测量时、您必须始终力求尽可能保持"板对板"、"芯片对芯片"、"电源对电源"的一致性。   您的定制板与评估板存在(显著)差异这一事实很可能会证实您对 MCU 功耗的发现。  (即太多"其他"电力消费者!)

    在我们的情况下(以及其他要求低能耗的应用)、至关重要的是、所有组件(如有可能)都必须提供简化的方法来"关闭"或以其他方式大大降低其电流需求。   这对于各种电源馈电/调节组件尤其重要-您最近发布的帖子证实了这一点(似乎)。

    我们(和其他人)用于"执行此类功耗测试"的方法是执行"部分电路板构建"-首先放置有限数量的组件(当然、这种方法跨多个电路板-以避免"单板异常"的影响) 然后测量并记录电流。   稍后添加组件的"下一波"-并重复测量。   通过这种方式-通过"主动"发挥作用"的组件隔离-可以深入了解每个组件的当前需求。

    以上表示"kiss"-转向"info discovery/enhancing"模式。   变量数量的隔离和限制比"更集中"的替代方案提供更强的数据点...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    LaunchPad 和您的系统板之间似乎存在相当大的差异。 如 CB1所建议的那样、很难对二者进行比较。 稳压器各个阶段的效率以及两个不同电路板之间 I/O 上的负载和开关活动量(C * dv/dt)也会影响每个电路板的电流消耗。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Charles:CB1_MOBILE、

    在我对这篇文章的最后一篇评论之后,我发现当我测试由5V 电源供电的 Tiva 套件的电流消耗时,我期望自定义电路板的电流下降相似,而我正使用12v 电源供电。 我运行了这些数字、发现在较低的频率下、总功耗下降非常接近我在 Tiva 套件中看到的情况。 问题在于、12v 电源的电流下降不能等于5V 电源的电流下降。

    感谢大家在这个领域提供的所有帮助。

    继续进行能源优化、我现在尝试使用我的定制板实现休眠模式。 我在 Tiva 套件(EK-TM4C129XNCZAD)上测试了休眠模式、并使用 GPIO、WAKE 引脚和防篡改引脚将其唤醒。 使用我的 Tiva 套件、一切都可以正常工作。 由于我们在这里有两个版本的定制板、在版本2中、我尝试了休眠模式测试、发现 MCU 进入休眠、但立即唤醒、显示 XOSC 故障篡改事件。 在版本1 电路板上、我让 MCU 进入休眠模式、但它会在配置的防篡改引脚信号上立即唤醒。 我必须在此提及、在版本1电路板上、我们不使用防篡改引脚、因此我为防篡改信号配置的引脚不会连接任何引脚。 我知道、这可能是 MCU 从休眠状态唤醒的原因。 但是、在这第一个休眠和唤醒周期之后、现在我无法再将 MCU 置于休眠状态。 我调试了我的代码,发现 HIB_CTL_HIBREQ 位没有被置位,代码在调用 HibernateRequest()函数后放置的 while 循环中会陷入无限状态。

    您能不能建议我缺少什么、因为我的代码可以在 Tiva 套件中正常工作、但无法在我的 rev1电路板上工作? 此外、我获取 XOSC 故障篡改事件修订版2 电路板的原因可能是什么? 是否有任何配置选项可用于禁用此篡改事件?

    谢谢、

    Muhammad Shuaib.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    它是您在 TivaWare 以及 rev1和 rev2上运行的相同代码吗? 如果它是相同的代码、并且在 Tiva 上工作、但您的定制板上工作、则可能需要在您的硬件上进行调查。

    即使未连接防篡改引脚、您是否在代码中启用了防篡改功能? 请注意、根据数据表、每个篡改 IO 都有一个弱上拉电阻。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Charles Tsai"]…… 则可能需要在您的硬件上进行调查。 [/报价]

    应该询问"您的定制电路板和"正常工作"EVM 中是否存在任何硬件电路差异?"   (特别是在休眠/篡改电路固定处/周围)

    您会注意到、"篡改"未连接、但提供一些(最小)布线(以过孔结尾)是明智的做法、以便引脚可以端接。   同样、您对"篡改"的处理必须与 EVM 上所做的工作重复。

    您提到过多个级联电源-这些电源可能会"阻碍"您进入"休眠"和/或"退出"?   引入相同的5V 电源(与您的 EVM 配合使用)可能会发现您的电源在"休眠"和/或"篡改"时产生的(任何)影响。、

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

    您好!

    关于我之前所面临的问题, 即我的仪器没有进入休眠状态,我猜原因是我使用的是基于 TI RTOS 的代码,我将 MCU 置于 main()的休眠状态。 这是第一次进入休眠模式、但第二次不进入休眠模式。 当我在我的 Shutudown 任务中执行代码时、该任务在 BIOS_start 函数之后运行。 在此更改之后、我能够将我的修订版1 进入休眠模式、并通过 PM4引脚生成的篡改信号将其唤醒。 但是、当我在 rev2 电路板上尝试相同的代码时、电路板进入休眠状态、并立即唤醒报告 XOSC 故障篡改事件。 我们检查了两个板上的时钟信号、它工作正常。 此 XOSC 故障事件有具体原因吗? 此外、是否有任何方法可以禁用此 XOSC 故障/篡改事件?

    谢谢、

    Muhammad Shuaib.

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

    当您向我发布这篇最新帖子时、我将会尽可能地做出回应。    由于公司和我都不使用(或类似)您的"129级" MCU -"129级"细节必须由他人处理。

    您的帖子详细介绍了"Rev1"中明显的"正常工作"-但"Rev2"中会出现"休眠/篡改"问题。   因此、"仔细/有条不紊地回顾 Rev1和 Rev2之间的任何/所有"差异"是否对您来说没有太大意义?"   确保随每个版本一起安装的软件完全相同。

    未注明的是证明这一问题的" Rev2董事会的数量"。   单板异常"进食"时间/精力-通常是不必要的。   您对多个 Rev2板的测试-和报告-将加强您的助手的兴趣 crüe……

    您的最新文章未揭示"如何或(即使)"如果您从最新设置/测试中"移除了电源级联"。   (过去曾有过这样的建议)  您启用(引入)的"变量越多"-检测和解决(所有)问题的工作就越困难和越长...

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

    您好 CB1_MOBILE、

    感谢您花时间回复此帖子。

    我已经查看了修订版2电路板的硬件更改、没有任何可能导致我面临此问题的原因。 我们仅更改了板载外设的某些引脚。 休眠没有任何变化。 我们使用的晶体与我们在修订版1电路板中使用的晶体相同。

    我已经使用三个版本2电路板检查了休眠模式、这三个电路板都表现出相同的行为、即在 XOSC 故障事件发生时立即从休眠中唤醒。

    关于电源稳压器、无法实际移除或断开这些板载组件、因为我们没有在多层 PCB 上使用 BGA 组件进行更改所需的工具。

    谢谢、

    Muhammad Shuaib.

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

    您好、Charles、

    很抱歉回复您的问题。

    我已经开发了可在 Tiva 套件和 rev1电路板上工作的代码、但我遇到了代码问题、因为它在 rev2 电路板上无法正常工作。  在我的版本2电路板上、仪器进入休眠状态、但在 XOSC 故障时立即唤醒。 我正在查看我的硬件和代码、以查看是否有任何特定问题导致了此问题。 如果您对此问题有任何建议、请告诉我。 此外、是否有任何方法可以禁用此 XOSC 篡改事件以唤醒 MCU?

    谢谢、

    Muhammad Shuaib.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Muhammad、
    如果您为休眠时钟选择外部32kHz XOSC、则一旦启用防篡改功能、就会启用 XOSC 故障检测逻辑。 您可以尝试使用内部 HIB LFIOSC 作为休眠模式的源、以查看它是否有所不同。