主题中讨论的其他器件:ADS1248
工具/软件:WEBENCH设计工具
大家好、
根据我的产品要求、我想控制微控制器的功耗。
请向我建议如何启用低功耗模式(LPM0、1、2、3)。 请查看代码库并帮助我解决此问题。
请检查随附的文件以供参考。 所有使用 SMCLK 的外设 e2e.ti.com/.../Low_5F00_power_5F00_mode.c
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设计工具
大家好、
根据我的产品要求、我想控制微控制器的功耗。
请向我建议如何启用低功耗模式(LPM0、1、2、3)。 请查看代码库并帮助我解决此问题。
请检查随附的文件以供参考。 所有使用 SMCLK 的外设 e2e.ti.com/.../Low_5F00_power_5F00_mode.c
我不熟悉 WEBENCH 工具。 您在进行仿真吗?
如果您使用的是实际的 MCU:用户指南(SLAU208Q)第1.4-1.5节介绍了低功耗模式的原理。 还有一些代码示例(在名称中查找"lpm"):
http://dev.ti.com/tirex/explore/node?node=ABG2e0PYUJ7R3fBmUEL0mg__IOGqZri__LATEST
也就是说、如果没有外部电路的帮助、我不知道如何让 MSP430消耗33mA 的电流。 您使用的平台是什么? 还连接了哪些其他设备?
您好、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波特率
外设初始化:
功耗:
您好、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波特率
外设初始化:
功耗:
对于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个时钟。 从现在开始一直到现在、这是您的空闲时间。