TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035: SCI 使用FIFO中断接收通信问题

Part Number:TMS320F28035

由于和串口组态屏幕通信,接收的数据长度不固定,因此将SCI FIFO接收中断深度配置为1,但是为什么串口屏幕发送了8字节的数据,DSP只能触发1次中断接收到1字节数据,剩余字节数据全部丢失,请问是哪里配置的不对吗?下面是我的SCI配置

SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
/
SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,

SciaRegs.SCICTL2.all =0x0003;

SciaRegs.SCICTL2.bit.TXINTENA =0; //禁止发送中断
SciaRegs.SCICTL2.bit.RXBKINTENA =0; /

SciaRegs.SCIHBAUD =(brr_reg>>8)&0x00FF;
SciaRegs.SCILBAUD =brr_reg&0x00FF;

SciaRegs.SCIFFTX.all=0xC000;
SciaRegs.SCIFFRX.all=0x0021; //使能FIFO接收中断,设置接收FIFO深度为1,接收一个字节数据就产生FIFO接收中断,效率不高,面对少量不定长数据发送比较合适。
SciaRegs.SCIFFCT.all=0x00; //FIFO控制寄存器
SciaRegs.SCICTL1.all =0x0023; // 禁止软复位
SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1; //发送FIFO复位
SciaRegs.SCIFFRX.bit.RXFIFORESET=1; //接收FIFO复位

下面是接收中断函数

interrupt void USARTA_RxIntHandler(void)
{
g_recv_buff[Index++] = SciaRegs.SCIRXBUF.all;
if(Index>20)Index=0;

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

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

}

user6223461:

已解决,波特率寄存器计算问题。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035: SCI 使用FIFO中断接收通信问题
分享到: 更多 (0)