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 FIFO to PC communication issue.

Part Number: TMS320F28335
Other Parts Discussed in Thread: MAX3232, C2000WARE

Tool/software: Code Composer Studio

Hi. I'm operating TMS320F28335.

Now I try to connect 28335 to PC by SCI FIFO communication.

Above is my system configuration. 

I twisted RX and TX between MAX3232 and RS232 to USB device.

And I use SCI-B.

In fact, few month ago, I succeed in connecting 28335 to PC by SCI FIFO and "Bluetooth"(wireless).

Now I'm trying to connect 28335 to PC by wire.

Because of the data loss problem, but I try to debug same code with above configuration, it doesn't work.

Help me.

Thank you.

Below is my SCI code.(ASCII conversion)

----------------------------------------------------------------------------------------------------------------------------------------

ScibRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback

                                       // No parity,8 char bits,

                                       // async mode, idle-line protocol

ScibRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,

                                       // Disable RX ERR, SLEEP, TXWAKE

ScibRegs.SCICTL2.bit.TXINTENA =1;

ScibRegs.SCICTL2.bit.RXBKINTENA =1;

ScibRegs.SCIHBAUD = 0x0000;

ScibRegs.SCILBAUD = 0x0027;

 

ScibRegs.SCICTL2.bit.TXRDY= 0;

ScibRegs.SCIFFTX.all=0xC020;

ScibRegs.SCIFFRX.all=0x0021;

ScibRegs.SCIFFCT.all=0x00;

 

ScibRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset

ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;

ScibRegs.SCIFFRX.bit.RXFIFORESET=1;

 

//소수점 6째 자리

void SendDataCal(double data1, double data2, double data3, double data4, double data5, double data6, double data7, double data8, double data9, double data10, double data11, double data12, double data13, double data14, double data15, double data16)

