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.

[参考译文] AM625:请求协助在启用了 DMA 的 TI AM625 SK 上将 25MHz SPI 的字节间隙增加到 250ns (SDK 09.02.01.09)

Guru**** 2813875 points

Other Parts Discussed in Thread: AM625

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1599278/am625-request-for-assistance-in-increasing-inter-byte-gap-to-250-ns-for-25-mhz-spi-on-ti-am625-sk-with-dma-enabled-sdk-09-02-01-09

器件型号: AM625

我正在使用 TI AM625 SK EVM 一个定制板上、使用 SDK 09.02.01.09 我的项目。 我正在运行 SPI 通信 25MHz 一方 DMA 启用以传输数据。

在我的当前设置中、可以观察到 SPI 数据集之间的字节间隙是多少 160ns (对应于 25MHz 时的 4 个时钟周期、每个时钟周期为 40ns)。 但是、对于我的应用、我需要 将字节间间隙增加到约 250ns 这在 25MHz 时大约为 6 个时钟周期。

为了尝试调整 DMA 行为、我修改了DMA_MIN_BYTES中的参数 /drivers/spi/spi-omap2-mcspi.c文件、将其更改自 160 最终目的 8. 。 这样做是为了尝试微调 DMA 处理。

我仍然无法实现所需的字节间差距。 非常感谢您对如何继续进行的任何见解或指导!

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

    尊敬的 Aswin:

    假设通过波形可以看到 160ns 的字节间隙、请与我分享一个相同的波形。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    对延迟的回复表示歉意。

    是的、字节间隙是使用逻辑分析仪/示波器波形测量的。 我捕获了两个波形并附上了该图。

    当 SPI 以运行时、连续字节之间始终观察到间隙 启用 DMA 。 这就是我得出的结论:字节间隙当前固定为~160ns 的原因。

    我的要求是将这一差距增加到大约 250ns(~6 个时钟周期) 。  

    谢谢

    Aswin Balaji

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

    尊敬的 Ashwin:

    根据波形、结果如下所示:如果字节假设为 A、B、C、D 等。

    然后您会观察到:a <–160ns->B <–160ns->C 等、您需要将这个数字斜升到 250ns。

    我认为这是你的要求。

    我在介绍 TRM 时发现、很少有寄存器位可以帮助您解决问题、但它们都没有定义您的要求。

    其中一些更接近您的要求:

    MCSPI_CH0CONF 寄存器:

    此外、您可以尝试更改频率、看看它是否有助于增加这个数字? 例如、请尝试以较低或较高的频率查看此数字是否在不同的频率范围内变化。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的答复。 我想澄清我的确切要求、因为似乎有一个小的误解。

    我的问题是 并不是关于 SPI 帧或数据集之间的间隙 、但具体来说就是 当 CS 保持置为有效时、连续 SPI 时钟突发之间的空闲间隙(字节间隙)

    根据随附的波形:

    • 绿色 =片选 (CS)

    • 黄色 = SPI 时钟 (SCLK)

    • SPI 时钟频率为 25MHz 所以 1 个时钟周期= 40ns  

    • 16 次转换一次  SCLK 脉冲 时钟停止

    • 这是一个 空闲间隙~160ns(~4 个时钟周期) 下一个时钟开始之前开始计时

    • 我需要 将此空闲时钟间隙从~160ns 增加到~250ns 大致对应 25MHz 下的 6 个时钟周期 (DMA  启用)
    • CS 仍然存在 持续低电平 在整个传输期间(DMA 已启用)

    • 我指的是差距 之间的传输间隔 、不是在逻辑字节之间 (A→B→C)、而不是通过更改 SPI 频率。

    • 无需更改 CS — 置为有效至 CLK START。   

    谢谢、
    Aswin Balaji

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

    您好、Aswin、

    感谢您提供的详细意见、我们将让另一位更熟悉 Linux SDK 的专家为您解答您的主题。

    由于相关专家将在下周晚些时候离职、因此预计会延迟回复。

    感谢您的理解。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

     专家关于在 CS 保持置为有效时将空闲时钟间隙从~160ns 增加到~250ns 的任何更新?

    谢谢!
    Aswin

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

    您好、

    任何更新。

    谢谢!
    Aswin

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

    尊敬的 Aswin 和 Vaibhav:

    在 McSPI 外设本身中、只有 TURBO 函数用于控制传输间隙。

    我认为 4 个时钟已经对应于 TURBO 停用、但只是为了以防您可以检查 MCSPI_CHxCONF 寄存器中的 TURBO 位是否为 0?

    如果该位已经为 0、则可以降低时钟速度或从 DMA 切换到中断模式。

    此致、

    Stan