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.

[参考译文] TMS320F280023C:对于 SCI FIFO 中断、对于 SCI 和 FIFO 的几乎完全相同的问题、是否还有其他方法可供选择

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180368/tms320f280023c-for-sci-fifo-interrupts-is-there-an-alternate-way-to-the-very-nearly-identical-question-about-sci-and-fifo

器件型号:TMS320F280023C

我的情况与相关问题完全相同、但我想问是否有替代方法来使用计时器来持续中断 CPU (因为我们通常不会收到数据包):

 是否可以通过软件"触发" FIFO 中断、以便主电机回路(以3、333Hz 的频率运行)可以检查 FIFO 计数、如果它不为零、则无论如何设置一个位来触发它?

(我们不希望为了避免资源访问冲突而直接读取它)

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

    您好、Michael、

      

    感谢您的提问!

    [引用 userid="196413" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180368/tms320f280023c-for-sci-fifo-interrupts-is-there-an-alternate-way-to-the-very-nearly-identical-question-about-sci-and-fifo "] 是否可以通过软件"触发"FIFO 中断

    从理论上讲、如果您想简单地强制 ISR 在需要时发生、可以直接通过从代码中的任何其他位置调用它来运行 ISR 函数。 棘手的部分是括号中的后续内容:

    [引用 userid="196413" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180368/tms320f280023c-for-sci-fifo-interrupts-is-there-an-alternate-way-to-the-very-nearly-identical-question-about-sci-and-fifo "](我们不想为了避免资源访问冲突而直接阅读它)

    您将需要器件上的某些器件来从 SCI 移位寄存器/FIFO 中读取数据。 DMA 不能访问 SCI、因此这不是一个选项。 但是、如果我们可以通过某种方式让 CLB 读取 SCIFO 状态的状态、那么我们可以、因为我们可以从 CLB 生成中断。

      

      

    我联系了 CLB 专家、了解是否可以访问 SCIFO 状态、然后根据该状态触发中断/函数。 请在下周周三之前回复。

      

    此致、

    Vince

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

    谢谢!

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

    您好、Michael、

    遗憾的是、CLB 和 SCI FIFO 之间没有允许这样做的连接。

    此致、

    Omer Amir

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

    感谢您的观看。  

    另一个想法/想法/问题:是否可以通过使用以下命令通过动态更改 FIFO 中断级别(TXFFIL)来实现此目的:

    SCI_setFIFOInterruptLevel (SAM_SCI_base、SCI_FIFO_TX1、SCI_FIFO_RX1);

    例如、在主循环中、它可以设置为 RX1、然后在 ISR 中、它可以设置为例如 RX9。

    动态更改 TXFFIL 值是否会干扰正常运行?  可以在 ISR 中完成吗?

    谢谢。

    -Mike

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

    尊敬的 Mike:

    因此、从理论上讲、动态更改 FIFO 级别没有任何不正确的地方。 唯一的问题是、根据您提到的情况、一旦它进入 ISR、它将停留在 RX9、直到下一次出现主循环代码。 如果可以的话、那么改变 TXFFIL 应该不是问题。

    我将在此警告您:如果您在将数据添加到缓冲区时更改 TXFFIL 值、您可能会在比预期更早(或更高)的时间触发、因为您在缓冲区准备就绪时进行了更改。

    此致、

    Vince