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:SPI 传统模式、无 CS、仅 CLK、数据从机速度限制为在75MHz VCLK 上有效通信速率达11Mbps。

Guru**** 2470350 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1161060/tms570lc4357-spi-legacy-mode-no-cs-just-clk-and-data-slave-speed-limitation-to-11-mbps-effective-communication-rate-on-a-75-mhz-vclk

器件型号:TMS570LC4357

您好!

我有两个 PCB 彼此面向、它们使用高速 LVDS 接口(在时钟和数据线路上)进行连接、从端(电路板 B)在捕获主端(电路板 A)发送的数据时遇到困难。

电路板 A 的传输和电路板 B (从器件侧)上的接收使用传统模式下的 SPI 和 DMA。 时钟极性为1、时钟相位为0。 VCLK 为75MHz

如果我使用15Mbps 时钟速率、则必须设置373ns 延迟(WDEL 格式字段= 0x1A)最小值才能实现良好的通信。

如果我使用25Mbps 时钟速率、则 必须设置720ns 延迟(WDEL 格式字段= 0x34)最小值 才能实现良好的通信。

在示波器上、在所有配置中、正确发送28 16位字符的总时间为50µs μ s。

因此、我无法获得比这更好的性能、我对有效速率在所有情况下都远低于15Mbps 的原因感到困惑。

如果我不使用 DMA、只发送一个字符(16位)、我会遇到相同的问题。  如果我减小 WDEL 值、我会在 BUFR 寄存器中读取垃圾邮件。 如额外位或丢失位。

6 VCLK 规则不适合应用、因为6 VCLK @ 75 MHz 是80ns。  

这里没有 CS、因此我不使用格式的保留功能。 时钟通常为高电平、然后下降、数据就绪、时钟上升、应仅捕获位值。

但我在 SPIBUF 寄存器中遇到了垃圾。  我已经尝试了所有时钟和极性组合、并在 SPIBUF 中获取不同的捕捉数据错误。  

发送的16位字符值为0x2222、当处理所有极性和相位组合时、我将得到:8888、1111、9111、4444。

