故障现象:电路板通过串口转USB数据线和PC连接,通讯正常。此时拔掉PC的USB线缆,再插上USB线缆。发送数据,程序无法再进入串口中断。
部分代码:
/*开串口接收中断*/
IER |= M_INT9;
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
__interrupt void sciaRxIsr(void)
{
uart_enqueue(&DGCU_queue, SciaRegs.SCIRXBUF.all);
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;
PieCtrlRegs.PIEACK.bit.ACK9=1;
}
SciaRegs.SCIFFTX.bit.SCIFFENA = 1;
SciaRegs.SCIFFTX.bit.SCIRST = 1;
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFTX.bit.TXFFIL = 0x01;
SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 0;
SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1;
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 1;
SciaRegs.SCIFFRX.bit.RXFFIL = 0x01;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1;
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
部分调试:
1.单独使用PC端串口调试助手,硬件上连接为自发自收,数据正常;
2.在与电路板通讯时,拔掉PC端USB线缆,SciaRegs.SCIRXST.bit.BRKDT寄存器会置1;
3.尝试在程序中软件复位串口,可以将SciaRegs.SCIRXST.bit.BRKDT清零,但串口中断依然无法进入 ;