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:MibSPI 传输组无法发送24位数据。

Guru**** 2442090 points
Other Parts Discussed in Thread: TMS320F28377D, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1280064/tms570lc4357-mibspi-transfer-group-unable-to-send-24-bit-data

器件型号:TMS570LC4357
主题中讨论的其他器件:TMS320F28377D

大家好!

我正在尝试与需要我的 SPI 来发送和接收24位数据的外部器件进行通信。

我使用的是缓冲器数量设置为3的多缓冲模式。

以下是我的配置:
1) Charlen = 8

2) 2) CSHOLD 位=置位

3) CSNR 设置正确。

4) 4) SPIDELAY 的所有字段均设置为0。

5) 5)具有 CS 的四引脚配置、无使能引脚

6) 6) SPI FMT 寄存器的 WDELAY 字段设置为0

观察结果:

获取持续时钟脉冲、直至收到一个字节的数据、间隔约为70ns、后跟另一个字节。

这是该内容的屏幕截图。
在这里、黄色是 SDI 引脚上的数据线、蓝色是 SCLK。

我的期望是我应该持续获得24位、即3字节的时钟脉冲。

请引导我。

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

    Pratik、您好!

    我最近处理了一个类似的主题、您能验证一下吗?

    (+) TMS570LS3137:发送多个24位传输组-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的答复。

    我完成了您分享的主题。

    在本例中、我不使用 DMA。 请帮助我提供不具有24位 DMA 传输的一些示例。

    另外、在本例中、我不希望发送两个字节之间的时钟脉冲有延迟、如下图中带蓝色箭头所示。

    请指导我这样做。

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

    Pratik、您好!

    我创建了不使用 DMA 的24位传输示例、如下所示:

    e2e.ti.com/.../MibSPI_5F00_24bitTransfer_5F00_LC4357.zip

    我曾尝试通过配置不同的模式来消除传输之间的延迟、但仍然存在120ns 的最小延迟。

    可能是序列发生器延迟、您能否在最后尝试一下?

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    谢谢本示例、 我尝试运行示例、对于我来说、延迟大约为70ns。
    此处附件是示波器的屏幕截图。
     ,  

    如您在第二个图像中所见、在每个字节之后、时钟延迟约70ns。
    注意:蓝色是时钟线、黄色是 MOSI 线。

    除此之外、我还尝试了运行 DMA 示例、观察结果在这方面也是一样的。

    谢谢。此致、

    普拉蒂克

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

    Pratik、您好!

    您可以在第二个图像中看到,在每个字节后,时钟延迟约70ns。

    我认为我们无法进一步降低此延迟、

    我们可以通过增大 WDELAY 值来增大该值、但不能再减小该值、因为我们已经将 WDELAY 配置为0。

    我们可以通过将 VCLK 频率增加到最大值110Mhz 来

    由于所有这些延迟都仅取决于 VCLK 频率、且 VCLK 频率可配置为最大110Mhz

    只需将其增加到110Mhz 并进行一次测试、这是理想情况下我们将获得的最小 CS 去活动时间。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我在 TMS320F28377D 微控制器中对 SPI 进行了类似尝试、以下是延迟和无延迟的屏幕截图。 (SPI-C、FIFO 模式、无中断、无 DMA)-详情请参见以下主题: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1232356/tms320f28377d-spi-fifo-mode/4687046?tisearch=e2e-sitesearch&keymatch=%252520user%25253A448206#4687046

    您是否暗指这在 TMS320F28377D 中可行、而在 TMS570LC4357中不可行?

    谢谢你。

    G·辛格

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

    尊敬的 Gobind Singh:

    您是否暗指这在 TMS320F28377D 中是可能的、而在 TMS570LC4357中是不可能的?

    这是不可能的、因为此处器件直接不支持24位传输、并且仅支持最大数据字长度16位右。

    因此、为了传输24位 数据、我们在这里使用三个8位数据 传输和 CSHOLD。 即使我们在这里使用 CSHOLD、我们必须在传输之间获得一定的停用时间、 并且我们无法完全消除此延迟。 如果器件直接支持24位传输、 则无法看到这样的任何延迟、但遗憾的是、它最多只支持16位传输。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的回复。

    简单来说、TMS320F28377D 也仅支持16位数据传输。 在代码中、我发送了64位、字长等于8位。 总共8个字。 我认为这两种情况是相同的。

    此外、TMS570LC4357的 MibSPI 比 TMS320F28377D 上的 SPI 接口更先进(更多选项/设置/寄存器)。 不确定两个字传输之间不能有零延迟。

    谢谢你。

    G·辛格

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

    尊敬的 Gobind Singh:

    简单来说、TMS320F28377D 也仅支持16位数据传输。 在代码中、我发送了64位、字长等于8位。 总共8个字。 我认为这两种情况是相同的。

    此外、TMS570LC4357的 MibSPI 比 TMS320F28377D 上的 SPI 接口更先进(更多选项/设置/寄存器)。

    [/报价]

    没错、但在 TMS320F28377D 器件中、我未看到任何延迟参数、如 T2CDELAY、C2TDELAY 和 WDELAY

      

    您可以看到、WDELAY 的最小2VCK 周期将始终存在、并且我们无法完全消除它。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    TMS320F28377D 中有延迟、但延迟可以为0:

    如您所指、对于 TMS570LC4357、最小延迟为2个 VCLK 周期。  我懂了。

    谢谢。

    G·辛格

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

    尊敬的 Gobind Singh:

    TMS320F28377D 中存在延迟,但延迟可设为0:

    是的、正确。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我明白我们无法完全消除两个8位传输之间的延迟。
    因为控制器支持16位传输。
    我的问题是、我们能否在 MibSPI TG 中使用两个缓冲器、如(16、8)。
    因此、在从从器件接收24位数据时、第一个16位将进入第一个缓冲器、另一个将进入第二个8位缓冲器。


    这个线程讨论的是相同的: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/263971/spi-dma-throughput

    我怀疑、如果我配置两个 FMT 寄存器、在接收到前16位后它将如何切换缓冲器。

    如果可能、您可以帮助我完成该实现。

    提前感谢。

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

    Pratik、您好!

    我认为这种方法是不可能的。

    例如、我们将通过一条 CS 线路从从从器件接收24位数据、我们如何将前16位数据复制到第一个 TG、将后8位复制到另一个 TG。 我们不能像这样将 TG 连接起来。

    这是我对 MibSPI 的理解上不可能实现的方法。

    如果至少有多条 CS 线路

    然后、我们可以使用一个 CS 控制一个 TG、使用另一个 CS 控制另一个 TG、但此处的情形是不同的。

    --
    谢谢。此致、
    Jagadish。