⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.c

📁 tigersharc ts101 LINK口数据传输程序
💻 C
字号:

#include "utils.h"
#include "TSLinkDrv.h"
#include <stdio.h>

#define BUFFER_LENGTH 32768
#define CLOCK_RATE 300
#define REPEAT_TIME 1000

int Buffer[BUFFER_LENGTH];
int FrameCount = 0;

void MakeBuffer()
{
	int i;
	
	for(i = 0; i < BUFFER_LENGTH; i++)
		Buffer[i] = 0x5a5a0000 + i;
}

bool CheckBuffer()
{
	int i;
	
	for(i = 0; i < BUFFER_LENGTH; i++)
	{
		if(Buffer[i] != 0x5a5a0000 + i)
			return false;
	}
	
	return true;
}

void main()
{
	bool IsSender;
	int LinkID;
	int LinkSpeed;
	unsigned int StartTime, EndTime, Duration;
	float Speed;
	int i, count;
	bool VerifyOK;
	
	__builtin_sysreg_write(__SYSCON, 0x1A79E7);
	__builtin_sysreg_write(__SDRCON, 0x5213);
	
	IsSender = true;
		
	LinkID = 3;
	LinkSpeed = 1;
		
	switch(LinkSpeed)
	{
	case 0:
		LinkInit(LinkID, LINK_SPEED_0);
		break;
	case 1:
		LinkInit(LinkID, LINK_SPEED_1);
		break;
	case 2:
		LinkInit(LinkID, LINK_SPEED_2);
		break;
	case 3:
		LinkInit(LinkID, LINK_SPEED_3);
		break;
	default:
		break;
	}

	if(IsSender)
	{
		//send
		VerifyOK = true;
		MakeBuffer();
 		init_timer(0, 0xffff, 0xffffffff);
		StartTime = start_timer(0);	
		LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);
		EndTime = stop_timer(0);	
		Duration = StartTime - EndTime;		
		Speed = 4 * BUFFER_LENGTH * CLOCK_RATE / (float)Duration;

		//recv
		for(count = 0; count < REPEAT_TIME; count++)
		{
			LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	
			if(!CheckBuffer())
			{
				VerifyOK = false;
				break;
			}
			LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);
			FrameCount++;
		}
		if(VerifyOK)
			printf("Verify OK. Speed = %f\n", Speed);
		else
			printf("Verify Error.\n");
	}
	else
	{
		VerifyOK = true;
		//recv
		LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	
		
		if(!CheckBuffer())
			VerifyOK = false;

						
		//send	
		for(count = 0; count < REPEAT_TIME; count++)
		{
			LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);
			LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	
			if(!CheckBuffer())
			{
				VerifyOK = false;
				break;
			}
			FrameCount++;
		}
		if(VerifyOK)
			printf("Verify OK.\n");
		else
			printf("Verify Error.\n");
	}

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -