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.

[参考译文] RM57L843:与 NOBRK 结合使用的 MIBSPI DMA

Guru**** 2481465 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/687987/rm57l843-mibspi-dma-in-combination-with-nobrk

器件型号:RM57L843

您好!

我正在优化 Mibspi 外设的吞吐量、发现传输组大小为128的 MIBSPI 是性能最高的。 每次传输结束后、外设返回完成并递减 ICOUNT、直到 ICOUNT 为0、此时我知道传输完成。  

我还试验了 NOBRK 模式、该模式将使用 BUFID 并调用 DMA 操作并自动递增 ICOUNT、传输将在 ICOUNT 为0前不会返回。 这很好、因为在传输所有数据之前我不必为外设提供服务、但我一次只能访问1个字、因为 NOBRK 只在单个缓冲区上运行。 这最终比128字 DMA 传输+处理的吞吐量要低得多。  

我的问题是、是否要将这两者结合起来? 我尝试将这两者结合起来、但最终结果是、当到达 BUFID 时、序列发生器会调用 DMA、并且存储器已正确填充、ICOUNT 按预期递减、但 BUFID 不会复位以发送上一个、现在已填充新数据、 传输缓冲器。  

示例:

数据={1、2、3、4、5、6、7、8、9、0}

TG 大小2、DMA 大小、2、BUFID、1、 ICOUNT 5.

输出:{1、2、-、4、-、 6、-、8、-、0}  

最终 MIBSPIRAM.TX ={9、0}

到达 TX[1]后、序列发生器保持在 TX[1]。 我想知道、当 ICOUNT 递减时、是否有一个模式或选项将序列发生器复位到 TX[0]。  

谢谢!

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

    如何触发 MibSPI 传输? 如果缓冲区中的数据通过 MibSPI 传输、序列发生器应该使用 TX[0]作为下一个 DMA TX 传输的 tsrating。

    BTW、NOBRK 用于可能包含多个缓冲区的传输组
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用以下命令触发它:

    mibspiREG5->TGCTRL[0]|= 0x80000000U;  

    我观察到的行为是 NOBRK 用于特定的 RAM 缓冲区。

    如果您可以提供 NOBRK 的示例代码、该代码可与数据长度大于1的 MIBSPI 传输组一起使用、这将是一个很好的答案。

    谢谢!

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

    明天早上、我将进行快速测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、有任何有关此内容的更新吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dmitri、

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

    我假设您已经解决了这个问题。 如果您仍然遇到相同的问题、请打开一个主题并发布您的测试案例、以便我们重现此问题。 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我最后使用的 Mibspi 组为2、其中元件2使用 NOBRK 进行设置。 如果我的传输少于2个元素、我使用传统 SPI。  

    这个设置为我提供了与大型 MIBSPI 组相同的性能。