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: How to send a digits through SCI FIFO from TMS320F28335 to BLUETOOTH?

Part Number: TMS320F28335


Tool/software: Code Composer Studio

Hi. I'm using TMS320F28335.

I am sending data to Bluetooth using SCI FIFO communication.

It is currently sending 1,000 seats and the second decimal place.

I want to express myself to the sixth decimal place.

As far as i know, 16-bits data is filled then interrupt is activated.

Can i regulate the size of the number of bits? 

/////////////////////////////////// Send data decimal to ASCII //////////////////////////////////////

void SendDataCal(double data, double data2, double data3, double data4, double data5, double data6, double data7, double data8, double data9, double data10)

static unsigned char First_shot = 1;

if(data<0)
{
Sdata[0]='-';
data*=-1;
}

else Sdata[0]=data/1000+48;

Sdata[1]=((int)data%1000)/100+48;
Sdata[2]=((int)data%100)/10+48;
Sdata[3]=((int)data%10)/1+48;
Sdata[4]='.';
Sdata[5]=(Uint32)(data*10)%10+48;
Sdata[6]=(Uint32)(data*100)%10+48;

Sdata[7]=',';

if(data2<0)
{
Sdata[8]='-';
data2*=-1;
}

else Sdata[8]=data2/1000+48;

Sdata[9]=((int)data2%1000)/100+48;
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]=',';

if(data3<0)
{
Sdata[16]='-';
data3*=-1;
}

else Sdata[16]=data3/1000+48;

Sdata[17]=((int)data3%1000)/100+48;
Sdata[18]=((int)data3%100)/10+48;
Sdata[19]=((int)data3%10)/1+48;
Sdata[20]='.';
Sdata[21]=(Uint32)(data3*10)%10+48;
Sdata[22]=(Uint32)(data3*100)%10+48;

Sdata[23]=',';

if(data4<0)
{
Sdata[24]='-';
data4*=-1;
}

else Sdata[24]=data4/1000+48;

Sdata[25]=((int)data4%1000)/100+48;
Sdata[26]=((int)data4%100)/10+48;
Sdata[27]=((int)data4%10)/1+48;
Sdata[28]='.';
Sdata[29]=(Uint32)(data4*10)%10+48;
Sdata[30]=(Uint32)(data4*100)%10+48;

Sdata[31]=',';

if(data5<0)
{
Sdata[32]='-';
data5*=-1;
}

else Sdata[32]=data5/1000+48;

Sdata[33]=((int)data5%1000)/100+48;
Sdata[34]=((int)data5%100)/10+48;
Sdata[35]=((int)data5%10)/1+48;
Sdata[36]='.';
Sdata[37]=(Uint32)(data5*10)%10+48;
Sdata[38]=(Uint32)(data5*100)%10+48;

Sdata[39]=',';

if(data6<0)
{
Sdata[40]='-';
data6*=-1;
}

else Sdata[40]=data6/1000+48;

Sdata[41]=((int)data6%1000)/100+48;
Sdata[42]=((int)data6%100)/10+48;
Sdata[43]=((int)data6%10)/1+48;
Sdata[44]='.';
Sdata[45]=(Uint32)(data6*10)%10+48;
Sdata[46]=(Uint32)(data6*100)%10+48;

Sdata[47]=',';

if(data7<0)
{
Sdata[48]='-';
data7*=-1;
}

else Sdata[48]=data7/1000+48;

Sdata[49]=((int)data7%1000)/100+48;
Sdata[50]=((int)data7%100)/10+48;
Sdata[51]=((int)data7%10)/1+48;
Sdata[52]='.';
Sdata[53]=(Uint32)(data7*10)%10+48;
Sdata[54]=(Uint32)(data7*100)%10+48;

Sdata[55]=',';

if(data8<0)
{
Sdata[56]='-';
data7*=-1;
}

else Sdata[56]=data8/1000+48;

Sdata[57]=((int)data8%1000)/100+48;
Sdata[58]=((int)data8%100)/10+48;
Sdata[59]=((int)data8%10)/1+48;
Sdata[60]='.';
Sdata[61]=(Uint32)(data8*10)%10+48;
Sdata[62]=(Uint32)(data8*100)%10+48;

Sdata[63]=',';

if(data9<0)
{
Sdata[64]='-';
data9*=-1;
}

else Sdata[64]=data9/1000+48;

Sdata[65]=((int)data9%1000)/100+48;
Sdata[66]=((int)data9%100)/10+48;
Sdata[67]=((int)data9%10)/1+48;
Sdata[68]='.';
Sdata[69]=(Uint32)(data9*10)%10+48;
Sdata[70]=(Uint32)(data9*100)%10+48;

Sdata[71]=',';

if(data10<0)
{
Sdata[72]='-';
data10*=-1;
}

else Sdata[72]=data10/1000+48;

Sdata[73]=((int)data10%1000)/100+48;
Sdata[74]=((int)data10%100)/10+48;
Sdata[75]=((int)data10%10)/1+48;
Sdata[76]='.';
Sdata[77]=(Uint32)(data10*10)%10+48;
Sdata[78]=(Uint32)(data10*100)%10+48;

Sdata[79]=0x0D;
if(First_shot == 1){
ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
First_shot = 0;
}
else ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;
}

/////////////////////////////////////// SCI FIFO Interrupt ////////////////////////////////////////////

__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 = 0;
f_dummy++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; // Clear SCI Interrupt flag
}

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

///////////////////////////////////////// SCI FIFO Setting //////////////////////////////////////////////////

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;

Thank you.