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.

[参考译文] MSP430FR6047:LPM3中的功耗较高

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1084838/msp430fr6047-power-consumption-high-in-lpm3

部件号:MSP430FR6047
主题中讨论的其他部件: CC1310

您好,TI团队

____________________________________________

更新:在下面的答复中,我处理问题时,已解决了一些问题并回答了一些问题。 但提出了新的问题和澄清。 请阅读下面的答复,了解状态和更新的问题列表。

____________________________________________

我在MSP430FR6047上达到低功耗时遇到问题。 下面是设置和我到目前为止所做的工作。

它是一个包含MSP和CC1310的定制板。 CC1310向MSP驱动一个32kHz外部时钟信号。 I2C引脚也连接到CC1310。 MSP包含USS固件以及与外部时钟信号一起运行的修改。 CC1310固件由ME开发,并通过I2C控制MSP。 这非常有效,我可以设置参数并开始测量。 我现在的问题是传感器没有安装在管道上。 在这种情况下,CC1310仅驱动时钟信号,不会从MSP发出请求,功耗为750ish uA。

如果我在USS固件的主要功能中,在HMI_INIT()之前插入了__bis_sr_registor(LPM3_bits)和__no_operations(),则该程序的耗电量会降至10 uA。 只要我包含了HMI_init(),消耗就会恢复到750 uA。 所有未使用的引脚均设置为输出和低。 我已经仔细检查了所有使用的引脚是否在两侧都是低或高的,具体取决于功能。 如上所述,针脚设置正确,否则我将无法通信并拥有正常工作的传感器。

问题在于(主要) MSP未收到任何请求。

请访问以下链接: https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/USSSWLib/USSSWLibWater/latest/exports/USSLib_02_40_00_00/docs/LibUsersGuide/markdown/CodeExamples.html

您已插入到“如何实现数据表中指定的功耗”链接的链接,但该链接已失效。 也许您可以更新链接?

如果上述描述令人困惑,我可以尝试澄清。 已经测试了很多东西,很难用几行来总结。

