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

CC3200 TCP通信速度特别慢,寻求原因

本人打算用CC3200(A)发送TCP数据包给CC3200(B),他俩都作为STA模式连接在路由上,能够正常收,但是速度特别慢,几乎1分钟只能收到0.1mb,我试着将发送端每次发送的包调的大一点,结果还是一样的速度,为了排除每次断开重连的原因,我让A持续发送数据给B,结果仍然特别慢,我试着去排除他们两个的问题,我把电脑连到路由,用发送端A发给电脑,电脑端接收速度很快,排除了发送端的问题,结果用电脑又给接收端B每隔1ms发送数据,接收端也收的很快……不知道为什么用A去给B发就会出现速度特别慢的问题,附上代码(代码中是每发送10包断开重连继续发送),还请麻烦大家帮我分析一下原因,谢谢了!

 while(1){// creating a TCP socket	iSockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);	if( iSockID < 0 )	{		ASSERT_ON_ERROR(SOCKET_CREATE_ERROR);	}	iStatus = sl_Connect(iSockID, ( SlSockAddr_t *)&sAddr, iAddrSize);	if( iStatus < 0 )	{// errorsl_Close(iSockID);ASSERT_ON_ERROR(CONNECT_ERROR);
		}
		for(i=0;i<10;i++)
		{
			// sending packetg_cBsdBuf[BUF_SIZE-6]=(char)lLoopCount>>24;g_cBsdBuf[BUF_SIZE-5]=(char)lLoopCount>>16;g_cBsdBuf[BUF_SIZE-4]=(char)lLoopCount>>8;g_cBsdBuf[BUF_SIZE-3]=(char)lLoopCount;

			iStatus = sl_Send(iSockID, g_cBsdBuf, 262, 0 );
			if( iStatus < 0 )
			{
				// error
				sl_Close(iSockID);
				ASSERT_ON_ERROR(SEND_ERROR);
			}lLoopCount++;
		}
		sl_Close(iSockID);
		MAP_UtilsDelay(8000000);}

以上是发送端;

int Ret,lLoopCount;int socketID[4] = {-1, -1, -1, -1};for(i = 0; i < 4; i ++){if(socketID[i] < 0){socketID[i] = sl_Accept(serverID, ( struct SlSockAddr_t *)&sAddr, (SlSocklen_t*)&iAddrSize);}if(socketID[i] > 0){int LOOP;UART_PRINT("\n\rReceiving:\n\r");for(LOOP = 0;LOOP < 1024 ; LOOP++){Ret = sl_Recv(socketID[i], g_cBsdBuf, 1000, 0);for ( lLoopCount = 0;lLoopCount < Ret;lLoopCount++){MAP_UARTCharPut(UARTA0_BASE,g_cBsdBuf[lLoopCount]);}memset(g_cBsdBuf,0,sizeof(g_cBsdBuf));}}}for(i = 0; i < 4; i ++){sl_Close(socketID[i]);socketID[i]= -1;}

以上是接收端。

Terry Han:

每发送10包断开重连继续发送—–快速发送可以不用断开,直接向目的地址的IP+端口号发送数据即可

苜蓿草:

回复 Terry Han:

我试过不断开,速度仍然特别特别慢

苜蓿草:

经过检查,发现是发送端速度太快没有进行限制,接收端用uart输出速度太慢造成数据堆挤,将发送端速度降低便可。

Terry Han:

回复 苜蓿草:

UART可采用FIFO+DMA的方式提高使用效率,提高数据的传输效率

赞(0)
未经允许不得转载:TI中文支持网 » CC3200 TCP通信速度特别慢,寻求原因
分享到: 更多 (0)