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:关于 Example_2833xSpi_FFDLB_int 的混淆

Guru**** 2536440 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613198/tms320f28335-confusion-about-example_2833xspi_ffdlb_int

器件型号:TMS320F28335

大家好、我对这个例子感到困惑。

是否有人可以将其删除? 以下是我的问题:

首先、当我们在这里循环时、如何发生中断? 如第二个问题所示、数据在中断函数中发送、我认为环路中没有执行任何操作。 我对 FIFO 模式下的 SPI 中断有点困惑。

第二、为什么数据被写入 SPITXBUF 而不是 TXFIFO? 或者如何将数据写入 TXFIFO?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第一个问题是关于此步骤:
    //步骤6. 空闲循环。 只需坐下来循环(可选):
    for (;;);


    第二个是:
    _interrupt void spiTxFifoIsr (void)

    uint16 i;
    for (i=0;i<8;i++)

    SpiaRegs.SPITXBUF=sdata[i]; //发送数据


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该示例将 TXFFIL (FIFO 中断级别字段)设置为8、这意味着当 TX 缓冲区中的字数量为8或更少时、会发生 TXFIFO 中断。 在程序开始时、缓冲区中可能有0个字、因此一旦启用中断、您就会得到中断、而无需在循环中或循环之前执行任何操作。

    要回答第二个问题、写入 SPITXBUF 将把数据放入 FIFO 中。 你自己不能直接写入 FIFO -它都必须经过 SPITXBUF。 在这里的 Kris 博文中对此进行了更详细的解释:

    e2e.ti.com/.../2257026

    惠特尼