TMS570LS1227: SCI is losing bytes when transmitting large data blocks

Part Number: TMS570LS1227

Tool/software:

Hi,

I’m working with two TMS570LS1227 boards using CCS Studio. I need to transfer a large block of data (~10 KB) from one board to the other over SCI.

On the transmit side, the full 10 KB is being sent correctly (verified using Docklight). However, on the receive side(interrupt), I consistently lose around 1,000–3,000 bytes, so I only receive about 7–8 KB instead of the full block.

I don’t understand the root cause. The code is purely SCI-related, nothing else is running. I tried:

  • Assigning the highest priority to SCI

  • Reducing the baud rate down to 9600

  • Optimizing the interrupt handler to be as small as possible

But the issue still persists. I also noticed that the SCI interrupt frequently triggers with the Overrun flag set.

Additionally, this SCI module does not support DMA or multi-buffer mode, which makes handling large data more difficult.

Could you please help me identify and fix this issue?

Thanks,
Sajith

  • Hi Sajith,

    Additionally, this SCI module does not support DMA or multi-buffer mode, which makes handling large data more difficult.

    It is quite challenging without DMA for this kind of large data applications. These are the some suggestions that you can try once.

    1. On transmitting side make sure to write only if TX EMPTY flag is empty, because this ensures both shift register, and data registers are empty and eventually this creates some additional delay as compared with TXRDY flag.

    2. And i don't understand why you are not using DMA on at least receiving end even though device supports it.

    --
    Thanks & regards,
    Jagadish.