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.

[参考译文] TMS320F28335:TMS320F28335 SCI FIFO 是否使用发送/接收缓冲器?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/980209/tms320f28335-does-tms320f28335-sci-fifo-use-the-transmit-receive-buffer

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

在上面的句子中、"当 FIFO 被启用时、TXSHF 在一个可选的延迟值(SCIFFCT)后被直接执行、TXBUF 不被使用。"

然后、"当 SCI 启用 FIFO 模式时、写入 SCITXBUF 的字符将排队进入 SCI-TXFIFO、并且在 SCI-RXFIFO 中接收到的字符可以使用 SCIRXBUF 重新发送"。

我无法完全理解这些句子以及 SCI 的类型。

据我了解、有三种 SCI。

轮询

2.中断

3. FIFO

我不知道它们之间的区别是什么。

我知道什么是轮询、中断、FIFO、但在 SCI 中、有何区别? 特别是中断和 FIFO。

感谢您的阅读。

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

    你好、Joon Woo、

    [引用用户="Joon Woo Lee"]"启用 FIFO 后、TXSHF 会在可选延迟值(SCIFFCT)后直接退出、TXBUF 不会被使用。".[/引用]

    这解释了 SCI 模块的内部结构、用户无需实际配置任何内容即可实现正常功能。 在这种情况 下、TXBUF 是标准 SCI 的一字发送缓冲器、仅用作发送 FIFO 和移位寄存器之间的转换缓冲器。  

    [报价用户="Joon Woo Lee"]:当 SCI 启用 FIFO 模式时,写入 SCITXBUF 的字符将排队到 SCI-TXFIFO 中,并且在 SCI-RXFIFO 中接收到的字符可以使用 SCIRXBUF 重新发送"。[/QUERPI]

    即使在 FIFO 模式下、数据也会被写入 SCITXBUF 寄存器、然后这些数据将被放置到 TX FIFO 中、而接收到的保留在 RX FIFO 中的数据也可以使用 SCIRXBUF 进行读取。 查看 C2000Ware 中的软件示例可能有助于清除此问题。 我建议查看 C:\ti\c2000\C2000Ware_version\device_support\F2833x\examples\scia_loopback_interrupts

    [引用 USER="Joon Woo Lee">我知道什么是轮询、中断、FIFO 是什么、但在 SCI 中、有什么区别? 特别是中断和 FIFO。[/QUERP]

    对于轮询、您所做的基本上就是通过检查  SCIRXST 寄存器的 RXRDY 位来检查是否接收到任何数据。 这更多是您的程序中的"手动"检查、这可能会占用大量 CPU 带宽、具体取决于您检查新数据的频率。

    一旦您启用 TX/RX 中断、 当准备好从 SCIRXBUF 寄存 器中读取新字符(RXRDY 位置位)、或者当发送数据缓冲寄存器 SCITXBUF 准备好接收另一个字符(TXRDY 位置位)时、就会产生中断。 这样、您就无需自己检查新数据或检查是否可以写入新数据、从而提高程序的效率。

    FIFO 中断本身的目的是 仅 在 FIFO 接收特定的用户配置字节数时才读取 FIFO、从而减少 CPU 开销。 在 FIFO 模式下、只要发送 FIFO 状态(TXFFST)位匹配(等于或小于)、就会触发 TX 中断;只要接收 FIFO 状态(RXFFST)位匹配(等于或大于)、就会触发中断触发 TXFFIL 和 RX 中断 中断触发级别位 RXFFIL。 也就是说、在 FIFO 模式下、您可以选择仅在发送或接收一定数量的字节后触发中断、而不是在每次可以读取或传输新字符时触发非 FIFO 方法。  

    此致、

    Marlyn