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.
在上面的句子中、"当 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