{                                                                                           //PC와 통신용으로 ASCII 코드로 변환하는 함수 (미사용)//100의 자리 , 소수점 2번째 자리 수까지 가능

    static unsigned char First_shot = 1;

 

    if(data1<0)

        {

            Sdata[0]='-';

            data1*=-1;

        }

 

    else    Sdata[0]=((int)data1%100)/10+48;

 

    Sdata[1]=((int)data1%10)/1+48;

    Sdata[2]='.';

    Sdata[3]=(Uint32)(data1*10)%10+48;

    Sdata[4]=(Uint32)(data1*100)%10+48;

    Sdata[5]=(Uint32)(data1*1000)%10+48;

    Sdata[6]=(Uint32)(data1*10000)%10+48;

    Sdata[7]=(Uint32)(data1*100000)%10+48;

    Sdata[8]=(Uint32)(data1*1000000)%10+48;

 

    Sdata[9]=',';

 

    if(data2<0)

        {

            Sdata[10]='-';

            data2*=-1;

        }

 

    else    Sdata[10]=((int)data2%100)/10+48;

 

    Sdata[11]=((int)data2%10)/1+48;

    Sdata[12]='.';

    Sdata[13]=(Uint32)(data2*10)%10+48;

    Sdata[14]=(Uint32)(data2*100)%10+48;

    Sdata[15]=(Uint32)(data2*1000)%10+48;

    Sdata[16]=(Uint32)(data2*10000)%10+48;

    Sdata[17]=(Uint32)(data2*100000)%10+48;

    Sdata[18]=(Uint32)(data2*1000000)%10+48;

 

    Sdata[19]=',';

 

    if(data3<0)

        {

            Sdata[20]='-';

            data3*=-1;

        }

 

    else    Sdata[20]=((int)data3%100)/10+48;

 

    Sdata[21]=((int)data3%10)/1+48;

    Sdata[22]='.';

    Sdata[23]=(Uint32)(data3*10)%10+48;

    Sdata[24]=(Uint32)(data3*100)%10+48;

    Sdata[25]=(Uint32)(data3*1000)%10+48;

    Sdata[26]=(Uint32)(data3*10000)%10+48;

    Sdata[27]=(Uint32)(data3*100000)%10+48;

    Sdata[28]=(Uint32)(data3*1000000)%10+48;

 

    Sdata[29]=',';

 

    if(data4<0)

        {

            Sdata[30]='-';

            data4*=-1;

        }

 

    else    Sdata[30]=((int)data4%100)/10+48;

 

    Sdata[31]=((int)data4%10)/1+48;

    Sdata[32]='.';

    Sdata[33]=(Uint32)(data4*10)%10+48;

    Sdata[34]=(Uint32)(data4*100)%10+48;

    Sdata[35]=(Uint32)(data4*1000)%10+48;

    Sdata[36]=(Uint32)(data4*10000)%10+48;

    Sdata[37]=(Uint32)(data4*100000)%10+48;

    Sdata[38]=(Uint32)(data4*1000000)%10+48;

 

    Sdata[39]=',';

 

    if(data5<0)

        {

            Sdata[40]='-';

            data5*=-1;

        }

 

    else    Sdata[40]=((int)data5%100)/10+48;

 

    Sdata[41]=((int)data5%10)/1+48;

    Sdata[42]='.';

    Sdata[43]=(Uint32)(data5*10)%10+48;

    Sdata[44]=(Uint32)(data5*100)%10+48;

    Sdata[45]=(Uint32)(data5*1000)%10+48;

    Sdata[46]=(Uint32)(data5*10000)%10+48;

    Sdata[47]=(Uint32)(data5*100000)%10+48;

    Sdata[48]=(Uint32)(data5*1000000)%10+48;

 

    Sdata[49]=',';

 

    if(data6<0)

        {

            Sdata[50]='-';

            data6*=-1;

        }

 

    else    Sdata[50]=((int)data6%100)/10+48;

 

    Sdata[51]=((int)data6%10)/1+48;

    Sdata[52]='.';

    Sdata[53]=(Uint32)(data6*10)%10+48;

    Sdata[54]=(Uint32)(data6*100)%10+48;

    Sdata[55]=(Uint32)(data6*1000)%10+48;

    Sdata[56]=(Uint32)(data6*10000)%10+48;

    Sdata[57]=(Uint32)(data6*100000)%10+48;

    Sdata[58]=(Uint32)(data6*1000000)%10+48;

 

    Sdata[59]=',';

 

    if(data7<0)

        {

            Sdata[60]='-';

            data7*=-1;

        }

 

    else    Sdata[60]=((int)data7%100)/10+48;

 

    Sdata[61]=((int)data7%10)/1+48;

    Sdata[62]='.';

    Sdata[63]=(Uint32)(data7*10)%10+48;

    Sdata[64]=(Uint32)(data7*100)%10+48;

    Sdata[65]=(Uint32)(data7*1000)%10+48;

    Sdata[66]=(Uint32)(data7*10000)%10+48;

    Sdata[67]=(Uint32)(data7*100000)%10+48;

    Sdata[68]=(Uint32)(data7*1000000)%10+48;

 

    Sdata[69]=',';

 

    if(data8<0)

        {

            Sdata[70]='-';

            data8*=-1;

        }

 

    else    Sdata[70]=((int)data8%100)/10+48;

 

    Sdata[71]=((int)data8%10)/1+48;

    Sdata[72]='.';

    Sdata[73]=(Uint32)(data8*10)%10+48;

    Sdata[74]=(Uint32)(data8*100)%10+48;

    Sdata[75]=(Uint32)(data8*1000)%10+48;

    Sdata[76]=(Uint32)(data8*10000)%10+48;

    Sdata[77]=(Uint32)(data8*100000)%10+48;

    Sdata[78]=(Uint32)(data8*1000000)%10+48;

 

    Sdata[79]=',';

 

    if(data9<0)

        {

            Sdata[80]='-';

            data9*=-1;

        }

 

    else    Sdata[80]=((int)data9%100)/10+48;

 

    Sdata[81]=((int)data9%10)/1+48;

    Sdata[82]='.';

    Sdata[83]=(Uint32)(data9*10)%10+48;

    Sdata[84]=(Uint32)(data9*100)%10+48;

    Sdata[85]=(Uint32)(data9*1000)%10+48;

    Sdata[86]=(Uint32)(data9*10000)%10+48;

    Sdata[87]=(Uint32)(data9*100000)%10+48;

    Sdata[88]=(Uint32)(data9*1000000)%10+48;

 

    Sdata[89]=',';

 

    if(data10<0)

        {

            Sdata[90]='-';

            data10*=-1;

        }

 

    else    Sdata[90]=((int)data10%100)/10+48;

 

    Sdata[91]=((int)data10%10)/1+48;

    Sdata[92]='.';

    Sdata[93]=(Uint32)(data10*10)%10+48;

    Sdata[94]=(Uint32)(data10*100)%10+48;

    Sdata[95]=(Uint32)(data10*1000)%10+48;

    Sdata[96]=(Uint32)(data10*10000)%10+48;

    Sdata[97]=(Uint32)(data10*100000)%10+48;

    Sdata[98]=(Uint32)(data10*1000000)%10+48;

 

    Sdata[99]=',';

 

    if(data11<0)

        {

            Sdata[100]='-';

            data11*=-1;

        }

 

    else    Sdata[100]=((int)data11%100)/10+48;

 

    Sdata[101]=((int)data11%10)/1+48;

    Sdata[102]='.';

    Sdata[103]=(Uint32)(data11*10)%10+48;

    Sdata[104]=(Uint32)(data11*100)%10+48;

    Sdata[105]=(Uint32)(data11*1000)%10+48;

    Sdata[106]=(Uint32)(data11*10000)%10+48;

    Sdata[107]=(Uint32)(data11*100000)%10+48;

    Sdata[108]=(Uint32)(data11*1000000)%10+48;

 

    Sdata[109]=',';

 

    if(data12<0)

        {

            Sdata[110]='-';

            data12*=-1;

        }

 

    else    Sdata[110]=((int)data12%100)/10+48;

 

    Sdata[111]=((int)data12%10)/1+48;

    Sdata[112]='.';

    Sdata[113]=(Uint32)(data12*10)%10+48;

    Sdata[114]=(Uint32)(data12*100)%10+48;

    Sdata[115]=(Uint32)(data12*1000)%10+48;

    Sdata[116]=(Uint32)(data12*10000)%10+48;

    Sdata[117]=(Uint32)(data12*100000)%10+48;

    Sdata[118]=(Uint32)(data12*1000000)%10+48;

 

    Sdata[119]=',';

 

    if(data13<0)

        {

            Sdata[120]='-';

            data13*=-1;

        }

 

    else    Sdata[120]=((int)data13%100)/10+48;

 

    Sdata[121]=((int)data13%10)/1+48;

    Sdata[122]='.';

    Sdata[123]=(Uint32)(data13*10)%10+48;

    Sdata[124]=(Uint32)(data13*100)%10+48;

    Sdata[125]=(Uint32)(data13*1000)%10+48;

    Sdata[126]=(Uint32)(data13*10000)%10+48;

    Sdata[127]=(Uint32)(data13*100000)%10+48;

    Sdata[128]=(Uint32)(data13*1000000)%10+48;

 

    Sdata[129]=',';

 

    if(data14<0)

        {

            Sdata[130]='-';

            data14*=-1;

        }

 

    else    Sdata[130]=((int)data14%100)/10+48;

 

    Sdata[131]=((int)data14%10)/1+48;

    Sdata[132]='.';

    Sdata[133]=(Uint32)(data14*10)%10+48;

    Sdata[134]=(Uint32)(data14*100)%10+48;

    Sdata[135]=(Uint32)(data14*1000)%10+48;

    Sdata[136]=(Uint32)(data14*10000)%10+48;

    Sdata[137]=(Uint32)(data14*100000)%10+48;

    Sdata[138]=(Uint32)(data14*1000000)%10+48;

 

    Sdata[139]=',';

 

    if(data15<0)

        {

            Sdata[140]='-';

            data15*=-1;

        }

 

    else    Sdata[140]=((int)data15%100)/10+48;

 

    Sdata[141]=((int)data15%10)/1+48;

    Sdata[142]='.';

    Sdata[143]=(Uint32)(data15*10)%10+48;

    Sdata[144]=(Uint32)(data15*100)%10+48;

    Sdata[145]=(Uint32)(data15*1000)%10+48;

    Sdata[146]=(Uint32)(data15*10000)%10+48;

    Sdata[147]=(Uint32)(data15*100000)%10+48;

    Sdata[148]=(Uint32)(data15*1000000)%10+48;

 

    Sdata[149]=',';

 

    if(data16<0)

        {

            Sdata[150]='-';

            data16*=-1;

        }

 

    else    Sdata[150]=data16/1000+48;

 

    Sdata[151]=((int)data16%1000)/100+48;

    Sdata[152]=((int)data16%100)/10+48;

    Sdata[153]=((int)data16%10)/1+48;

    Sdata[154]='.';

    Sdata[155]=(Uint32)(data16*10)%10+48;

    Sdata[156]=(Uint32)(data16*100)%10+48;

 

    Sdata[157] = 0x0D;

 

    if(First_shot == 1){

            ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;

            First_shot = 0;

        }

    else ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;

}

 

