使用的是CC3200 LaunchPad,通过参考官方SPI-DMA的例程,再结合TCP例程写的一个程序。
实现的功能是,把CC3200作为从机,接收主机发来的数据,将数据再发送给TCP
定义了一个1024字节大小的数组,每次SPI-DMA接收1024个字节,然后把这1024个字节发送给TCP。
当我主机发送的速度很慢时,每秒几百字节时,用上位机可以看到TCP接收的数据接收了几数组一直都是正确的。
但是当我使用FPGA作为主机高速传输FPGA的速度为1.5MHZ时,用上位机可以看到TCP接收的数据前面一二组是正确的,但是后面的数据就全是错误的了。
并且当我使用FPGA作为主机传输的时候,上位机显示无线接收的速度才80K/B,这又是什么原因?
下面是我接收SPI-DMA数据和发送给TCP的部分程序
int WSPITransfer(unsigned long ulBase, int iSockID)
{
int iStatus;
while(1)
{
memset(g_ucRxBuff, 0x0, sizeof(g_ucRxBuff));
memset(g_ucTxBuff, 0x0, sizeof(g_ucTxBuff));
Slave_Receive(g_ucRxBuff, g_ucTxBuff, 1024);
iStatus=sl_Send(iSockID,g_ucRxBuff,1024,0);//将接收到的数据发送给TCP服务器
if(iStatus<=0)
{//错误处理
ASSERT_ON_ERROR(sl_Close(iSockID));
UART_PRINT("发送数据失败\n\r");
break;
}
}
return(iStatus);
}