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.

[参考译文] CCS/TMS320F2812:如何设置 FIFO 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/599205/ccs-tms320f2812-how-to-set-fifo-register

器件型号:TMS320F2812

工具/软件:Code Composer Studio

您好!

我刚刚开始对 TMS320F2812进行编程、并查看了示例文件 Example_281xSciFFDLB_int.c、以便使用 FIFO 缓冲区和中断对串行通信接口进行编程。 在 scia_fifo_init()和 scib_fifo_init()两个函数中,通过设置多个寄存器来初始化通信。 我不明白为什么 FIFO 发送寄存器 SCIFFTX 获得值0xC028。 根据参考指南(SPRU051D) 、当状态位(TXFFST)等于或小于中断级别位(TXFFIL)时、将生成中断。 我假设状态位根据 FIFO 中的字数动态更新。 但是、如果值为0xC028、则状态位为00000、中断级别位为01000、因此状态位等于或小于中断级别位。 这是否意味着持续存在中断、直到 FIFO 缓冲区中有01000=8个字? 此外、我假设这些不是软件中断、而是由硬件处理。 如果有人能给我一些答案,我将不胜感激。 在参考指南中、我没有找到太多有关此内容的信息。

此致、Michiel van Rijnbach。

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

    它的工作方式是当 TXFFST <= TXFFIL 时、将生成中断。 因此、如果您从未填充 FIFO、并且为中断提供服务但未将其禁用、则该中断将持续关闭。

    此示例是一个无限发送示例。 您可以用16个字填充 FIFO、当 TXFFST 降至8以下且生成中断时、您还可以添加8个字。

    您可以像示例一样永久执行此操作、也可以通过禁用 TX 中断来停止此操作、直到您准备好发送。

    希望这对您有所帮助!

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

    谢谢 Vince、这正是我需要知道的。 我曾假设它是这样工作的、但在参考指南中找不到详细信息。 我想知道用它写 FIFO 寄存器中的状态位是什么、但很显然、它们正由硬件更新。 这些中断是否在每个时钟周期生成?

    此致、Michiel。

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

    状态位是只读的、因此当您写入整个寄存器时、只会更改可写的位。

    对于中断、它将在满足上述条件且中断标志已清除时生成。

    谢谢、

    Vince Rodriguez

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

    此致、Michiel。