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.

通过结合TCP和SPI例程结合,发现TCP收到的数据不正确

我用两台SPI进行通信,其中从机收到主机发来的数据后会将数据发给TCP服务器,TCP服务器发送给从机的数据也会经过SPI发送给主机。

但是我发现从机发给TCP的数据不对,无论发送什么字符,TCP显示的都是“TiCoIsAio”这样的字符。请问这会是什么原因?

还有一个问题是服务器发送给从机的数据收不到,这又是什么原因?

希望能够解决我这个问题,万分感谢。

下面是我的从机TCP传输数据代码:

int SpiTransfer(unsigned long ulBase, int iSockID)
{
// unsigned long ulUserData;
unsigned long ulDummy;
char cTxBuf[100],i;
char cRxBuf[100];
// char cGetChar;
int iStatus;
int iCounter=0;
while(1)
{//SPI接收的数据
MAP_SPIDataGet(ulBase,&ulDummy);
MAP_UARTCharPut(UARTA0_BASE,ulDummy);//显示字符
cTxBuf[iCounter++]=ulDummy;
iStatus=sl_Send(iSockID,cTxBuf,iCounter,0);//将字符发送给TCP服务器
if(iStatus<=0)
{//错误处理
ASSERT_ON_ERROR(sl_Close(iSockID));
UART_PRINT("发送数据失败\n\r");
break;
}

//recv tcp
iStatus = sl_Recv(iSockID,cRxBuf,100,0);
if(iStatus > 0)
{
//iStatusRecv = sl_Send(iSockID, cRxBuf, iStatus, 0);
MAP_SPIDataPut(ulBase,iStatus);
MAP_UARTCharPut(UARTA0_BASE,iStatus);
for(i = 0; i < iStatus; i++ )
{
UART_PRINT("%2c \n\r", cRxBuf[i]);
//UART_PRINT("202 \n\r");
}
}
}
return(iStatus);
}