TI中文支持网
TI专业的中文技术问题搜集分享网站

通过结合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);
}

Yonghua Pan:

应该不会,你有没有用例程里面的spi_demo测试一下,主机发送到丛机的数据打印出来是对的吗?

HML:

回复 Yonghua Pan:

有试过了,主机从机的数据是没问题的。并且在我这个程序中,从机串口还是能显示正确的数据,就是TCP的数据错误的

Terry Han:

回复 HML:

有没有单独测试TCP通信的数据是否正确,TCP的数据错误是发送之前出现错误还是接收解码部分出现错误,

HML:

回复 Terry Han:

之前用串口跟TCP通信的时候是没问题的。数据的传输都是正确没问题的。

这次用SPI,我能够在从机的串口看到主机发送给从机的内容是正确的。

所以我认为TCP的数据错误应该是发生在接收解码部分。或者是否是我发送数据的函数格式不正确?

HML:

回复 Terry Han:

这是我的源代码~试了许久还是发现TCP的数据不对。

HML:

回复 sir you:

是的,这个问题已经解决了~谢谢回答。

赞(0)
未经允许不得转载:TI中文支持网 » 通过结合TCP和SPI例程结合,发现TCP收到的数据不正确
分享到: 更多 (0)