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.

[参考译文] MSPM0G1506:执行 ADC 时、AD 计数很少达到 0。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1523252/mspm0g1506-when-performing-adc-it-is-very-rare-that-the-ad-count-will-reach-0

器件型号:MSPM0G1506

工具/软件:

使用 ADC 时、AD 计数可能变为 0。
我在调试过程中只能重现问题一次、因此无法确定原因。
当我能够重现问题时、启用转换 (ENC) 已启用、并且还发生了 DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED。


在发生故障时中断可以防止问题再次发生


是否存在可能导致此问题的因素?
对一般问题表示抱歉、但提前感谢。

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

    您好、

    通常、较短的采样时间会导致 ADC 读数异常。 可以尝试使用较长的采样时间和测试。  

    此致、

    现金好

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

    谢谢你。

    我理解您的看法是、如果采样时间过短、AD 计数将为 0。
    我认为采样时间设置和硬件没有问题、但有时 AD 计数会变为 0。
    采样不正确且 AD 计数变为 0 的原因是否是未应用采样时间?

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

    您好、

    我认为这不是原因、因为 ADC 模块是独立工作的、采样时间应始终按预期应用、因为它是 ADC 模块的一部分。 我认为该问题与您在调试模式下如何处理 ADC 结果有关。 接近 ADCMEM 电阻器时可能会出现一些时序问题并导致错误。  

    此致、

    现金好

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

    您好:

    时序问题是否已在勘误表或类似内容中报告?


    我重现了问题、并确认当 AD 计数为 0 时、MEMRES 数据也为 0。
    因此、 通过使用调试操作将 CTL0>ENC 从 OFF 更改为 ON、并将 CTL1>SC 设置为 START、我能够确认 MEMRES 数据符合预期。


    ENC 是否可能处于开启状态、但转换在实际就绪之前开始、从而导致问题?
    执行 DL_ADC12_enableConversions 后、是否需要实现一个通知我已准备好某些内容的 API?

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

    您好:

    其他信息
    我没有实施 ADC 状态 REFBUFRDY 检查、这可能会导致问题吗?

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

    您好、

    关于时序问题、我的意思是它可能与调试模式有关。 它不会包括在勘误表中、因为这不是器件故障。  

    我不太了解复印过程。 您 手动 将  CTL0>ENC 从 OFF 更改为 ON、然后将 CTL1>SC 设置 为在调试寄存器接口中启动。 那么在 MEMRES 中您会得到零结果吗? 您能否帮助确认流程?

    此致、

    现金好

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

    您好:

    感谢您的答复。

    即使未处于调试模式、也会出现问题。


    当执行 ENC⇒ON 和 SC⇒START 时、MEMRES 值变为 0 以外的值。

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

    您好、

    我在这里有点困惑。 当 执行 ENC⇒ON 和 SC⇒START 时、应该在这里获得一个值。  

    此致、

    现金好

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

    您好:

    解释流程
    可以通过下面的 ⑨ μ s 确认 ADC 计数变为 0 的问题。
    当 ADC Count 变为 0 时、MEMRES 数据始终为 0。 此时、ENC 处于开启状态。


    之后、如果您将调试器寄存器更改为 ENC⇒OFF⇒ON 和 SC⇒START、MEMRES 数据将变为非零值。


    ①ADC μ s RESET
    ②ADC 启用电源
    ③delay 50us
    ④ADC Ω 禁用
    ⑤ADC Ω 设置
    ⑥ADC Ω 启用
    ⑦ADC 启动
    ⑧wait ADC MEMRESIFG 设置
    ⑨ADC 获取数据
    ⑩clear ADC MEMRESIFG
    ⑪ Loop ⑧ μ H、⑨ μ H、⑩ μ H
    ⑫Complete μ s

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

    您好:

    其他信息
    ADC 使用单通道、重复模式和平均模式。


    此外、断电模式设置为 AUTO。
    数据表显示 ADC 唤醒需要 5us。
    由于断电模式设置为 AUTO、因此您可能需要设置 SCOMP 值(考虑到 5us 唤醒时间)。

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

    您好、

    好的。 让我在下周初进行一些测试、然后给您反馈。

    此致、

    现金好

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

    谢谢你。
    我还想说一点。


    我不理解 REF 中的注释。 当 PWRDN 为 0 时的手册。


    我应该考虑在什么时候醒来?
    如果您有任何示例代码、请分享它。

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

    您好、

    本注意事项意味着如果您将 ADC 断电策略配置为 AUTO、则需要使用更长的采样时间配置来覆盖 ADC 启用时间。  

    如果您选择使用手动模式、则无需关注此注释。

    此致、

    现金好

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

    谢谢你。


    采样时间是否仅在转换开始后考虑一次?
    在重复模式下执行转换时、是否必须考虑采样时间?


    如果您将其设置为手动、则会担心功耗会增加。
    目前我使用的是 Auto、因为数据表中未提及它。

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

    您好、

    它只需在开始转换后的采样时间考虑一次。 您不需要在重复模式下考虑它。  

    是的、与自动模式相比、使用手动模式会增加功耗。

     此致、

    现金好

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

    您好:

    感谢您回答我的基本问题。
    关于 SCOMP 问题、我们已确定这不是问题的原因、因为正在使用重复模式。


    请继续提供以下方面的反馈:
    e2e.ti.com/.../5871188

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

    e2e.ti.com/.../TEST_5F00_adc12_5F00_internal_5F00_temp_5F00_sensor_5F00_mathacl_5F00_LP_5F00_MSPM0G3507_5F00_nortos_5F00_ticlang.zip

    您好:

    我通过修改示例工程重现了相同的问题。


    这可能很难理解、但您能用它来检查吗?

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

    您好、

    好的。 我将对这个项目进行测试、然后向您提供反馈。

    此致、

    现金好

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

    确认的状态是什么?
    我希望尽快提供反馈

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

    您好、

    很抱歉晚回复。  

    您的帖子和代码的描述不匹配。 我不知道为什么您在 while 循环中使用不同的设置来调用 DL_ADC12_configConversionMem 两次。 但是、在将 ADC 从 AUTO 触发器修改为软件触发模式后、通过调用 DL_ADC12_setSampleTime0 (ADC12_0_INST、41) 使用更长的采样时间; 我不会在我这边观察到任何问题。

    此致、

    现金好

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

    尊敬的 Cash Hao:

    感谢您的答复


    为了便于处理、会调用 DL_ADC12_configConversionMem 两次、如果将其整合到一次调用中、则不会出现问题。


    您是否确认了能够通过操作寄存器(ENC 关闭→打开、SC 启动)来检索数据?
    您可以通过在第 125 行 DL_ADC12_getMemResult 设置断点来检查此情况。

    我想确切地了解问题是什么。


    感谢您提出解决方案。
    问题仍然不清楚、但为什么更改采样时间和软件触发模式可以解决问题?

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

    您好、

    我将在此处分享修改后的测试代码。 您可以比较这一个的差异。  

    e2e.ti.com/.../7851.TEST_5F00_adc12_5F00_internal_5F00_temp_5F00_sensor_5F00_mathacl_5F00_LP_5F00_MSPM0G3507_5F00_nortos_5F00_ticlang.zip

    此致、

    现金好

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

    尊敬的  Cash Hao:

    感谢您的鼓励。


    如果您在第 118 行中指定 SCOMP 设置、如下所示:
    DL_ADC12_setSampleTime0 (ADC12_0_INST、5);
    adcResult [0]记录值 224、但 adcResult [1]~adcResult [99]为 0。

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

    您好、

    这仅意味着采样时间不足以设置为 5。 您需要更长的采样时间配置。  

    此致、

    现金好

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

    尊敬的  Cash Hao:

    感谢您的答复。


    问题 1
    将 ADC_MEMCTL.TRIG 更改为手动模式是否与 AD 计数变为 0 有关?


    问题 2.
    这是一个需要知道采样时间较短的问题。
    即使采样时间为 5、如果手动设置 ADC_CTL0.PWRDN、AD 计数也不会变为 0。
    这是为什么?

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

    亲爱的  Cash Hao

    问题 1
    将 ADC_MEMCTL.TRIG 更改为手动模式是否与 AD 计数变为 0 有关?


    问题 2.
    这是一个需要知道采样时间较短的问题。
    即使采样时间为 5、如果手动设置 ADC_CTL0.PWRDN、AD 计数也不会变为 0。
    这是为什么?

    我想知道这项确认的状态。

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

    您好、

    1.我认为触发模式不会影响 ADC 采样。 我使用手册是因为我可以更轻松地控制流程。  

    2.当  ADC_CTL0.PWRDN  为手动模式时、除非在软件中调用禁用 ADC 函数、否则不会禁用 ADC。 禁用和重新启用 ADC 会产生额外的时间、此处需要更长的采样时间。  

    此致、

    现金好