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.

[参考译文] TMS320F28377D:读取 SCI FIFO。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1050480/tms320f28377d-read-sci-fifo

器件型号:TMS320F28377D

您好、查姆斯、

如果我们尝试读取 RX FIFO 数据、并且在平均时间 RX 移位寄存器将数据传输到 SCIRXBUF 中。

我们是否可以读取刚刚从移位寄存器中移动的数据、而不是 FIFO 中的数据?

此致、

Luke

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

    您好、Luke、

    感谢您的提问! 当您从缓冲区(移位寄存器)中读取数据时、它始终获取先入数据。 当您读取缓冲区时到达的所有其他数据仍在缓冲区中等待。

    无法直接读取其他 FIFO 位置、因此绝不能意外读取刚刚移入 FIFO 的数据。 您将始终从缓冲区中读取稳定数据。

    此致、

    Vince

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

    Vince、

    根据我的理解、当我们启用 FIFO 模式时、错误位 SCIRXST.bit.FE 和 SCIRXST.bit.FE 仍然有效、并且将与移位寄存器数据一起保存到 FIFO 中。

    然后、我们可以使用 SCIRXBUF 读取 FIFO 中的数据、检查 SCIFFFE 和 SCIFFPE 位以了解在接收到该字时发生了什么类型的错误、我的理解是否正确?

    Luke

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

    您好、Luke、

    您回答正确! 当错误发生在 FIFO 中时、SCIFFFE 和 SCIFFPE 位被置位、而不仅仅是当你从 SCIRXBUF 中读取时。 因此、它将在收到您提到的字时发生。

    此致、

    Vince

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

    尊敬的 Vince:

    根据 TRM、FE 和 PE 错误位可通过 SW 复位或系统复位来复位。 因此、当错误发生且用户不执行软件复位时、FE 和 PE 错误位将与 RX 移位寄存器中的数据一起保存到 FIFO 中、这是正确的吗?

    因为接收 FIFO 寄存器需要保存 FE 和 PE 错误位、所以有10位宽的寄存器、对吧?

    此致、

    Luke

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

    您好、Luke、

    为了避免混淆、我想澄清一下、有两组不同的位:

    Edit+Correction:能够快速确认 SCIFFFE 和 SCIFFPE 位是否按字符存储在 FIFO 中、因此您的语句中是正确的:

    [引用 userid="114524" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1050480/tms320f28377d-read-sci-fifo/3888524 #3888524"]因为接收 FIFO 寄存器需要保存 FE 和 PE 错误位,所以有10位宽的寄存器,对吗?

    此致、

    Vince

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

    尊敬的 Vince:

    以下是我的理解、如果有任何问题、请纠正。

    即使在 FIFO 模式下、SCIRXST 的 FE 和 PE 位仍然工作、这意味着当组帧错误时 SCI 模块设置 FE 位、当奇偶校验错误时设置 PE 位、那么这两个位将与 RX 移位寄存器中的数据一起保存在 FIFO 中、这意味着、

    T1:WORD1已接收-->将 word1、Fe1和 PE1保存到 FIFO1中。

    t2:wordc2 received -->将 wordc2、FE2和 PE2保存到 FIFO2中。

    t3:接收到 wordc3 ->将 wordc3、FE3和 PE3保存到 FIFO3.... 等等。

    当客户使用 SCIRXBUF 读出 FIFO 数据时、首先读出 FIFO1、这意味着 SAR 字段为 word1、SCIFFFE 为 Fe1、SCIFFPE 为 PE1、如果客户再次读出 SCIRXBUF、则会读出 FIFO2、然后读出 FIFO3等。

    在 FIFO 模式下、SCI 将数据保存到 FIFO 中、当接收到字数据时、SCIFFFE 和 SCIFFPE 是错误位(状态)、这就是 RX FIFO 寄存器为10位宽的原因。

    我的理解是否正确?

    此致、

    Luke

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

    您好、Luke、

    您的陈述似乎正确! 如果您有任何后续问题、请告诉我。

    此致、

    Vince

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

    Vince、

    根据您提供的 E2E 主题、客户希望在 FIFO 模式下清除 SCIFFFE 和 SCIFFPE 位。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/933753/tms320f280049-how-to-clear-scirxbuf/3463358#3463358

    我不太明白这一点。 如果我们说 SCIFFFE 和 SCIFFPE 位来自 FE 和 PE 位、用于指示在 FIFO 模式下接收到数据字时的错误状态、客户不需要清除这两个位、它是否正确?

    此致、

    Luke

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

    您好、Luke、

    我认为客户只是想从这些位清除错误状态、而这相对不必要。 我将验证这一点、请在本周结束前收到回复。

    此致、

    Vince

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

    您好、Luke、

    在与设计讨论之后、在大多数情况下、不需要清除 SCIFFFE/SCIFFPE 位、除非您出于任何原因不希望设置这些错误位。

    由于 FE/PE 位提供相同的信息、因此您可以利用这些位。

    此致、

    Vince

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

    Vince、

    我看到、感谢您提供的所有详细信息。

    此致、

    Luke