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.

[参考译文] MSPM0L1106:由于待机 0 和 1 而导致 ADC 采样周期出现问题

Guru**** 2935310 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1645898/mspm0l1106-issue-in-adc-sampling-period-due-to-stanby-0-and-1

器件型号: MSPM0L1106
主题: SysConfig 中讨论的其他器件

TI 团队大家好、

摘要:
由于 SYSCTL --> LowPowerPolicy、在 ADC 采样周期中出现问题 STANDBY0 和 STANDBY0。

详细信息:
application.Application.txt 附带的配置文件 

实际上、我们将 ADC 采样周期配置为 12usec(得到值约为 8usec)。
这一次、我们将电源策略配置为 SLEEP 0

尝试使用电源策略更新为待机 0 或 1 时。
尽管能够将电流消耗达到 2uA、  
ADC 采样周期增加到 20 μ s。

请提供获得的解决方案  
采样周期与睡眠 0 电源策略相同。

谢谢
Selvam  

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

    尊敬的 Selvam:

    进入 STANDBY0 时、ADC 不会自动禁用、但在该低功耗模式下不支持该 ADC。 以下是从器件数据表中摘录的内容:

    此致、
    Brian

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

    您好、Brian、
    感谢您的答复。
    在这里、ADC 禁用不是问题、我来尝试以另一种方式解释实际问题。

    禁用 ADC。
    实际上能够实现待机模式并能够从待机模式退出。
    问题是:
    将低功耗策略配置为“待机 0“后
    实际采样周期 (20us) 大于配置的采样周期 (12us)、这对我的应用来说非常糟糕。
    这是在待机模式之前和之后发生的。
    参考咬接:

    将低功耗策略配置为“睡眠 0“
    实际采样周期 (8us) 小于配置的采样周期 (12us)、这非常适合我的应用。
    这是在待机模式之前和之后发生的。
    参考 快照:

    请参阅指南、了解解决此“更多 ADC 采样周期“问题的解决方案。

    谢谢
    Selvam

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

    尊敬的 Selvam:

    我还有一些关于您的配置的问题:

    要进行确认、您在退出低功耗模式时手动启用、在进入低功耗模式时手动禁用? 您仅在 低功耗模式之外运行 ADC(假设您的电流消耗达到 2uA)?

    您如何测量采样时间? 是否在 ADC 选项的 Advanced Configuration 设置中使用了所需的采样时间和实际采样时间?

    您是否能够共享 SysConfig 文件和要修改 ADC 配置的任何代码?

    此致、
    Brian

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

    您好、Brian、

    请在下面给出答案:
    问:退出低功耗模式时手动启用、进入低功耗模式时禁用?
    答案:是的、Im 使用以下例程进入和退出低功耗模式
    空输入待机 ()

    DL_I2C_disableController (I2C_0_INST);
    DL_I2C_disablePower (I2C_0_INST);//

    DL_Timer_disablePower (TIMER_1_INST);

    DL_ADC12_disableConversions (ADC12_0_INST);
    DL_ADC12_disablePower (ADC12_0_INST);
    DL_VREF_disableInternalRef (VREF);
    DL_VREF_disablePower (VREF);
    DL_UART_DISABLE (UART_0_INST);
    DL_UART_Main_disablePower (UART_0_INST);
    }
    void exitStandby()


    DL_I2C_RESET (I2C_0_INST);
    DL_UART_Main_RESET (UART_0_INST);
    DL_ADC12_RESET (ADC12_0_INST);
    DL_VREF_RESET (VREF);
    DL_I2C_enablePower (I2C_0_INST);//
    DL_ADC12_enableConversions (ADC12_0_INST);
    DL_ADC12_enablePower (ADC12_0_INST);
    DL_VREF_enablePower (VREF);
    DL_UART_Main_enablePower (UART_0_INST);

    DL_Timer_enablePower (TIMER_1_INST);
    DL_TimerG_RESET (TIMER_1_INST);

    DL_I2C_enableController (I2C_0_INST);
    DL_UART_ENABLE (UART_0_INST);
    DL_VREF_enableInternalRef (VREF);

    SYSCFG_DL_I2C_0_init ();
    SYSCFG_DL_TIMER_1_init ();
    SYSCFG_DL_UART_0_init ();
    SYSCFG_DL_ADC12_0_init ();
    SYSCFG_DL_VREF_init ();

    }

    未使用: DL_SYSCTL_enableSleepOnExit ();

    问:您仅在低功耗模式之外运行 ADC(假设您的电流消耗达到 2uA)?
    答案:是的、在低功耗模式之外运行 ADC、能够实现 2uA 的电流。

    问:您如何测量采样时间?
    答案:通过以下步骤:
    设置 GPIO 引脚
    2. 7 个样本的 ADC 测量值
    3.清除 GPIO 引脚
    使用 DSO 测量了步骤 1 和 2 之间的时间差。

    问:是否在 ADC 选项的“Advanced Configuration“设置中使用了所需的采样时间和实际采样时间?
    答案:是、Im 使用实际和所需的采样时间
    参考 快照:

    您是否能够共享 SysConfig 文件和要修改 ADC 配置的任何代码?
    封闭的
    1.待机模式电流 2uA 的 SysConfig 文件 (syscfg_adcsampletime_notok_20usec_Standby1_2uA)、但采样周期 (20usec) 不适合应用程序 e2e.ti.com/.../syscfg_5F00_adcsampltime_5F00_notok_5F00_20usec_5F00_Standby1_5F00_2uA.txt
    2.睡眠模式电流 115uA 的 SysConfig 文件 (syscfg_adcsampletime_good_8usec_Sleep0_115uA)、但采样周期 (8usec) 很好、适合 application.e2e.ti.com/.../syscfg_5F00_adcsampltime_5F00_good_5F00_8usec_5F00_Sleep0_5F00_115uA.txt
    3、应用程序代码 (application_main_stby.c) e2e.ti.com/.../application_5F00_main_5F00_stby.c
    我们将禁用(在待机之前)和启用(在待机之后)ADC
    此外、没有任何额外的 ADC 配置。


    请提供解决方案、以解决待机模式中的 ADC 采样时间问题、
    这对我们非常重要。

    谢谢
    Selvam

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

    尊敬的 Selvam:

    感谢您提供的所有信息。  我正在重新创建您的配置、并将在接下来的几天内提供我的调查结果。

    此致、
    Brian

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

    尊敬的 Selvam:

    使用内部 VREF 进行设置时、ADC 时钟限制为 4MHz。 在该时钟速率下、SCOMP0 = 48 个周期 (12µs)、SAR 转换需要 12 个周期 (3µs)、得出总硬件转换时间为 60 个周期= 15µs

    我测得 SC 位写入和结果被加载到 MEMRES 之间的 16.35–16.36µs。 额外的 1.35µs 是 GPIO 夹层方法产生的软件测量开销、不是额外的 ADC 转换时间。

    附加的工程仅使用 ADC、GPIO、TIMER 和 VREF:e2e.ti.com/.../adc12_5F00_single_5F00_conversion_5F00_vref_5F00_internal_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

    此致、
    Brian

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

    您好、Briyan、

    感谢您的意见。
    我们将尝试此示例并进行更新。

    谢谢
    Selvam

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

    您好、Briyan、

    我们尝试了在上次响应中与我们的应用配置文件(随附)e2e.ti.com/.../Application_5F00_sysconfig.txt 共享的 ADC 代码
    在行结构: while (DL_SYSCTL_getClockStatus()& DL_SYSCTL_CLK_STATUS_MCLK_SOURCE_LFCLK);

    以下哪一个原因是什么?
        将 ULPCLK 用于 ADC
        使用 4MHz sysoc。 (在时钟树中配置)

    请参考
    根本原因可能是什么、以及
    见解。

    注意: 由于同一问题、下行也可能出现相同问题
    while (DL_SYSCTL_getClockStatus ()& DL_SYSCTL_CLK_STATUS_FCL_ON);

    谢谢
    Selvam

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

    尊敬的 Selvam:

    GPIO 切换之间出现 20us 延迟的原因主要是当器件以不同频率运行时的软件开销。 在我上次响应的情况下、SYSOSC 以 32MHz 运行。 切换到 4MHz 时、我现在看到两次切换之间大约有 21.8us。 ADC 仍然正常运行、在 15us 内完成转换、但现在 CPU 执行的指令需要 4 倍的时间。  

    我无法复制您在发现 while 循环时看到的问题、指示从 lpm 退出。 但是、我已成功修改示例以匹配您的大多数配置设置。

    可以尝试以下操作:e2e.ti.com/.../3581.adc12_5F00_single_5F00_conversion_5F00_vref_5F00_internal_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.zip

    此致、
    Brian

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

    您好、Briyan、

    很抱歉延迟响应。

    感谢试用和共享的修改代码链接

    我们正在共享链接 3581.adc12_single_conversion_vref_internal_LP_MSPM0L1306_nortos_ticlang.zip 上尝试使用项目

    完成后恢复。

    谢谢

    Selvam