Champs,
I am asking this for our customer.
They add a software SCI reset when there are noises on RX and use an LED to indicate if SCI reset happens.
When they put their system in a noisy environment, they found there were software SCI resets as expected in the beginning.
However, when they tested the system for a very long time (several hours), it appeared SCI hanged (no more TX/RX), but other functions like PWM of C2000 still worked normally.
Therefore, we have questions and need your support to clarify this issue:
1) How do we correctly "reset SCI"?
So far, we reset SCI as below:
EALLOW;
SciaRegs.SCICTL1.bit.RXENA =0;
SciaRegs.SCICTL1.bit.TXENA =0;
SciaRegs.SCICTL2.bit.RXBKINTENA =0;
SciaRegs.SCICTL2.bit.TXINTENA =0;
PieCtrlRegs.PIEIER9.bit.INTx1=0;
PieCtrlRegs.PIEIER9.bit.INTx2=0;
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK=0;
EDIS;
After 300 ms, we then enable it.
EALLOW;
SciaRegs.SCIRXST.bit.RXRDY=0;
SciaRegs.SCICTL2.bit.TXRDY=0;
PieCtrlRegs.PIEIER9.bit.INTx1=1;
PieCtrlRegs.PIEIER9.bit.INTx2=1;
PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK=1;
SciaRegs.SCICTL1.bit.SWRESET=0;
SciaRegs.SCICTL1.bit.SWRESET=1;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
SciaRegs.SCICTL1.bit.RXENA =1;
SciaRegs.SCICTL1.bit.TXENA =1;
EDIS;
2) Is there any problem or concern if we reset SCI module for many times?
3) When we reset SCI module, do we also clear RX buffer?
Wayne