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.

[参考译文] TMS320F28377S:SPI FIFO 填充至 CLK 输出延迟

Guru**** 2473270 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/786530/tms320f28377s-spi-fifo-fill-to-clk-out-delay

器件型号:TMS320F28377S

您好!

SPI 时序有疑问。  

在填充 FIFO (例如一个字)以启动发送后、SPI CLK 何时可以具有第一个脉冲输出? 我们发现、它在不同的波特率下是不同的。

SPI 用于连接具有严格延迟请求的从器件。  

非常感谢。

BR、Jordan

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

    约旦

    您是否在谈论"TD (SPC) M 延迟时间、SPISTE 激活至 SPICLK "? 根据 DS、我们只有最小延迟数。 我们没有最长延迟时间。

    TD (SPC) M 是 tc (SPC) M (SPICLK 周期时间)的函数。 因此、Td(SPC) M 随波特率的变化而变化并不奇怪。

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manoj、
    延迟是固定的还是在不同的发送操作之间变化?
    我们进行了如下测试:
    1) 1)延迟1~3 us
    2) 2)填充 FIFO、然后开始发送
    如果延迟介于1~3us 之间、则1)和2)的总时间相同、类似于12us。 如果超过4us、则1)和2)的时间约为17us。

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

    抱歉、您可能需要澄清您的问题。 我不太理解。 我们所讨论的参数是否与我在上一篇文章中提到的参数相同。

    您谈论的延迟时间(1~3us)是多少?

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

    Manoj、

    当 n = 0/1/2/3时、结果相同。 我们想知道原因。

    下面是详细信息。 或者、您可以跳过前两张图片、直接转到第三张图片。  

    硬件连接如下:

    P1是 SPI 模块、P2是一个芯片、它可以选择 Tx 和 Rx 之间的哪个芯片可以通过 CS_RT 连接到 Data+和 Data-、P3是编码器。

    在我们的程序中、首先我们需要将一个 Get 位置顺序传输到编码器、然后通过将 CLK 传输到编码器来接收位置数据。 由于 P1是主器件、P3是从器件、因此 CLK 始终由 SPI 生成。

    我们使用了 FIFO 模式。

        操作顺序如下:

        编码器中的数据只存在几次、因此我们想知道将0x55写入 TxBuffer 和产生第一个时钟信号之间的时间(作为时间 TN)。

        然后、我们发现 DELAY_us (n)在 n = 0/1/2/3时无效、TN 是一个常量值、仅当 n=4、TN 被更改时才有效。 SPI 波特率为200kHz。

        我们对此感到困惑、以下是我们的测试结果:

        当 n = 0/1/2/3时、结果相同。 为什么?

    当 n = 4时、结果与 n = 0/1/2/3时不同

    BR、Jordan

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

    我在上一篇帖子中的问题:-

    1) 1)我们是否在讨论数据表中的"TD (SPC) M 延迟时间、SPISTE ACTIVE to SPICLK "参数?

    2) 2)CS_RT 是否与 SPISTE 信号相同? 我想您使用 GPIO 作为 SPISTE 信号、而不是 HW SPISTE 信号。 我是对的吗? 如果是这样,“TD (SPC) M 延迟时间,SPISTE 激活到 SPICLK”在这里不适用。 此计时仅适用于使用 HW SPISTE 信号的情况。

    3) 3)黄色的探测线是否对应于 CS_RT 信号?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manoj、
    1)不,很清楚 Td(SPC) M 延迟时间。 ‘D,问题是库函数“elay_US(n)”。 ‘D在图2中可以看到,“elay_US(n)”会延迟大约 n us 的时间,但在通过 SPI 传输数据之前使用它时,我们发现这不能正常工作。 由于特殊的时间要求、我们需要从 CS_RT 变为低电平到产生第一个时钟之间的时间。 我们使用了 Dealy (n)来确保 CS_RT 变为低电平、然后我们发现了一个无法理解的问题。 当 n = 0/1/2/3时、延迟时间相同、当 n = 4时、时间会大幅增加、结果在图片3和图片4中。
    2)否、CS_RT 是一个 GPIO、用于控制切换 SPI 数据传输方向的芯片。 当 CS_RT 为低电平时、数据从编码器传输到 DSP、当 CS_RT 为高电平时、数据从 DSP 传输到编码器。 开关芯片不在 DSP 中。
    3)是、黄色探针线为 CS_RT 信号。

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

    感谢您的澄清。 由于您使用 GPIO 作为 SPISTE 信号,因此数据表参数 TD (SPC) M 延迟时间,SPISTE 对 SPICLK 有效”不适用于此处,如我在上一篇文章中所述。

    关于延迟函数的问题、我很难在不知道您是如何配置 SPI 外设例程的情况下进行评论。 我认为问题不在于延迟程序。 这可能是在延迟函数之后配置 SPI RX 函数的方式导致了这种行为。

    此致、
    曼诺伊