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.

TMS320F280049C: question using UART of one of your DSP (TMS320F280049C)

Part Number: TMS320F280049C

Hi team,

I help the customer ask a question:

we are developing an OBC DAB for electric car charging and I can't manage to optimize the data sending through the UART.
We are using the DPS TMS320F280049C, CCS v9.1 and C200Ware v3.01 all based on driverlib. I am currently using the DSP to communicate 184 Bytes in block to a virtual interface on the PC through the SCI port. I am using TX and RX interrupts to communicate with the interface every second (the communication works perfectly). For the DSP -- Interface link I use the MM232 via fibre optic cable (FTDI up to 1.5MB/s on RS232) so according to my calculations it should take 1.2ms to send the data (which I have checked with experimental measurements). As it is sending such a large block of data (184Bytes) the DSP is blocked every time I trigger the TX interrupt 1.2ms which is unacceptable to ensure the control loop for the DAB.
Is there any way to communicate large blocks of data over the UART without DSP intervention? Use of DMA, any way to load the data into the UART buffer without the need for an interrupt? Is the operation of the UART/SCI peripheral independent of the operation of the DSP, i.e. can they run in parallel? I am open to solutions. If you need more data to understand my problem or the setup and tests I do don't hesitate to ask.
The image shows up in green the TX line, in "blue" the current throught the converter during the 1.2 ms the DSP is busy transmitting data to the virtual interface.
I need to know if its posible to use UART without the DSP get stucked.

 1738.TEXAS SCI PREGUNTA.docx

Thanks a lot.

Best regards,

  • Hi,

    Thanks for your question!

    This can definitely be a bit tricky, as the F28004x does not directly have a DMA transfer capability built into the UART (SCI).

    I will connect you with a CLB expert shortly to see if there is a feasibility to move the data using that peripheral, but in the meantime, there are definitive ways to reduce the overhead directly in the SCI module:

    1. You can utilize the 16-word FIFO to only interrupt once all 16 words have been received (then they can quickly be read into the buffer). The key here is to make sure the storage occurs fast enough to begin allowing the next 16 words to be received. Basically, this would allow you to break up the transmission into 16 interrupts instead of 1 large interrupt. Between each interrupt, you can continue processing other items.

    2. It may also be beneficial to have a two-way communication on SCI. That way you focus the processing on the real-time processing (current through the converter), and then when the processor is not busy, can send a request through the RS232 to receive more data.

    3. Nested interrupts may be helpful here too. You can allow the real-time processing to interrupt the SCI ISR in the middle. So you could have: SCI interrupt starts, then real-time processing interrupts it and finishes, then the SCI is allowed to finish processing. The important part here is to not let the SCI packets get missed.

    I will connect you with a CLB expert shortly.

    Regards,

    Vince

  • as far as the CLB moving data from SCI registers to memory, no there is no support for that. The CLB is signal based. you need pass in signals.

    You can push values of register to the CLB HLC through the FIFO, then do something with the data in the HLC, push it back out through the FIFO and have the CPU read the updated data.

    Nima