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.

TMS320F28066: SCI Tx interrupt ISR can not be served

Part Number: TMS320F28066

Hi

I am meeting an issue about SCI_B of TMS320F28066.

I use the TX interrupt(not FIFO interrupt) for data sending, and RX interrupt for data receiving.

Below is the initiation of SCI_B and ISR for TX interrupt, the baud rate is 2400bps.

 

 

In the ISR function, the sSciTxISR(1) executes writing to the TX buffer and wait for Tx buffer is empty for re-entering ISR for next data byte writing to TX buffer.        

The TX interrupt ISR can’t occasionally be executed for data sending.

Right now we can see the issue when Tx and Rx lines are shorted, if we try to short Tx line with Rx line when data is sending,  we may see the issue under ~10 time this operations.  

 

 

 

from the snapshot of register value show, the RXRDY and TXEMPTY bits are both set to 1, so we can know the Tx buffer is empty now, and it should set the Tx interrupt.

    But the real case is that the Tx ISR can’t be served, so there is no data sending.

If we write any data to Tx buffer when the issue happens in the debug GUI, then we can see the  SCI_B can work again.

Can you help analyze what is the possible cause for this issue, and explain why SCI_B Tx interrupt ISR can’t be served.

    Thanks

  • Hi Hardy,

    I am assuming that you are physically shorting the TX and RX pins. Could you please try setting the loopback enable bit instead just for testing purposes and see if the issue still persists? ScibRegs.SCICCR.bit.LOOPBKENA =1; 

    Also, could you please share the rest of the code so that I may try to replicate the problem? If you don't want to post it here then feel free to email or send it through E2E messaging.

    Best Regards,

    Marlyn

  • Hi Marlyn

           after testing with ScibRegs.SCICCR.bit.LOOPBKENA =1 to set the SCI in loop back mode, the issue can't be duplicated.

            i can't get the code from customer, can you explain if any possible root cause for  the ISR code can't be served under these conditions?

            Thanks

             

  • Hi Hardy,

    Since the program works with internal loopback enabled there could be some external issue with the pins themselves. Please double check the circuit and anything you may have connected to the pins. Also ensure that you configured the GPIOs correctly.

    Would it be possible to toggle a GPIO in the transmit ISR to see if the code enters the ISR? It may be entering and getting stuck there, resulting in it looking like the ISR is not being serviced. If the ISR is being entered and getting stuck you can pause your program and see where in the code its getting stuck and not sending the data. 

    Is there a particular reason FIFOs are not being used? This is an alternative method that could potentially resolve the issue you are seeing.

    Best Regards,

    Marlyn