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.

[参考译文] TMS320F2.8034万:使用FIFO增强功能时,SCI生成意外的传输(TX)中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/581874/tms320f28034-sci-generates-unexpected-transmit-tx-interrupts-when-using-fifo-enhancements

部件号:TMS320F2.8034万

在初始化过程中,我的应用程序将TMS320F2.8034万的SCI配置为在FIFO增强模式下使用中断运行。  即使在SCI传输任何数据之前,只要启用TX FIFO增强功能,就会生成SCI的TX中断。

以下说明似乎导致了该问题:

SciaRegs.SCIFFTX.Bit.SCIFFENA = 1;

重置SCI通道(请参阅下面的说明)可立即解决此问题

SciaRegs.SCIFFTX.Bit.SCIRST = 0;

SciaRegs.SCIFFTX.Bit.SCIRST = 1;

重置SCI的TX FIFO (请参阅以下说明)可暂时解决这种情况

SciaRegs.SCIFFTX.Bit.TXFIFOXRESET =0;

SciaRegs.SCIFFTX.Bit.TXFIFOXRESET =1;

但下面的指令,即清除FIFO TX中断标志的指令

SciaRegs.SCIFFTX.Bit.TXFFINTCLR = 1;

不执行任何操作来清除不需要的中断标志。

有人有什么建议吗?  我已经看到人们使用一些状态机逻辑,但这似乎是一个非常繁琐的解决方案。

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

     爱德华,

    使用FIFO增强功能时,您收到的中断可以被认为 是“SCI正在 请求更多的消息以输入其FIFO”。 此中断在TXFFST<= TXFFIL的任何时间发生。 正确, 您可以使用“SciaRegs.SCIFFTX.Bit.TXFFINTCLR =1;”清除中断,但如果TXFFST仍小于或等于TXFFIL,则将默认重置中断。 我建议您阅读 SCI参考指南,它描述了您正在使用的所有这些位/寄存器。

    此致,
    科迪