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.

[参考译文] MSPM0G3519:MSPM0G3519:从 MEMRES0 读取数据时升高 UVIFG 标志(即使标志 MEMRESIFG0 之前已升高)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1609700/mspm0g3519-mspm0g3519-uvifg-flag-is-raised-when-read-data-from-memres0-even-though-flag-memresifg0-is-already-raised-before

器件型号: MSPM0G3519

尊敬的 TI 团队:

目前我有一个问题、当我开始 ADC 转换时、我在轮询模式下检查标志 MEMRESIFG0。 发出此标志时、我知道数据已就绪。 但是、当 I 访问 MEMRES0 中的值时、返回值为 0、且 RIS 中发出 UVIFG 标志。 您是否有任何提示说明如何解决此问题?

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

    尊敬的 Khanh:

    我已经对这种情况进行了一些测试、它与 ADC 结果回读通话记录有关。

    我假设您使用以下内容来读取 ADC 存储器:

    adc12->ULLMEM.MEMRES[idx];

    使用 ull apeture 读取是异步的、以便 CPU 读取行为会导致 I test 时出现下溢标志。

    调用以下 API 可以解决该问题:

    __STATIC_INLINE uint16_t DL_ADC12_getMemResult(
        const ADC12_Regs *adc12, DL_ADC12_MEM_IDX idx)
    {
        volatile const uint32_t *pReg = &adc12->ULLMEM.MEMRES[idx];
    
        return (uint16_t)(*(pReg + DL_ADC12_SVT_OFFSET));
    }

    SVT 孔径具有与 CPU 的同步时钟、可提供更快的同步寄存器访问行为、所有 SDK 相关 API 都使用 SVT 孔径读回 MEMRES 值。

    B.R.

    Sal

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

    你能解释更多关于义肢和 SVT 义肢吗? 2 种方法之间有什么区别?
    从您的 API 中、我看到您使用指向 MEMRES 地址的指针、然后您将其返回。 我是对的吗?

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

    尊敬的 Khanh:

    ADC 寄存器有两个访问路径。

    ULL 连接使用 ULPCLK 作为时钟源、SVT 连接使用 MCLK 作为时钟源。

    CPU 基于 MCLK、因此 在 CPU 访问 SVT 设备时会同步、 可以避免同步逻辑导致的潜在问题。

    从您的 API 中、我看到您使用指向 MEMRES 地址的指针、然后您将其返回。 我是对的吗?

    您可以在 SDK driverlib 中找到 API、我们在库中提供 SVT apeture 地址偏移量。

    B.R.

    Sal

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

    谢谢你。 我总是想知道 driverlib 中的“SVT"引用“引用是关于什么的。