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:
已解决,波特率寄存器计算问题。