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.

[参考译文] RM48L952:SPI ENA 功能/文档问题

Guru**** 1807890 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/574611/rm48l952-spi-ena-functionality-documentation-problem

器件型号:RM48L952
主题中讨论的其他器件:HALCOGEN

在此论坛上发布第一篇帖子、感谢您的帮助。

我在尝试设置 ENA 引脚功能时遇到问题。

我的硬件设置为:

  • RM48评估板
  • 读卡盘上的电线连接  
    • SPI1 CLK <>SPI3 CLK
    • SPI1 SOMI <>SPI3 SOMI
    • SPI1 SIMO <>SPI3 SIMO
    • SPI1 ENA <>SPI3 ENA
    • SPI1 CS0 <>SPI3 CS0

我有一个具有 halcogen 的简单项目构建、并且能够在"三引脚模式"(不用考虑 ENA 和 CS)下使用兼容模式下的 SPI 进行通信、以便在轮询模式下将一个16位字从 SPI1 (主器件)传输到 SPI3 (从器件)。  

现在、我想做一个步骤并使用 ENA 引脚(不用考虑 CS)。

我将其设置为在 halcogen 中正常工作的 SPI1和 SPI3、并在 SPI1的数据格式0中启用"等待启用"。 现在 SPI1等待 ENA、但是 SPI3从不拉低 ENA (我在示波器上看到它)并且通信从不发生、SPI1从不驱动 CLK。 主器件侧(SPI1)看起来正常、因为如果我将 SPI3 ENA 转换为 GPIO 并且我手动将其下拉、通信就会发生。

我甚至尝试在 SPI3->DAT0中写入内容、因为我认为它正在等待 TX 中的内容准备就绪、但没有任何变化。

您在我的设置中看到了什么问题吗? 您在此布局中是否看到任何陷阱?

在这种雾蒙蒙的情况下、我对 TRM SPNU503B 的文档还有两个疑问:

  •  在表24-1的受控模式列中、如果启用了 SPI ENA、则说明"接收来自外部主器件的 ENA"。 我的理解是、在这种情况下、ENA 是在受控模式下的输出、如"24.2.4 SPIENA"中所述。  
  •  在表24-9的 CLKMOD 行中、显示了对于值1 (我为 SPI1设置1以使其成为主器件)、SPI ENA 是输出。 我的理解是、在本例中、它是一个输入

谢谢

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

    您说过您在3引脚模式和5引脚模式下不使用 CS 信号。 要使用五引脚模式(CLK、SIMO、SOMI、CS 和 ENA)、 SPIENA 和 SPICS 都必须配置为功能引脚。

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、
    感谢您的回答。
    我的硬件连接为5引脚、但目前我正在尝试4引脚(CLK、SIMO、SOMI 和 ENA)。
    无论如何、我已经解决了。 问题是 SOMI 未设置为正常工作。 我这样做是因为我要在两个 RM48之间实现单向通信(不用考虑从器件的数据)。 在我看来、ENA 和 SOMI 之间的关系并不明显。
    请回答我对文档的问题吗?

    让我尝试向前迈进一步。 我将执行与应用手册 SPNA231类似的操作(使用 MibSPIP 模块的高速串行总线)。 对于我的理解、ENA 意味着"我准备好传输另一个字"、而不是"好的、我已经读取了最后一个字"。 这意味着、即使我不关心从器件的传输、我也必须用虚拟数据馈送从器件 SPI。 我计划从 MIB 缓冲区或通过将 RX 和 TX 连接到两个 DMA 通道来馈送此数据。
    我的问题是:什么保证 RX 在 TX 之前得到服务? 我担心的是、在读取 BUF 之前馈送 TX、当馈送 TX 时、ENA 变为低电平、接收中的数据丢失。
    有人能不能澄清什么机制保证两个步骤(接收和虚拟传输)之间的优先级、我在使用 ENA 时如何确保数据接收?

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

    有什么答案? 主要是因为优先考虑的问题...

    当我在没有 CPU 干预的情况下工作时、SPI 机器是否以某种方式保证了接收和传输之间的优先级? (例如、用于接收的 DMA 通道和用于发送的 DMA 通道、具有可能不同的等待时序)

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

    我应该考虑什么?

    1. 问题是愚蠢的
    2. 问题没有答案

    无论如何,现在请允许我!

    谢谢

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

    很抱歉耽误你的答复。 这实际上是一个好问题。

    MibSPI 有一个缓冲模式选项、此选项可让您指定是要等待 TX 缓冲区被服务、RX 缓冲区、还是同时等待这两者。
    如果您只想发送和丢弃接收数据、或者反之、这种方法很有用。

    不过、SPI 依赖于 DMA 通道优先级 RX 高于 TX 来确保它们以正确的顺序发生。 在诸如 LC4357的器件上、这种情况开始变得有点危险、其中 DMA 现在有两个传输单元、因此我希望您在这样的器件上使用 MibSPI 的缓冲模式来控制定序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Anthony!
    感谢我澄清这一点。 因此、我必须在 DMA 端处理优先级、这是有道理的、我将尝试。