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.

2803x 如果在SCI接收中断中没有去读RXBUF寄存器的值,将导致SCI接收中断不再响应?

Other Parts Discussed in Thread: CONTROLSUITE

Hello, every Big OX,

我将SCI配置成中断发送、中断接收使用。

测试时发现,如果在SCI接收中断服务程序中没有去读RXBUF寄存器的值,将导致SCI接收中断不再响应;

在后续程序暂停,发现SCIRXST中的标志位RXRDY、RXERROR、OE均置位,PIEIFR中没置位,这些中断的使能和PIEIER、INTM均使能的。

但是,根据手册资料,即使SCI RXBUF中的数据没被读取,那下一个字节也会发生RXERROR OverRun中断,问题是现在接收相关的中断都不响应了(PIEIFR不再被置位了),不知是何缘故?

我偶然发现这个情况,想深入了解下究竟,还请指点迷津。

  • 你用TI的历程去测,C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\scia_loopback_interrupts

    有没有去清标志位:

    SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
    SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag

    PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack

  • 如果中断服务子程序中没有读取接受缓存(SCI RXBUF)的数据,RXRDY位就不会自动被清除,系统无法判断有新数据到达,所以不会响应中断