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.

[参考译文] RTOS/SW-EK-TM4C1294XL:外部 SRAM 中的任务在 SPI 外设数据传输中完成

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/621703/rtos-sw-ek-tm4c1294xl-the-task-in-external-sram-get-struck-in-spi-peripheral-data-transfer

器件型号:SW-EK-TM4C1294XL

工具/软件:TI-RTOS

您好!

我们使用 TIRTOS v2_16_01_14和 BIOS 版本6_45_02_31。 我们将通过 EPI 接口使用外部 SRAM。 当我们在外部 SRAM 中定义静态分配的任务并且尝试通过 SPI 接口与外设进行通信时、有时 SPI 传输会被击中而不会完成。

当我们将同一任务移动到内部存储器时、它可以与 SPI 外设配合使用。 我们使用的是10MHz 的 SPI 波特率。

外部 SRAM 的速度为20MHz、系统时钟为120MHz。 SPI 使用 UDMA 传输数据。

当任务位于外部存储器中且该任务具有与外设的 SPI 通信功能且在 SPI 传输时遇到问题时、您能不能提出什么建议。 此问题随机发生、但很容易重现。

这是 SPI 设置。


SPI_PARAMS_INIT (params);
params.transferMode = SPI_MODE_BLOCKING;//SPI_MODE_CALLING;//SPI_MODE_BLOCKING;
params.frameFormat = SPI_POL1_PHA1;
params.bitrate = 10000000;
句柄= SPI_OPEN (Board_Dataflash_SPI、params);

谢谢。

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

    您要发送的数据缓冲区在哪里? 如果缓冲器位于外部 RAM 中、您能否将其放置在内部 RAM 中、看看这是否更可靠。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Todd、
    数据缓冲器位于外部 RAM 中。 一旦我将数据缓冲器移动到内部存储器、它就非常可靠。

    当缓冲器位于外部 RAM 中时会出现什么问题。 由于我已经共享、系统时钟频率为120MHz、SRAM 为20MHz。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我理解正确、那么您可以将任务和外部 SRAM 中的发送缓冲器连接到 EPI。 我怀疑 CPU 占用了对 AHB 总线的访问、并阻止 DMA 读取外部 SRAM。 内部 SRAM 和闪存旨在避免这种锁定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    是的、我在外部 SRAM 中同时有任务和发送缓冲器。

    移动内部存储器中的数据缓冲区并将任务保留在外部 SRAM 中、这是解决此问题的唯一方法吗?

    谢谢。