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:是否可以使用中断检测 SCI 上 RX 帧的结束?

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1321702/tms320f28388d-is-possible-to-detect-end-of-rx-frame-on-sci-using-interrupts

器件型号:TMS320F28388D

我正在使用不带微控制器地址模式的 SCI。 我在接收到的每个字节上都设置了一个中断、以将其复制到缓冲区中。

我期望的是检测接收到的帧何时完成。 实际上我是 通过( SCI_getRxStatus(SCIA_BASE)和 SCI_RXSTATUS_WAKE )轮询 RXWAKE。 理想情况是在检测到 RXWAKE 上升沿时发生中断、因此我知道我已经收到了一个要分析的完整帧。

这是可行的吗? 是否有有关如何实现这一点的示例?

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

    您好,Yaroslav,

     您是否能够使用 SCI FIFO? 如果您能够使用 FIFO、那么您可以在 RX FIFO 级别设置为1的情况下启用接收中断 、以便在 FIFO 级别状态为1 (意味着 FIFO 中已接收到1个字符并准备好读取)时发生中断。 这是否会实现您尝试执行的操作?

    此致、

    艾里森

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

    否、我需要在帧结束时读取数据、而不是一个字节。 RXWAKE 执行这一操作、但实际上我将轮询它。 是否可以避免轮询以及对该标志或帧结束进行设置和中断?

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

    您好,Yaroslav,

    目的是为了澄清您是否是指  (根据 TRM、一个帧被定义为一个字节)?

    我不知道 SCI 模块中有一种硬件实现可以做到这一点。 您确切地知道每个块接收了多少帧吗?  

    此致、

    艾里森

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

    您好!  

    我还曾寻找一个 SCI 选项、在检测到通信暂停后、需要中断。 对于 RXWAKE 标志来说、生成一个中断就足够了。 但是、据我所知、SCI 没有提供此类选项。

    这个解决方案的优势是它能够在快速 SCI 通信期间大大减少 CPU 负载。 可以将 RX FIFO 设置为一个较大的值、例如15、并额外启用 RX 唤醒中断。

    在 RX 唤醒上实现中断非常重要。

    此致、
    安迪

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

    Andy、您好!

    我同意这对于 SCI 来说可能是一个有益的硬件实现。 我将注意这一点、看看我们是否能够在未来实施它。  

    如果您有任何相关问题、请告诉我。 我会告诉您、是否可以 在没有软件轮询的情况下使用其他方法。  

    此致、

    艾里森

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

    Andy、您好!

    我还没有找到与此相关的其他硬件实现、因此我将暂时关闭该线程。 如果您有任何其他问题、我们可以提供帮助、请随时打开另一个主题!

    此致、

    艾里森