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.

[参考译文] TMS320F28388D:通过 CLB 为 SPI 外设提供时钟

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1431920/tms320f28388d-clocking-an-spi-peripheral-via-clb

器件型号:TMS320F28388D

工具与软件:

您好!

我正在使用来自 CLB 生成的时钟的 SPI 时钟(SPI-CLK)设置 SPI 外设。

为了测试此配置、我尝试使用 SPI 环回模式。 SPI 设置显示在附加的配置映像中。

以下是我的设置的详细信息:

  • 我已经通过 CLB 生成时钟(1MHz)、并通过 GPIO 将该信号连接到 SPI CLK 引脚。
  • SPI PTE 引脚也通过 GPIO 接地。
  • 我使用示波器监控所有这些信号。

当 SPI 处于控制器/主模式时、在 CLB 时钟与 SPI CLK 引脚断开连接的情况下、环回正常工作。

但是、当我将 SPI 切换到外设模式并将 CLB 时钟连接到 SPI CLK 引脚时、SPI POCI 引脚(MISO)保持高电平。 我已经验证了 SPI TXBUF 和 SPIDAT 寄存器的内容。 而 SPI TXBUF 显示预期值时、SPIDAT 的读数始终为0xFFFF。

非常感谢您对可能导致此问题的原因有任何见解。

是否可以在外设模式下使用环回模式和 SPI?

谢谢!

此致、

Wilko.

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

    尊敬的 Wilko:

    "我是你的女人,我是你的女人。" 看起来 CLB 生成的时钟正常工作、并使用了一个跳线将 CLB CLK 连接到 SPI 的输入。 对于 SPI 内部环回模式、SPI 在内部连接 PICO 和 POCI、而忽略 GPIO 上发生的情况。 如果要使用 GPIO 连接、则需要禁用 SPI 环回模式。

    此致、

    Aishwarya.

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

    您好、Aishwarya、

    感谢您的答复。

    我在这个问题上取得了一些进展、但没有完全解决。 CLB 输出在内部连接到 SPI 时钟。 我禁用了环回模式、但这并没有解决问题。

    接下来、我试验 SPI 时钟、延长其工作持续时间。 这种方法产生了一些有用的见解:我发现 SPI 只有在经过足够数量的时钟周期后才会开始发送数据。 具体而言、在本例中、SPI 需要13个时钟周期、然后 SPI 外设才开始发送数据。

    鉴于这种行为、我的后续问题是:什么可能导致如此严重的延迟、是否有办法减少这种延迟?

    此致、

    Wilko.

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

    尊敬的 Wilko:

    感谢您提供这些附加信息。 您是否始终看到13个时钟周期? SPI 确实有设置时间要求、这是 SPI 可以开始传输之前的最短时间、但不这么长。 您能否再次验证 SPI 配置? 屏幕截图中仍然是相同的。 您可以参阅有关这些时序要求具体细节的数据表。

    此致、

    Aishwarya.

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

    尊敬的 Aishwarya:

    是的、始终有13个时钟周期、SPI 配置与屏幕截图中所示的相同。

    我怀疑我的时钟可能有问题、或者时钟可能有同步问题。

    此致、

    Wilko.

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

    Wilko,

    因美国假期而延迟、我们对此深表歉意。 CLB CLK 看起来可能与 SPI 模块不同步。 验证以下各项、如果您有任何问题、请告诉我。

    1. 使用示波器验证 CLB 生成的 SPI CLK 是否具有正确的时序、特别是当将其发送到 SPI CLK 引脚时、它是否符合与用户配置的极性、相位、频率等相关的数据采样要求。 此时钟需要遵循数据表中有关设置、上升等时间的时序要求。
      1. 这一点很重要、因为 SPI 模块和 CLB 时钟需要同步、以便 SPI 能够正确地对传输的数据进行采样、然后对其进行读取。
    2. 确保用于 SPICLK 的 GPIO 在外设模式下配置为输入。 在 CLB 侧、确保将时钟正确路由到此 GPIO。
    3. 验证用户配置的极性、相位、频率等在 SPI 和 CLB 中是否一致。 如果尚未启用、我会禁用环回模式、因为此模式通常假设 SPI 处于控制器模式。

    如果上述操作无法帮助解决问题、则 CLB 配置和时钟生成可能存在问题。  如果您能够提供这些相关的详细信息、我还会再来找我们的 CLB 专家谈谈 CLB 配置

    此致、

    Aishwarya.