Greetings,
I am using the F28335 and I am having and issue with transmitting from GPIO 28/29 to 18/19. I am able to send a message from that is received by GPIO 28 and then passed along to GPIO 18. When I do this the message is passed along but a <null> is attached to the message. 
you can see what the oscilloscope shows too here:
You can see that the blue signal has a different last character than the yellow signal. This is where I believe the null comes from.
When I transmit the other way from 19 to 29 the message is sent correctly.
Here is what the scope looks like for this one:
Here is the code I use to transmit.
28 to 18:
void SCIxConsoleTx(void){
//---------------------------------------------------------------------------
Uint16 done;
if(Console_Flags.bit.b_en == 1){
done = 0;
while(done != 1){
if(Msg_Flags.bit.scib_tx_rdy == 1){
ScibRegs.SCITXBUF = tx_buff_b[Console_Flags.bit.b_tx_index];
Msg_Flags.bit.scib_tx_rdy = 0;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;
done = 1;
}
}
}
else if(Console_Flags.bit.c_en ==1){
done = 0;
while(done != 1){
if(Msg_Flags.bit.scic_tx_rdy == 1){
ScicRegs.SCITXBUF = tx_buff_c[Console_Flags.bit.c_tx_index];
Msg_Flags.bit.scic_tx_rdy = 0;
ScicRegs.SCIFFTX.bit.TXFFINTCLR = 1;
done = 1;
}
}
}
else{
SciaTx(String_err);
}
}
when a message comes from Gpio19 and goes to 29:
the inputs to this is
char c= 'B';
and
char *ptr = &rx_buff_b[Console_Flags.bit.b_rx_index];
void SciaTxScixByte(char c, char *ptr){
//---------------------------------------------------------------------------
Uint16 i;
Uint16 n;
char ph[5];
char x[2];
if(c == 'B')
i = index_b;
else if(c == 'C')
i = index_c;
else{
SciaTx(String_err);
SciaTx(": invalid channel");
return;
}
String_SCI_Byte[8]= c;
snprintf(ph,4, "%.4d",i);
for(n=0;n<4;n++){
String_SCI_Byte[n]=ph[n];
}
x[0] = *ptr;
x[1] = 0;
SciaTx(x);
}
void SciaTx(const char message[]){
//---------------------------------------------------------------------------
Uint16 i,ph,len, done;
len = strlen(message);
ph = done = 0;
if(len <= 0x0F){ //if the message fits in the register
while(done != 1){
if(Msg_Flags.bit.scia_tx_rdy == 1){ //scia is ready to transmit
for(i=0;i<len;i++)
SciaRegs.SCITXBUF = message[i]; //put the characters in the buffer
Msg_Flags.bit.scia_tx_rdy = 0; //indicate buffer is full, interrupt will set when done
SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;//clear interrupt flag
done = 1; //indicate done
}
}
}
else{
while(done != 1){
if(Msg_Flags.bit.scia_tx_rdy == 1){
for(i=ph;i<0x10+ph;i++)
SciaRegs.SCITXBUF = message[i];
ph+=0x10;
Msg_Flags.bit.scia_tx_rdy = 0;
SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;
if((len-ph)/16 < 1)
done = 1;
}
}
done = 0;
while(done != 1){
if(Msg_Flags.bit.scia_tx_rdy == 1){
for(i=ph;i<len;i++)
SciaRegs.SCITXBUF = message[i];
Msg_Flags.bit.scia_tx_rdy = 0;
SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;
done = 1;
}
}
}
}
any pointers would be apreciated.



