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.

TMS320F28034 SCI FIFO发送中断

Other Parts Discussed in Thread: CONTROLSUITE

我采用接收中断服务函数使能  SciaRegs.SCIFFTX.bit.TXFFIENA = 1;  这里配置的SciaRegs.SCICTL2.bit.TXINTENA = 0;    但是我的发送中断服务函数执行了两遍,SCI配置如下:

SciaRegs.SCICTL2.bit.TXINTENA =0;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;

SciaRegs.SCIFFTX.all=0xC000; //0xC024; //FIFO最多四级缓存FIFO
SciaRegs.SCIFFRX.all=0x0021; //0x0024; receive is not considered;
SciaRegs.SCIFFCT.all=0x00; //0x0 wxm

SciaRegs.SCICTL1.all =0x0023;

SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1; //wxm the tx an rx interrupt will not ocour if no this sentence
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;

发送中断里的清除执行

SciaRegs.SCIFFTX.bit.TXFFINTCLR=1; // Clear SCI Interrupt flag
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
PieCtrlRegs.PIEACK.all|=0x100;

请问为什么中断进入两次?

这样我写发送   SciaRegs.SCITXBUF=R_buff[i]&0x00ff;  发送8位时,数据错误,只有5位;

  • 您可以先测试下TI的例程:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5
  • constrolSuite 的这个程序是进行自循环测试,是否有些差别呢
  • 你好,我查看数据手册,TXFFIL4−0 Transmit FIFO interrupt level bits. Transmit FIFO will generate interrupt when the FIFO
    status bits (TXFFST4−0) and FIFO level bits (TXFFIL4−0 ) match (less than or equal to)。是否由于使能进入中断,FIFO LEVEL达到要求进入第二次中断呢,我使用历程修改也是进入两次中断,但是可以使用 SciaRegs.SCICTL1.bit.TXENA=1;进行规避,达到我自己的要求。
  • 对于FIFO的发送中断,它的进入中断是发送完成以后和使能了FIFO发送中断进入中断 ,即只要使能了FIFO发送中断,就会不停的进入中断。这里和之前的中断不一样,采用发送中断进行发送数据时可以采用,查询法,或者中断法进行发送。中断法主要是是利用FIFO为空后继续进入中断,每次只能传输四个字节,比查询法快。叙述的不太清楚,也是刚开始学习,懵懵的。