此致Lasse

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

    您好,Lasse,

    让我深入了解一下代码,了解为什么会出现这种情况。

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

    非常感谢。

    我一直在尝试隔离问题。 首先,所有测量设备在启动时都会出现问题,如果启动正确,则电流消耗从750 uA降至200 uA。

    我还设法通过MSP上的USS固件将基准消耗降低到10-15 uA。 为此,我必须注释掉文件i2cslave.c中的Timer_startDelayedFunctionTimer(...)和I2CSlave_setRequestFlag函数中的等效STOP函数。

    也可在I2CSlave_openPort函数中使用。 设置了I2C__INIT_REQ_SIGNAL,使COMM_IRQ线路处于低电平状态,同时保持CC1310的高电平。 它可能等待来自GUI的信号,但现在在修复该问题的代码中发布。

    目前,我只是想弄清楚设置了哪些寄存器,以及它们如何影响系统,而没有从CC1310发出请求。 我不确定如果我开始提出请求会发生什么情况。

    感谢您的调查。 如果您需要我的帮助,请告诉我。 我无法从CC1310代码中提供太多信息。 但这并不是这里的重要部分-但我们认为(未确认) 8-9 uA来自CC1310。 现在的重点是MSP。 我们已经在EVAL板上看到了当前MSP代码,其功耗约为1 uA (板上晶体的32kHz时钟)。

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

    我也可以提供一些消费的屏幕截图:

    有点模糊-抱歉。 但Insert函数仅返回空白正方形。 但基线为200 uA,噪音很大。 这是在计时器功能打开的情况下(请参阅其他POST)。

    下面是相同的程序,但已注释掉计时器功能。

    14 uA时的基线,看门狗大约每5秒一次。

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

    只是有关传感器工作方式的更新。

    我将I2CSLAVE_TIMEOUT_ENABLE设置为FALSE。 计时器功能将被禁用。

    使用此设置,我能够与传感器通信,设置参数并获取ADC捕获。 通信中出现错误的倾向更大,但最大的问题是当我请求数据时。 我的CC1310代码使用semaphore_pend呼叫等待Comm_IRQ线路电压低。 然后,它期望数据包一个接一个地到达。 但是,我的semaphore_pend呼叫在收到任何数据之前超时。

    在MSP方面,我无法完全解释我观察到的内容,而只是等待

    在I2CSlave_ISR函数中将G_bI2CSlaveRequestPending标志设置为false,但不会发生这种情况。 至少我认为这是错误的?!

    使用I2CSLAVE_TIMEOUT_ENABLE = TRUE时,通信和特定数据请求都能正常工作。

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

    你(们)好 设法解决了MSP当前消耗的大部分资源的问题。 对我来说,还有一些松散的事情:-)

    • 为什么定时器功能使用200 uA?
    • 定时器功能有什么作用?
    • 您是否可以恢复原始帖子中提到的链接,以检查TI如何实现数据表中提到的低功耗-我们可能已经进行了监督。

    状态:

    • 功耗基线为12-15 uA (尚未在CC1310上工作)-这是可接受的,但仍不在目标范围内。
    • I2CSLAVE_TIMEOUT_ENABLE = FALSE =>禁用计时器功能
    • semaphore_pend()超时问题已在代码的CC1310端处理。
      • 原因是错误0x16 (HSPLL的输出频率无效)。 在开始测量之前设置参数时,该错误作为一次性错误出现。 该错误中断了CC1310上的程序流,使其在信号灯上处于挂起状态。
        • 启用计时器功能后,0x16错误不存在。 他们可能会给HSPLL留下一些时间,以便正确初始化或进行某些操作?!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉!! 没有像第一次观察到的那样完全正常工作。 如果装载了MSP程序,并且cc1310不执行任何操作或在该操作之后立即开始请求数据,则功耗在10 uA基线左右。

    这是一个新案例。 我想看看当我有一个新生产的传感器时它的性能如何。 步骤如下:

    1. CC1310已编程
    2. MSP已编程
    3. 完成MSP编程后,开始生产测试-
      1. 设置MSP参数以匹配生产测试工具
      2. 请求数据
      3. 测量2分钟,间隔2秒
      4. 停止请求数据
      5. 重复3次
    4. 生产测试后,CC1310不会从MSP发出任何请求。 最后发送的命令是'top request data'。

    在上述生产测试步骤中,电流消耗如下所示

    1. 首次测试。 基线200 uA
    2. 第二次测试。 基线10 uA
    3. 第三次测试。 基线200 uA
    4. 最后一次测试后,基线升高至800 uA。

    我认为在MSP方面很难调试这些步骤中设置了哪些引脚或模式。 当没有请求时,它应该将MSP留在LPM3中,但情况并非如此。

    如果我手动重置MSP (将引脚重置为接地),基线将返回到10 uA。

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

    最新更新

    解决了将基线消耗从10uA切换到200 uA的问题。 在HMI.c (第303行)中a

    gHMI.isLPPM启用^= 1;

    已打开和关闭LPM。 删除了它,一切都很好。

    最后一个问题是,当生产测试完成且MSP未收到任何命令时,消耗量上升到7-800 uA,结果是CC1310上的传感器控制器(SC)问题。 SC负责温度测量,并为生产测试进行初始化。 测试完成后,SC任务已停止并未初始化。 这导致硬件模块处于某种未确定状态。

    因此,要回答的问题的更新列表是:

    1. 如何正确端接SC? 调用的原始函数是:
      • scifStopTasksNbl (1 << SCIF_temperation_reads_task_ID);
      • scifUninit();(如果以上调用返回SCIF_SUCCESS)
      • 这会导致一些端接不良的硬件模块(至少根据SCIF文档),因此消耗7-800 uA。
    2. 每一次捕获的消耗量似乎都高于  39页"水流量测量的优化超声波感测计量参考设计"中所述的消耗量。
      • 您可以在下面看到1个捕获。 第一个峰值必须是UPS。 1.6万我们之后,DNS启动。 然后数据通过I2C传输。

    下面是UPS捕获的特例。 CLK init和USS init与文档相当匹配。 但是,捕获本身的峰值为4 mA,而不是文档中的2.5 mA。

    My settings (我的设置)-比较为:

    间隙:100 us (7.5 cm 管)

    脉冲数:20

    UPS和DNS间隙:16.000 (16毫秒)

    UPS0至UPS1:2000毫秒

    信号采样频率8000 kHz

    ADC过采样率:10

    拍摄时长:20 us (ish)

    开始PPG计数:3万 ns

    打开ADC计数:5000 us

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

    对不起Lasse,我的回复延迟了。  您似乎取得了一些进展,但仍有一些问题。  我想先检查当前状态。

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

    正确。 在某些情况下,我已设法将平均功耗降低到21uA。

    MSP每2秒进行一次测量。 虽然测量本身可能保持在3-4 uA的功耗范围内,但通过I2C传输数据会大大增加功耗。 为了降低到21 uA消耗,我必须首先请求数据,接收数据,然后再次停止请求,并在10秒间隔内执行此操作。 这意味着MSP仅每隔5次测量传输一次。 对于大多数情况,这可能足够好。

    我遇到的最大问题是CC1310上的传感器控制器。 在MCU编程后的生产测试中,SC打开,然后在测试完成时关闭。 这导致了高消费量。 现在,它就在左侧打开。 这不是最佳解决方案,而是优于替代方案。

    我还有其他一些事情可以改变,比如在传感器控制器温度测量间隔时,我可能会得到更多的uA。 总的来说还可以。

    上述一些问题仍未得到答复。 关于计时器的问题是某个功能中的LPM3/LPM0切换,与计时器无关-我无法理解为什么计时器应该使用200 uA。

    我仍有哪些问题的摘要:

    • 如何正确终止SC (尽管不是MSP问题)?
      • 调用的函数是:
        • scifStopTasksNbl (1 << SCIF_temperation_reads_task_ID);
        • scifUninit();(如果以上调用返回SCIF_SUCCESS)
      • 这会导致一些端接不良的硬件模块(至少根据SCIF文档),因此消耗7-800 uA。

    • MSP测量间隔是否可以设置为低于2000 ms (UPS0到UPS1间隙)? 例如5秒甚至10秒?

    • 与文档中的2.5 uA峰值相比,UPS和DNS捕获的峰值为4 uA (请参阅本文档正上方回复中的屏幕截图和设置)。 再次查看后,我猜文档显示的是平均值,我的平均值可能不是那么远? 或者你怎么看?

    总的来说,对目前的结果感到满意。

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

    您好,Lasse,

    这是我一直要了解的。  关于您发现不起作用的链接,它对我有效。  它将带我进入Wiki常见问题页面,其中包含与节能相关的信息。

    有关传感器控制器的问题必须由CC1310团队回答。  在此论坛中,我们仅支持MSP4S/432。

    使用GUI进行配置时,测量级别限制为2秒,但我相信您可以修改hmi.h文件中的值。

    关于UPS/DNS 4uA捕获,是的,您可能已经足够接近了。

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

    您好,Lasse,

    我们已经听过您的意见了一段时间,所以我假设您能够推进您的项目。
    我会将此发布标记为已解决,但如果不是这种情况,请单击"这不能解决我的问题"按钮并回复此主题以了解更多信息。
    如果此线程已锁定,请单击"提出相关问题"按钮,并在新线程中描述您的问题的当前状态以及您可能需要帮助我们解决问题的任何其他详细信息。

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

    很抱歉,我似乎错过了您已回复的通知。

    关于链接(对我来说仍然无效),作为TI员工,您是否可以访问某些文档,而其他员工却不能访问这些文档?

    出现错误信息“The processers Wiki was removed on January 152021 (处理器Wiki已于2021年1月15日被删除)”。

    如果可能,您可以发送PDF版本的文件。

    此致

    Lasse