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.

CCS/TMS570LC4357: Check if the SCI receiver is in idle state

Part Number: TMS570LC4357
Other Parts Discussed in Thread: HALCOGEN

Tool/software: Code Composer Studio

Hello,

In the Halcogen tutorial example_sci_uart_9600.c there is a line meant to check if the SCI receiver is in idle state:

while ((UART->FLR & 0x4) == 4); /* wait until busy */

In this question, it is explained that it checks the BUSY bit of the FLR register: https://e2e.ti.com/support/microcontrollers/hercules/f/312/p/839194/3103738?tisearch=e2e-sitesearch&keymatch=0x4%2520FLR#3103738

However, it is actually checking the IDLE bit of the FLR and not the BUSY bit. Can someone explain to me the difference between checking one bit and the other? The code works fine in both cases.

Thank you for your time.

Sergio

  • Hello Sergio,

    The SCI supports both full-duplex and half-duplex. The full-duplex means that data can be sent and received via the transmit and receive pins simultaneously. So for full-duplex operation, checking BUSY bit and IDLE bit before transmitting is not necessary.

    Busy means that the receiver is currently receiving data, and Idle means that RX pin is at logic high state and no data transfer is taking place.