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.

[参考译文] TM4C129ENCPDT:EPI 操作 SDRAM 影响输入捕捉 CCP、导致频率跳变

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1309063/tm4c129encpdt-epi-operation-sdram-affects-the-input-capture-ccp-causing-frequency-jumps

器件型号:TM4C129ENCPDT

大家好、

以下是客户可能需要您的帮助的问题:

我使用 CCP 管脚的输入捕获功能捕获50Hz 信号的上升沿、并根据两次捕获之间的时间差计算信号周期。

如果未使用 EPI 来扩展 SDRAM、则计算精度可满足0.002Hz 的精度要求。 扩展 SDRAM 后,频率将跳变,因为模拟量的瞬时值将存储在 SDRAM 中,频率为50*16或50*64Hz。

推测在读取和写入 SDRAM 或 SDRAM 刷新时总线被占用、或者中断被暂时关闭、这会导致 CCP 管脚的输入捕获时间不准确、从而导致最终计算得出的信号周期不准确并引起转换。

--

谢谢、此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果不使用 EPI 来扩展 SDRAM、计算精度可满足0.002Hz 精度要求。 SDRAM 扩展后、频率将跳变、因为模拟量的瞬时值将存储在 SDRAM 中、频率为50*16或50*64Hz。
    推测读取和写入 SDRAM 或 SDRAM 刷新时总线被占用、 或者中断暂时关闭、导致 CCP 管脚的输入捕获时间不准确、导致最终计算的信号周期不准确、并导致转换。

    你好,耶鲁,

     50Hz 意味着20ms。 这意味着将每20ms 捕获一个边沿并生成一个中断。 另外,还说要写入 SDRAM 的周期是50*16或50*64。 这两个值之间存在4倍的差异。  现在、看看 SDRAM 刷新周期、即64mS。 如果将64除以20、结果大约为3.2。 这似乎与两个不同的周期(50*16与50*64)相关。 换言之、当捕获到另外3个边沿时、可能会由于刷新周期而等待对 SDRAM 的写入。 您应该能够使用逻辑分析仪来查看在刷新周期处于活动状态时发生了多少个边沿。  

     我建议您在将数据发送到 SDRAM 之前先对数据进行缓冲。  

    11.4.2.2刷新配置
    刷新次数也取决于外部时钟速度和每个模块的行数
    作为刷新周期。 RFSH 域代表选择一个外部时钟之前保持多少个外部时钟周期
    需要自动刷新。 普通公式为:
    RFSH =(刷新周期/行数)/外部时钟周期
    通常刷新周期为64ms、即64000 μs。 行数通常为4096或8192。 为
    EXT_CLOCK_PERIOD 是以 μsec 表示的值、通过将1000除以时钟速度得出

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

    尊敬的 Charles:

    感谢您的答复。 客户的回复:

    可能我上面描述的问题没有突出重点。  

    输入捕捉是一个硬件模块。 当配置的边沿到达时、硬件会自动保存当前定时器的值、然后根据上次捕获的定时器值和这次在中断或轮询中捕获的定时器值来计算两次之间的间隔时间。 然后计算信号频率。

    现在的问题是 SDRAM 的外部扩展影响输入捕捉、也就是说、当边沿跳变发生时由硬件自动捕获的定时器值不是发生跳变时的瞬时值。

    上面的回复提到了 SDRAM 的更新时钟、比如64ms。 这由硬件决定、不能更改。 我在上一个问题中提到的50*16或50*64Hz 只是指我在 SDRAM 中保存或读取数据的频率。 这也可以是任何其他频率、例如随机定义 SDRAM 中的一些变量。 程序操作变量可以是随机的、但如果以这种方式使用它、自动输入捕获将不准确、从而导致计算的信号频率误差更大。

    --

    谢谢、此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在的问题是 SDRAM 的外部扩展影响了输入捕获,也就是说,当边沿跳转发生时硬件自动捕获的定时器值不是发生跳转时的瞬时值。

    你好,耶鲁,

     您是使用 SDRAM 来存储数据、还是在 SDRAM 之外运行代码?

     我不能将定时器输入捕获与正在进行的 EPI 操作真正关联起来。 定时器模块和 EPI 是相互独立的。  我能想到的唯一一件事我在上一个答复中解释过、就是当一个定时器输入捕捉检测到一个边沿时、它将生成一个中断。 处理器应该为中断提供服务。 如果由于任何原因、定时器中断被禁用或  在刷新过程中处于读取操作的中间。 这可能会将 CPU 的读取保持在等待状态。 我建议您通过观察波形来了解这种情况、即在 SDRAM 刷新周期的过程中发生了多少个输入边沿。