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.

[参考译文] TMS320F28375S:TMS320F28375S CLA 中的精确延迟(以 ns 为单位)

Guru**** 2531950 points
Other Parts Discussed in Thread: TMS320F28375S, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1420836/tms320f28375s-accurate-delay-in-ns-in-cla-of-tms320f28375s

器件型号:TMS320F28375S
Thread 中讨论的其他器件: C2000WARE

工具与软件:

大家好!

我目前正在处理 TMS320F28375S 的 CLA (C28x CLA)、它在200 MHz 上运行。 我需要实现非常精确的延迟、即125纳秒的延迟、但在实现该精度水平方面面临挑战。

我想 在 CLA 中以250纳秒的速度切换 GPIO 引脚。 (高125ns 和低125ns)

我已尝试__asm(" MNOP");在 for 循环中使用内联汇编命令来创建延迟。 但是、我可以实现的最小延迟大约为2微秒、明显高于我所需的延迟。

是否有人使用 TMS320F28375S 上的 CLA 成功实现了100ns 范围的延迟?

您可以建议哪些特定技术或方法有助于减少延迟?

使用不同的指令还是修改环路结构会提高精度?

非常感谢您提供任何见解或建议!

提前感谢!

Muzammil Qureshi

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

    尊敬的 Muzammil:

    是否存在使用的特定原因/必要性 CLA 执行该操作?

    如果您只是尝试以250ns (4MHz 频率)的速度切换 GPIO、则可以使用我们的 ePWM 模块非常简单地完成此操作。 您可以让 ePWM GPIO 在 PWM 周期的一半处于"开启"状态、在 PWM 周期的一半处于"关闭"状态、从而产生125ns 的导通时间和125ns 的关断时间。 如果您不熟悉我们的 ePWM、请了解以下一些材料。 如果您认为 ePWM 视频/文档/示例有用、我们有几个介绍:

    此致、

    Allison

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

    您好、Allison、

    感谢您的答复以及与 ePWM 模块相关的宝贵资源。

    我的目标是使用 CLA 实现这一精确计时、原因是我要实施 SSI (同步串行接口)协议。 具体而言、我需要切换时钟引脚(GPIO 输出)以 接收数据、并在每个时钟周期读取数据引脚(GPIO 输入)。 这涉及到 接收12位数据和12个时钟脉冲、我要求该操作以非常快的速度执行。

    虽然 ePWM 肯定是生成 PWM 信号的有用工具、但我需要灵活地直接控制 SSI 协议的时钟时序、以确保准确的数据接收。 如果您有关于如何使用 CLA 或 C2000架构内的其他方法实现此计时的任何进一步建议或见解、我将不胜感激。

    再次感谢您的帮助!

    此致、
    Muzammil Qureshi

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

    尊敬的 Muzammil:

    请参阅 此处链接的主题 、获取有关如何使用 C2000器件实现 SSI 协议的建议。 您可以查看 F2837xS 数据表 (第6.12.5.1节"SPI 电气数据和时序")中的 SPI 规格、以查看其是否满足您的要求。 或者、如果您想切换到 F2838x 器件系列、已经有了内置 SSI 外设。

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您的建议和提示我 SPI 规格。 但是、我已经在 TMS320F28375S 上开发了整个代码、并且我的 PCB 已经过完全汇编、并且所有外设都已经完成测试。 遗憾的是、在此阶段切换到不同的控制器是不可行的。

    我的整个控制逻辑在 CLA 中实现、而 CLA 在100 µs 上触发。 在给定该设置的情况下、我不确定是否可以在 CLA 中使用 SPI、是否可以使用 SPI。

    鉴于此、我想知道是否有任何选项可用于在 CLA 中手动实现 SSI 协议。 我的目标是以200到300纳秒的速率切换 GPIO 引脚。 是否可以通过 CLA 实现这种级别的计时精度、或者您是否可以建议使用可能有帮助的特定技术?

    感谢您的帮助和见解!

    此致、
    Muzammil Qureshi

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

    尊敬的 Muzammil:

    更简单的选择肯定是使用 SPI 外设、这样就不必在 CLA 内实施临时通信外设、因此我仍然建议使用 SPI 模块、并查看您是否可以针对 SSI 协议仅连接 CLK 和 SIMO 引脚(因为除了两个额外的引脚连接外、这些协议似乎是相同的)。  对于此器件、SPI 的最大速度是25MHz、因此应该可以进行大约~8MHz 的 GPIO 切换(每125ns)。 您可以在 CLA 中完全完成这一操作、因为 CLA 可以访问 SPI 模块并可以对其寄存器进行读写、并且可以在准备好写入更多数据时由 SPI 触发。 如果您希望使当前 CLA 任务实现每100us 触发一次、则可以在该任务内轮询 SPI FFTX 字段、直到有足够的空间写入您要发送的字符数。

    对于手动实现、 我认为这些计时 在理论上应该是可能的。 CLA 基于 SYSCLK 计时、并有自己的一组指令和执行。 因此、从技术上说、如果您能够在一条单周期 CLA 指令中编写所有 GPIO、那么最大速率将是每5ns 编写一次。 但是、还需要考虑其他时序、例如 计算下一个要写入的数据位的时间。 很难将这些范围缩小到一个精确的时间范围、从而为 SSI 通信获得一个一致的速度。 我还认为编译器会尝试在这样的循环中优化 NOP、因此手动延迟是不可靠的。

    总体而言、使用 SPI 模块可能是实现 SSI 通信的最简单方法、因此我强烈建议对其进行研究。

    此致、

    Delaney