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.

[参考译文] LAUNCHXL2-RM57L:256字节 SPI 至 EMIF 异步传输

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/594872/launchxl2-rm57l-256-byte-spi-to-emif-asynchronous-transfer

器件型号:LAUNCHXL2-RM57L
主题中讨论的其他器件:HALCOGEN

大家好、

我想从 SPI 接收256个字节、并通过 DMA 引擎将它们传输到连接到 EMIF 接口的 SDRAM。

目前、我已经设法利用 SPI 传输组、以便以异步方式向处理器内存接收高达128字节的数据。 但是、我无法在单个异步 Rx 中接收更多数据、因为这是与 SPI 接口关联的传输组的最大大小。

请告诉我以下两个问题:

  1. SPI 传输能否直接 DMA 到 EMIF 总线?
  2. 是否可以将 SPI 传输增加到256字节?

祝你一切顺利、

Angelos

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

    Angelos、您好!

    [引用 USER="Angelos Spanos54"]是否可以直接将 SPI 传输指定给 EMIF 总线?

    否 数据必须在定义的可寻址存储器或寄存器之间传输。

    [引用 user="Angelos Spanos54"]是否可以将 SPI 传输增加到256字节?

    如您所述、MibSPI 传输组被限制为最大128个 MibSPI 缓冲器。 这是硬件限制。

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

    你好、Chuck、

    非常感谢您的回答。 RM57L 文档是指"通道链"。 我们是否可以使用通道链功能触发 DMA 传输、传输组的内容将传输到 EMIF 总线。

    祝你一切顺利、

    Angelos

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

    要说明的是、EMIF 总线是什么意思? 从技术上讲、我认为 EMIF 将被视为具有指定 CPU 可访问存储器地址的扩展存储器。 因此、为了清零、DMA 可以从 MibSPI RAM 位置传输到连接存储器的 EMIF 地址范围内的地址。 很抱歉、有任何混淆、但对我来说、这不是从内存传输到 BUD、而是从内存传输到外部内存位置。

    在信道连接方面,这是一项相当复杂的工作。 我认为这应该是可能的,但我从未这样做过。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    感谢您的澄清。 是的、我现在明白了。 最初、我想将数据直接传输到传输组以外的存储器位置。 但是、我现在知道这是不可能的。 MibSPI 将始终在那里传输数据、并且我必须将数据从那里复制到另一个位置。

    此外、是否可以动态更改传输组大小、还是仅在初始化期间完成? 理想情况下、我希望能够在 mibspiInit 期间设置最大值、然后能够在运行时更改最大值。

    祝你一切顺利、

    Angelos

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

    从理论上讲、虽然我从未见过它发生变化、但只要 MibSPI 当时处于空闲状态、它应该是有可能的。 原因是 MibSPI RAM 不足、无法为要传输的每个数据块设置单独的传输组、还是没有足够的传输组可用? 对于 MibSPI、为每个单独的数据块设置传输组将更加实用和传统。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    非常感谢您的支持。

    我现在可以使用最大尺寸。

    问题是、当我发送 SPI 消息时、我希望具有可配置的突发大小。 因此我希望突发大小为1、2 3、4、... 64字节。 这是否可以通过传输组实现?

    祝你一切顺利、

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

    如果我理解正确、您需要根据要在特定 TG 中发送的消息的有效载荷大小来更改 TG 大小。 为此、我建议在 OneShot 模式下使用 TG (请参阅寄存器 TGxCTRL 的寄存器说明)。 此外、在不使用 TGX 和 TGX+1时、使用相邻 TG 中的 PSTRT 定义来改变正在使用的 TG 的长度。 要确定是否正在使用 TG、请使用寄存器 LTGPEND 的 TG_IN_SERVICE 字段。

    请注意、这超出了通过 HalCoGen 支持的 MIBSPI TG 的正常使用案例、因此这意味着您需要进行定制以实现它。 我还注意到,正如我以前所说,我以前并不知道这一点,尽管根据 MIBSPI 的描述看来是可行的,但我们没有这种实施的有效性的背景。 如果给定 CPU 交互量、我不确定在中断模式下使用标准 SPI 时的增益。