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.

[参考译文] TMS570LC4357:事件软件和 GPIO 输入(RTI 或 N2HET?)的延迟

Guru**** 2451970 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/635567/tms570lc4357-delay-from-an-event-software-and-a-gpio-input-rti-or-n2het

器件型号:TMS570LC4357

大家好、  

我们使用 TMS570LC43运行、我们需要知道软件事件和 GPIO 输入边沿之间的时间。  

我们假设我们有两种解决方案:

-使用 RTI 模块:当软件事件发生时,我们可以读取 RTI 计数器,当 GPIO 边沿发出中断时,我们可以得到计数器并产生不同的结果。 问题是 CPU 在每个 ms 输入6到10个 GPIO 时的功耗。  

对于 N2HET:我认为这是可能的,但我对这个主题非常陌生,我不知道如何开始。 主要优势是 CPU 消耗为零。 您有什么可以帮助我们的东西(示例 HET 代码或 HET 指令要使用)。

非常感谢您的帮助

Alain  

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

    您能更详细地解释一下您需要什么吗? 换句话说、您提到您需要知道软件事件和 GPIO 切换之间的时间。 这种错误的做法意味着涉及 CPU、因为它正在运行软件、并且将成为事件的来源。 对吧?

    如果我解释您的第一种情形、 SW 事件将触发 RTI 读取、然后 CPU 写入 GPIO 寄存器以提升到高电平触发中断、随后读取 RTI 的时间2以计算从 SW 事件发生到 GPIO 之间的总时间 升高。 如果您要使用该方法、则由于 GPIO 数量和软件事件频率的原因、您预计 CPU 上会有显著的负载。 对吧? 您预计 SW 事件的发生频率如何? 此外、这些软件事件是否可以用于以确定性方式或至少在适合应用程序不关心延迟的时间范围内触发 GPIO 设置函数。 即、如果 SW 事件触发了一个 SWI (SW 中断)并且 GPIO 立即在该 GPIO 中被置位。 或者、如果 SW 事件与写入 GPIO 设置寄存器等的 DMA 事件相关联 这又回到了计时需要多精确的要求。

    在第二种情况下、SW 事件会以类似的方式触发 NHET 上的操作? 您如何预计在该容量中使用 NHET? NHET 可被用于生成脉冲输出或者捕捉脉冲输入。 即 PWM 输出和输入捕捉。 但它也可以做得更多。 指令集中还包含计数器、以便您可以在 NHET 代码中对脉冲或循环次数进行计数。 我不是一名 NHET 专家、但我肯定有某种方法可以在一定程度上实现您想要的功能、但我不知道时序的分辨率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、  

    我将尝试详细介绍模式。 目标是同步3个(或更多) TI 电路板。 为了实现这一点、我们的想法是在每个电路板之间使用一条分立线路、并检查它们之间的时间差异。 SW 周期将为1ms、我们希望同步时间小于10µs μ s。  

    从一个电路板上查看、它将是2个(或更多) GPIO 输入。 在周期开始时(我在上一篇文章中介绍的 SW 事件)、SW 将获得时间安排(RTI 或 HET)、启动计数器(RTI 或 HET)并提升其 GPIO。 当另一个 TI 电路板启动时是周期、其 GPIO 会上升、通过读取计数器、我们可以知道两个电路板之间的时间差。 第三个也是如此。

    我们将尝试使用尽可能低的 CPU 压缩来实现这一点。  

    使用 RTI 方法:我们将为每个输入线路提供一个中断、每1ms 一次。 每次发出中断时、我们都会得到 RTI 计数器、并在周期开始时与计数器发生差异。  

    使用 HET 方法时、我想知道的是如何在 GPIO 被提升时启动计数器、以及如何通过 SW 获取/复位该计数器。

    我希望我的解释能令人理解。  

    此致

    Alain  

     

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

    我现在明白了、我相信。

    对于 RTI 解决方案、您将使用 GPIO 中断触发 CPU 中断、然后处理 RTI、设置额外的 GPIO 输出、并读取新的 RTI 值、以推导通过的时间进行同步。 这种方法的一种可能方法是让中断触发一组以菊花链形式更改的 DMA 事务。 第一个 DMA 传输将读取 RTI 并移动到 SRAM 位置、第二个 DMA 传输将写入 GPIO 输出缓冲器/GPIO DSET 寄存器、最后一个 DMA 传输将再次读取 RTI 并移动到 SRAM。 完成后、CPU 可以执行增量计算。

    对于 NHET 解决方案、您应该能够将信号作为 NHET 通道的输入、在该通道中、您可以捕获从低电平到高电平的转换(或从高电平到高电平的转换、具体取决于您的需求)、并基于此转换、 根据环路分辨率时间启动将递增的计数器、然后将另一个 HET 通道设置为有效(高电平或低电平)、然后停止计数器并捕获该值。 请注意、这可能始终是一个一致的值、因为每条指令都将根据您配置的 LR 时间执行。 由于这个代码的执行基于一个数字时钟/逻辑、时序将是非常确定的并且任何变化将有可能超过 NHET 中任一计数器捕捉的能力。 我将与一位比我更擅长 NHET 专家的同事讨论、因此他可能会有一些想法。