如何提高这条简单的主从链路的有效性能?

 

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

    尊敬的 Rene:

    1、SPI 时钟的额定速率是15mbps 还是25Mbps?

    Wdelay 是两次传输之间的延迟: (WDELAY+2)×VCLK

    3.您的设置中有什么 C2TDELAY 和 T2CDELAY? CS 低电平到 SPI 时钟边沿之间的延迟为(C2TDELAY+2)×VCLK、和(T2CDELAY+1)×VCLK

    [引用 userid="468695" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1161060/tms570lc4357-spi-legacy-mode-no-cs-just-clk-and-data-slave-speed-limitation-to-11-mbps-effective-communication-rate-on-a-75-mhz-vclk "]发送的16位字符值为0x2222,我在使用所有极性和相位组合时得到:8888、1111、9111、4444。

    请增加  C2TDELAY

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

    1) 1)任一速度均受我们的硬件支持。  让我们根据25Mbps 比特率计算任何设置。

    2)是(WDEL)

    3)其默认值。 我 没有使用 C2TDELAY/T2CDELAY、因为 CS 相关且我没有使用任何 CS。  

    我是否仍然应该配置 C2TDELAY?

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

    在主模式下、NCS 用于选择从器件。 在从模式下、NCS 用于启用/禁用传输。 如果只有一个从站、则不必使用 NCS。

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

    如果 SPI=15MHz、发送28个16位字将需要大约41us:

    (28-1)*延时+28*16个周期+28*CS 延时(3个周期)

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

    正如我所建议的、请在您的示例中使用25MHz。

    为什么在公式中使用 CS 延迟、因为没有使用任何 NCS 线路?

    作为对我之前问题的回答、请为 C2TDELAY、T2CDELAY 和 WDEL 提供时序计算值。

    谢谢。

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

    C2TDELAY、T2CDELAY 被插入、即使芯片选择引脚未被使用。 您能否发布2个16位字传输的波形?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #个传输   延时 比特率:15MHz CS 延迟
     =(Wdelay+2) PVCLK 66.6666667 3VCLKS
    1 373.3333333 1066.66667 40
    28. 10080 29866.66667 1120 41066.66667
    #个传输   延时 比特率:25MHz CS 延迟
     =(52+2) PVCLK 40 3VCLKS
    1 720) 640) 40
    28. 19440 17920 1120 38480
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    等待内部支持人员探测这些信号。  

    同时、您能否解释一下为什么规格日内有8KB 的 DCAN2 RAM、并且使用 DRA 位、我只能访问4KB 的 RAM? 无法初始化 FF1C1000及更高版本。

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

    为了提供波形、我打算不使用 WDEL、而只使用 C2TDELAY 和 T2CDELAY。  请提供我将用于测试的 C2TDELAY 和 T2CDELAY 值、并在可能的情况下提供波形。

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

    如果将 WDEL=0、C2TDELAY 和 T2CDELAY = 0x0A、 则基于前28个字符 DMA 的传输速度非常快、缓冲区内容和 CRC 校验均正常。

    第二 个28字符 DMA 传输在 BTC 中断时未完成、我在缓冲区中缺少1个字符。  缺少第二个字符。 我当时期待的是0x5609 0x0A0B 0x0C0D.... 我正在获取 0x5609 0x0C0D 0x0E0F ...

    我正在使用旁路模式并为 RX 通道提供高优先级。 我将 SPI 请求保持连接到 DMA。  我将保持 DMA 请求映射到 SPI。  我只是禁用硬件请求。  我正在通过 HWCHENAS 寄存器启动 DMA。

    对于较大的 WDEL、我没有丢失任何数据、总传输时间要长得多。

    我将尝试获取它的示波器快照

    是否知道为什么我会错过第二个字符?

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

    Missing transmit of second character

    我重新引入了 WDEL 值、它只能在 WDELAY = 38及以上时工作。

    即禁用或启用 C2T 和 T2C 延迟。

    因此、它可以高速工作、但仅当 WDELAY = 38时、我不会丢失第二个字符。

    上图确认缺少第二个字符的传输。  因此、这说明了为什么不接收。

    什么会导致此字符丢失?  来自 SPI 的额外请求脉冲因 DMA 未就绪而丢失、来自 SPI 的请求丢失?

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

    The DMA & SPI after full exchange.

    在这种交换之后、SPI2在中断模式下发送一个字符并由 SPI3接收。

    然后、DMA 用于使用链路在每个电路板上同时发送和接收相同的数据。

    无 FIFO、使用 BYPASS、并且在接收时优先给 SPI3。  SPI2 TX 位于 DMA 通道3上、SPI3 RX 位于 DMA 通道2上。

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

    TMS570LC43x 上的 SPI 可在高达25MHz 的频率下运行。   为了使 SPI 或 MibSPI 从器件有足够的时间将接收 到的数据从移位寄存器复制到 SPIBUF 或 MibSPI RAM、需要使用各个帧之间的延迟时间(WDELAY)、反之亦然、 并为 DMA 提供时间、以便将 数据从 SPIBUF 或 MibSPI RAM 复制到 SRAM。 如果时序过于激进、则 会导致数据丢失。

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

    同意、但我不会丢失第一次传输的数据。  TMS 正在执行它的任务。  它是第二个基于 DMA 的传输、仅遗漏了第二个字符的发送。   这是因为在 DMA 管道中发送了一个额外的 DMA 请求。  第一个是额外的。  第二个是来自 SPI 的良好信号、写入0x0A0B、如果没有较大的 WDEL 延迟、它将被来自 SPI 的第三个信号覆盖、以通过0x0A0B 写入0x0B0C 结束。  因此、我可能必须清除一个额外的 DMA 请求。  为什么 DMAREVID 显示为:0x4A0D3802、而不是0x4A0D0003、如规范第726页所示?

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

    在 BTC 上首次 DMA xmit 后、挂起(第725页)被认为被清除。  不是。 然而、我确实获得了 BTC 中断、数据被发送(在另一端被确认接收)、并且 读取 BTCAOFFSET 寄存器会清除挂起的中断。  为什么 PEND 位仍然置位?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="468695" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1161060/tms570lc4357-spi-legacy-mode-no-cs-just-clk-and-data-slave-speed-limitation-to-11-mbps-effective-communication-rate-on-a-75-mhz-vclk/4369199 #4369199"]为什么我的 DMAREVID 显示:0x4A0D3802而不是0x4A0D0003、如规范第726页所示?

    是的、它是0x4A0D3802。 位15:11是保留位。 次要修订版本号是2、而不是3、这是一个拼写错误。