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
}
