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/TMS320F28335: SCI-TX, Not able to send more than 16 bytes

Part Number: TMS320F28335
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

Hello all, 

                        So i have made an integer array of size 36. and I have been trying to send the values across. But it is not happening. It is sending only 16 bytes of data. I have configured the tx as per below:

/* Enable Transmit FIFO */
SciaRegs.SCIFFTX.bit.TXFIFOXRESET =1U;

/* Force a transmit ISR */
SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1U ;
  

Below is the stream I am trying to send. 

Uint16 transmitBuffer[36];

transmitBuffer[0] = '$';
/* PAN feedback */
/* Function code*/
transmitBuffer[1] = '3';

transmitBuffer[2] = '4';
transmitBuffer[3] = '5';
transmitBuffer[4] = '6';
transmitBuffer[5] = '7';
transmitBuffer[6] = '8';
transmitBuffer[7] = '9';
transmitBuffer[8] = 65;
transmitBuffer[9] = 66;
transmitBuffer[10] = 67;
transmitBuffer[11] = 68;
transmitBuffer[12] = 69;
transmitBuffer[13] = 70;
transmitBuffer[14] = 71;
transmitBuffer[15] = 72;
transmitBuffer[16] = 73;
transmitBuffer[17] = 74;
transmitBuffer[18] = 75;
transmitBuffer[19] = 76;
transmitBuffer[20] = 77;
transmitBuffer[21] = 78;
transmitBuffer[22] = 79;
transmitBuffer[23] = 80;
transmitBuffer[24] = 81;
transmitBuffer[25] = 82;
transmitBuffer[26] = 83;
transmitBuffer[27] = 84;
transmitBuffer[28] = 85;
transmitBuffer[29] = 86;
transmitBuffer[30] = 87;
transmitBuffer[31] = 88;
transmitBuffer[32] = 89;
transmitBuffer[33] = 90;
transmitBuffer[34] = 97;
transmitBuffer[35] = 98;

  • hi ,

    Are you using the examples from C2000ware as a reference ?
    C2000Ware\device_support\f2833x\examples\scia_loopback_interrupts

    The FIFO has a depth of 16 . What is the trigger level for an Interrupt for the FIFO?

    The 36 bytes would need to be done in sets to transmit the data.

    Regards.
  • Hello Meghna,

    I have set the trigger limit as 1 so that as when the data comes, it would be sent. With this also, I am able to send only 16 bytes of data and m not sure why. I tried sending in sets but then again, it would send only the last 16 bytes. Could you please tell what should the transmitter settings be?


    Thanks,
    Akhil
  • This thread is still active right? It's been days since i got any feedback.

  • hi Akhil ,

    Using the sci_ex2_loopback_interrupts example

    • Populate the data outside the ISR. 
    • FIFO configuration :

    SCI_setFIFOInterruptLevel(SCIA_BASE, SCI_FIFO_TX0, SCI_FIFO_RX16);

    • In the TX ISR, send the 16  characters -> SCI_writeCharArray(SCIA_BASE, sDataA, 16);
    • Populate the new content to be sent ( next 16 characters )
    • In RX ISR , receive the  16 characters -> SCI_readCharArray(SCIA_BASE, rxBuffer, 16); 
    • The TX ISR would be called next and the set of data previously populated would be sent.
    • Further TX ISR and RX ISR would be called alternately to send and receive the data.

    Regards.