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.

[参考译文] WEBENCH®︎工具/MSP430F5659:如何启用低功耗模式

Guru**** 2562120 points
Other Parts Discussed in Thread: ADS1248

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/890288/webench-tools-msp430f5659-how-to-enable-low-power-modes

器件型号:MSP430F5659
主题中讨论的其他器件:ADS1248

工具/软件:WEBENCHRegistered设计工具

大家好、

根据我的产品要求、我想控制微控制器的功耗。

请向我建议如何启用低功耗模式(LPM0、1、2、3)。 请查看代码库并帮助我解决此问题。

请检查随附的文件以供参考。  所有使用 SMCLK 的外设 e2e.ti.com/.../Low_5F00_power_5F00_mode.c

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

    大家好、

    我的应用现在使用20MHz 时钟、功耗为107mW。 是否有机会使用低功耗模式降低功耗?  

    请帮助我解决此问题。  

    谢谢、

    Krishna

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

    我不熟悉 WEBENCH 工具。 您在进行仿真吗?

    如果您使用的是实际的 MCU:用户指南(SLAU208Q)第1.4-1.5节介绍了低功耗模式的原理。 还有一些代码示例(在名称中查找"lpm"):

    http://dev.ti.com/tirex/explore/node?node=ABG2e0PYUJ7R3fBmUEL0mg__IOGqZri__LATEST

    也就是说、如果没有外部电路的帮助、我不知道如何让 MSP430消耗33mA 的电流。 您使用的平台是什么? 还连接了哪些其他设备?

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

    您好、Krishna、

    正如 Bruce 提到的、MSP430的电源编号列在数据表中。  低功耗模式可降低平均功耗、但这取决于应用、取决于您可以保持模式的时间百分比以及从睡眠状态唤醒以执行任务的速度。   

    Bruce 还链接了代码示例、让您了解如何实现低功耗模式。

    让我们知道您有哪些后续问题。    

    谢谢、

    JD

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

    JD、您好!

    感谢 JD 和 Bruce 的宝贵支持、

    很抱歉耽误您的回答、  

    我正在使用低功耗模式。 按照 Bruce 的建议、实施了 LPM 模式。  

    由于新冠疫情影响了每个人在家工作。 到目前为止、我还没有任何设置来测量控制器功耗。

    将很快分享结果。

    到目前为止、控制器在3.3V 电压下的功耗为40mW。 目标值为20mW。  

    在家里安全

    谢谢、

    Krishna

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

    MSP430本身13mA 仍然非常高[参考数据表(SLAS700D)第5.4节]。 我想您会看到与外部器件的交互、其中包括:

    1) 1)通过您正在测量的电源为(相对)大功率外部器件供电。

    2) 1)个或多个引脚发生总线冲突(沿相反方向行驶)。

    如果发生这种情况、使用 LPM 的改进将受到限制。 您可能只需使用代码+原理图便可推断出其中的大部分内容。

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

    您好、Bruce、

    感谢您的宝贵支持。  

    到目前为止、我们使用的是20MHz 微控制器时钟。 所有外设使用 SMCLK。 请参阅以下模块(外设初始化)

    我们不会进入任何应用、只是使用 while 环路与所有外设(SPI- 2MHz、I2C - 400kHz、UART-115200)、3.3V (27.39mW)时的功耗为8至8.3mA。  请参阅 Main.c 文件

    在没有 LPM 模式的情况下是否有机会降低功耗?

    请检查我的初始化、并告知我是否需要更改初始化时间。 请参阅 Main.c 文件。   

    // 请参阅随附的 Main.c 文件//

    void main()

         configureHardware();//根据应用程序初始化所有外设-

         while (1); //在3.3上消耗8到8.3 //27.39mW

    应用:-在应用中、我们应该监控来自外部 ADC 的数据、并且处理值应该显示在 LCD 上。 根据处理值、我们应该使用其中一个 DAC 来运行4-20mA 电流、还可以在500ms 周期内控制一些外部模块。

    1) 1)使用两个 SPI,每个 SPI 连接到两个在不同模式和帧数据包格式下运行的外部从器件。

    从一个从器件移至另一个从器件时、我们应在运行时重新配置 SPI。 SPI 速度2MHz

    SPI 0- UCB0- LCD 和 DAC161

    SPI 1- UCB1- ADS1248和 SD 卡

    2) I2C- UCB2- 4从设备(EEPROM、DAC4728、AD5254、MCP4726)、速度400kHz

    3) 3) 1ms 和5ms 计时器  

    4)内部 ADC (12位)

    5) UART- UCA1 - 115200波特率

    外设初始化:



    功耗:

    e2e.ti.com/.../883728.Main.c

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

    您好、Bruce、

    感谢您的宝贵支持。  

    到目前为止、我们使用的是20MHz 微控制器时钟。 所有外设使用 SMCLK。 请参阅以下模块(外设初始化)

    我们不会进入任何应用、只是使用 while 环路与所有外设(SPI- 2MHz、I2C - 400kHz、UART-115200)、3.3V (27.39mW)时的功耗为8至8.3mA。  请参阅 Main.c 文件

    在没有 LPM 模式的情况下是否有机会降低功耗?

    请检查我的初始化、并告知我是否需要更改初始化时间。 请参阅 Main.c 文件。   

    // 请参阅随附的 Main.c 文件//

    void main()

         configureHardware();//根据应用程序初始化所有外设-

         while (1); //在3.3上消耗8到8.3 //27.39mW

    应用:-在应用中、我们应该监控来自外部 ADC 的数据、并且处理值应该显示在 LCD 上。 根据处理值、我们应该使用其中一个 DAC 来运行4-20mA 电流、还可以在500ms 周期内控制一些外部模块。

    1) 1)使用两个 SPI,每个 SPI 连接到两个在不同模式和帧数据包格式下运行的外部从器件。

    从一个从器件移至另一个从器件时、我们应在运行时重新配置 SPI。 SPI 速度2MHz

    SPI 0- UCB0- LCD 和 DAC161

    SPI 1- UCB1- ADS1248和 SD 卡

    2) I2C- UCB2- 4从设备(EEPROM、DAC4728、AD5254、MCP4726)、速度400kHz

    3) 3) 1ms 和5ms 计时器  

    4)内部 ADC (12位)

    5) UART- UCA1 - 115200波特率

    外设初始化:



    功耗:

    e2e.ti.com/.../6320.Main.c

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

    对于20MHz 下的程序旋转(工作模式)、8mA 是一个合理的测量值。 听起来您只能安排测量 MCU。

    作为一个非常简单的实验、将您的 while (1){LPM0;}替换为"while (1)}"循环、然后再次测量。 您应该会看到电流下降;我在数据表中没有看到这个特定的数字(20MHz LPM0时的电流)、但我猜是2-3mA。  

    您可以执行非 LPM 操作来降低电流、但与 LPM 提供的效果相比、效果相对较小。 例如、配置未使用的引脚可能会为您提供0.3mA 的电流。 这些是您应该为他们自己做的事情、但可能还不是。

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

    您好、Bruce、

    我们在3.3伏的电压下测量整个 MCU。  

    实验:-

    1)//单 while 循环- - 3.3V = 18.15mW 时的功耗为5.5mA

        void main()

        {while (1);}

    2)//具有 LPM0的单个 while 循环- 3.3V 时的功耗为1.3mA = 4.2mW

        void main()

        {

    while (1)

    _bis_SR_register (LPM0_bits);//输入 LPM0//不执行任何操作/

    }  

    但我的应用必须持续监控来自传感器的数据、并且必须显示在 UI 上、还必须控制行业中的高精度器件。  

    例如、如果我使用 LPM0、控制器应处于睡眠模式 xms (毫秒)并被中断唤醒以执行应用的其余部分、 我对吗? 如有任何问题、请更正。  

    目前、我在应用中使用 LPM0模式来测试与工作模式相比、电流将降低多少。 并且每20毫秒唤醒一次。 运行应用程序。 在这种情况下、我面临性能问题(即 观察到时间滞后)

    在激活模式下、更新 UI 上的新值需要500ms、执行 LPM0后、需要2秒以上。  

    在没有低功耗模式的情况下、是否有机会降低3.3V 上 MCU 的功耗。  

     主要问题是必须持续监测和控制外部敏感器件。  

    请指导我并建议 我

    实施:-

    1) 1)微控制器的第一步、配置为所有 GPIO 的输出引脚、然后在该主初始化开始后执行。  

    2) 2)一次性使用后禁用外设。

    3) 3)运行时间启用和禁用外设。  

    注意:-现在我们在印度处于锁定阶段、我们目前还没有适当的硬件设置来进行测试。 将在4月14日之后分享准确的结果。  

    谢谢、

    Krishna

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

    该实验的重点是为 LPM (0)可以实现的目标提供一个基线。 这是一个有用的数字。

    如果您不想使用 LPM、至少应参阅用户指南(SLAU208Q)第1.4-6节中的指南。 正确配置未使用的引脚(第1.6节)会产生明显的差异。 其他一些方法、例如减慢时钟速度和降低 Vcc、可能不适用于您的应用。

    LPM 的重点是找到空闲时间--当程序没有任何事情可做时--并在该时间内使 CPU (可能还有其他事情)空闲。 可能是您的应用程序(与程序相比)没有空闲时间-此类应用程序存在,但它们很少。 更有可能、您的应用程序具有空闲时间、但它在您的程序中隐藏。

    您提到您必须"持续"地为设备提供服务、这并不完全正确。 由于您的程序正在执行其他操作、它无法(真正)持续地为设备提供服务。 我在这里不是“玩文字游戏”--重点是每个设备都有一个最短的服务周期(>0),在此期间,其状态不会改变;比这更频繁地处理它(例如旋转环路)是一种浪费,CPU 也可能空闲。 您的设计/规格文档和/或外部器件的数据表中可能描述了此最短使用期限。

    简单地说、对于400kHz 的 I2C、一旦您为它提供 Tx 字节、您就不会从它听到(20*2.5*9位)=450个时钟的声音、因此直到那时、您还没有任何需要查看的地方。 同样,当您启动 SD 卡的 DMA 时,它将在 CPU 需要检查它之前至少运行8位*(Brw=1)*512bytes=4096个时钟。 从现在开始一直到现在、这是您的空闲时间。