__interrupt void scibTxFifoIsr(void)

{

 

    static unsigned char send_cnt = 0;

    unsigned char i;

 

    if(send_cnt == 0){

        for(i=0;i<16;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

 

    else if(send_cnt == 1){

        for(i=16;i<32;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

 

    else if(send_cnt == 2){

        for(i=32;i<48;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 3){

        for(i=48;i<64;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 4){

        for(i=64;i<80;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 5){

        for(i=80;i<96;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 6){

        for(i=96;i<112;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 7){

        for(i=112;i<128;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

 

    else if(send_cnt == 8){

        for(i=128;i<144;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

    else if(send_cnt == 9){

        for(i=144;i<158;i++)

            ScibRegs.SCITXBUF = Sdata[i];

 

        send_cnt = 0;

        f_dummy++;

        ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // Clear SCI Interrupt flag

    }

 

 

    PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;      // Issue PIE ACK

}

  • Hi Joon,

    Joon Woo Lee said:
    Because of the data loss problem, but I try to debug same code with above configuration, it doesn't work.

    Would you please tell me what debugging steps you have tried already? When you say, "it doesn't work" do you mean that you are not able to detect the device on your PC, you can detect the device but there is no data being transmitted, or the data you observe on your PC side is incorrect? 

    Below are some general debugging steps. Once I gain more information we can walk through more specific debug.

    1) Do you see the device listed under your "Ports (COM & LPT)" of device manager? (This is assuming you are using a Windows PC). If so, are you able to connect to the device?

    2) I would suggest probing the TX and RX pins at each of the connections (if possible) to see if you can observe the data you are expecting. It would also be good to measure the baud rate at each of these connections.

    3) Instead of using the code you've implemented I would try to use one of our sample programs, just for debug purposes. If it works with a sample program then you can rule out hardware issues and we can focus on your code. C:\ti\c2000\C2000Ware_Version\device_support\f2833x\examples\sci_echoback

    Best Regards,

    Marlyn