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

📄 uarttest.c

📁 samsung 最新芯片2450 的测试程序.
💻 C
📖 第 1 页 / 共 3 页
字号:
		UartConTmp.cDmaRxTSZ=g_UART_DmaRxTSZ;
		TestUartbyModeUnit(g_UART_portTx,	&UartConTmp,  0,0);		
//		TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:2,1,(g_UART_RXtest==0)?4:3,1,
//							g_UART_RXTimeOuten,0,  		g_UART_EnableFifo, g_UART_TxTrig,g_UART_RxTrig,  		    0,1,    g_UART_DmaRxDMD_HS,g_UART_DmaRxTSZ,   0,0);	
		break;		
		
//		case 3: //dma - tx1 rx0		
//		printf("###dma (tx1 rx0) \n");
//		TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:3,1,(g_UART_RXtest==0)?4:2,1,
//							g_UART_RXTimeOuten,0,  		g_UART_EnableFifo, g_UART_TxTrig,g_UART_RxTrig,  		    0,1,    g_UART_DmaRxDMD_HS,g_UART_DmaRxTSZ,   0,0);	
//		break;		
		

/*		
		case 5:
		
		//g_UART_TXdatasize=16777215;
		g_UART_TXdatasize=1024574;
		g_UART_RXdatasize=g_UART_TXdatasize;
		
		//rx
		UartConTmp=UartConTestRXINT[1];//interrupt rx, no fifo
		UartConTmp.bRxPolling=1;
		UartConTmp.iBaudrate=1200;
		//UartConTmp.iBaudrate=200000;
		//UartConTmp.iBaudrate=	g_UART_baudrate;
		UartConTmp.cOpClock = (g_UART_baudrate>1000000)?3:2;
		//UartConTmp.cRtsTrig=7;
		//UartConTmp.cOpClock=3;
		//UartConTmp.fEnableFifo=1;
		//UartConTmp.cRxTrig=3;
		
		//tx
		UartConTmp2=UartConTestRXINT[0];//polling tx, no fifo
		UartConTmp2.iBaudrate=UartConTmp.iBaudrate;
		UartConTmp2.cOpClock=UartConTmp.cOpClock;
		UartConTmp.bTxPolling=1;
		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTmp2,    g_UART_portRx, &UartConTmp,    0, 0);
		break;
		
*/		
		
		case 5:
		g_UART_TXdatasize=1024;
		g_UART_RXdatasize=g_UART_TXdatasize;
		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConINTTx,    g_UART_portRx, &UartConINTRx,    0, 0);
		break;	
		
		
		
				
		
		case 7://interrupt test
		g_UART_TXdatasize=10;
		printf("###interrupt test no fifo (level)\n");
		TestUartbyModeUnit(g_UART_portTx,	&UartConTest[0],  0,UART_TxFifotestINT);

		g_UART_TXdatasize=128;
		printf("###interrupt test fifo empty(level)\n");
		TestUartbyModeUnit(g_UART_portTx,	&UartConTest[1],  0,UART_TxFifotestINT);
		printf("###interrupt test fifo 16(level)\n");
		TestUartbyModeUnit(g_UART_portTx,	&UartConTest[2],  0,UART_TxFifotestINT);
		printf("###interrupt test fifo 32(level)\n");
		TestUartbyModeUnit(g_UART_portTx,	&UartConTest[3],  0,UART_TxFifotestINT);
		printf("###interrupt test fifo 48(level)\n");
		TestUartbyModeUnit(g_UART_portTx,	&UartConTest[4],  0,UART_TxFifotestINT);
		break;		
		
		
		case 8:
		g_UART_TXdatasize=10;
		g_UART_RXdatasize=10;
		UartConTmp=UartConTestRXINT[1];//interrupt rx, no fifo
		printf("###interrupt test rx fifo no fifo(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestINT);
						       //tx                                                  //rx
		g_UART_TXdatasize=128;
		g_UART_RXdatasize=128;
		UartConTmp.fEnableFifo=1;
		UartConTmp.cRxTrig=0;
		printf("###interrupt test rx fifo 1 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestINT);
		
		UartConTmp.cRxTrig=1;
		printf("###interrupt test rx fifo 8 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestINT);
		
		UartConTmp.cRxTrig=2;
		//UartConTmp.bRXTimeOuten=1;
		printf("###interrupt test rx fifo 16byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestINT);
		
		UartConTmp.cRxTrig=3;
		printf("###interrupt test rx fifo 32 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestINT);
		break;				    							    


		case 9:
		UartConTmp=UartConTestRXINT[1];//interrupt rx, no fifo
		UartConTmp.fEnableFifo=1;
		UartConTmp.bRXTimeOuten=1;		
		g_UART_TXdatasize=128;
		g_UART_RXdatasize=128;

		UartConTmp.cRxTrig=0;
		printf("###interrupt test rx fifo 1 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestTimeoutINT);
		
		UartConTmp.cRxTrig=1;
		printf("###interrupt test rx fifo 8 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestTimeoutINT);
		
		UartConTmp.cRxTrig=2;
		printf("###interrupt test rx fifo 16byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestTimeoutINT);
		
		UartConTmp.cRxTrig=3;
		printf("###interrupt test rx fifo 32 byte(level)\n");		
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartConTestRXINT[0],    g_UART_portRx, &UartConTmp,    0, UART_RxFifotestTimeoutINT);
		break;			
		

		case 10:
		TestTxRxUartbyModeUnit(g_UART_portTx, &UartGPIO,  g_UART_portRx, &UartGPIO, 0, UART_gpiotest);
		
	}
		
	printf("###test Done");
}
/*
		case 0://polling
//		printf("###polling no fifo\n");
//		TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,   0,3,3,   0,1,    1,0,  0,0);	
		
		//printf("###polling fifo tx empty   rx 1 \n");
		//TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  1,0,0,   0,1,    1,0,   0,0);	

		//printf("###polling fifo tx 16   rx 8 \n");
		//TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  1,1,1,   0,1,    1,0,   0,0);	
		
		//printf("###polling fifo tx 32   rx 16 \n");
		//TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  1,2,2,   0,1,    1,0,   0,0);	

	//	printf("###polling fifo tx 48   rx 32 \n");
	//	TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  1,3,3,   0,1,    1,0,   0,0);	
		break;		


		case 1://polling - afc, etc
//		printf("###polling afc tx 48  rx32 afc 48\n");
//		TestUartbyModeUnit(g_UART_port,0,		1,1,4,		1,1,115200,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  1,3,3,   2,3,    1,0);	

	//	printf("###polling no fifo stop bit 2\n");
	//	TestUartbyModeUnit(g_UART_port,0,		1,2,4,		3,1,115200,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  0,3,3,   0,1,    1,0,  0,0);	
		//cause error

		//printf("###polling no fifo\n");
		//TestUartbyModeUnit(g_UART_port,0,		1,1,4,		(g_UART_baudrate>1000000)?3:1,1,g_UART_baudrate,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,   0,3,3,   0,1,    1,0);	


//		printf("###polling no fifo data bit 7\n");
//		TestUartbyModeUnit(g_UART_port,0,		1,1,3,		1,1,115200,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  0,3,3,   1,1,    1,0);	

//		printf("###polling no fifo parity bit odd\n");
//		TestUartbyModeUnit(g_UART_port,0,		2,1,3,		1,1,115200,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  0,3,3,   0,1,    1,0);	
		
//		printf("###polling no fifo parity bit even\n");
//		TestUartbyModeUnit(g_UART_port,0,		3,1,3,		1,1,115200,		(g_UART_TXtest==0)?4:0,1,(g_UART_RXtest==0)?4:0,1,	0,1,  0,3,3,   0,1,    1,0);	
		
		break;	*/

//////////////////////////////////////////////////////////
//         Test support functions
//

//ascii code maker 33~126  : 0~93
//                     21h~7eh
//bytesize : including r, 0.
//-------------- [bytesize]
//0    n-2    (index)
//1    n-1 n (number)
//       | 
//     ascii \r
int UART_TxstrMake(char *str, int bytesize)
{
	int i;

	printf("now tx data making...\n");

	for(i=0; i<bytesize-1; i++)
	{
		str[i]=i%94 + 33;
	}
	str[i]='\r';
	i++;	

	printf("data making done.\n");

	return i;
}

//ascii code maker 33~126  : 0~93
//return ok. false
bool UART_RxstrVerify(char *str, int bytesize)
{
	int i=0;
	int failnum=0;

	printf("now received data verifying...\n");
	
	for(i=0; i<bytesize-1; i++)
	{
		if( str[i]!=(i%94 + 33) ) 
		{
			failnum++;	
			if(failnum<10) printf("0x%x, at 0x%x  \n", str[i], str+i);
		}
	}
	if( str[i]!='\r' ) 
	{
	failnum++;	
	if(failnum<10) printf("0x%x, at 0x%x  \n", str[i], str+i);	
	}
	
	printf("verify fail num : %d\n",failnum);
	
	if(failnum ==0) return 1;
	else return 0;
}



//ascii code maker 33~126  : 0~93
//return ok. false,   return size(with 'r' )
void UART_RxstrPrint(char *str, int bytesize)
{
	int i=0;
	//int failnum=0;

	for(i=0;i<bytesize;i++)
	{
		putchar(str[i]);
	}
	
}




//int size : byte
void UART_RxBufferClear(char * buffaddr, int buffsize)
{
	int i;
	char *ptrBuf = buffaddr;
	printf("now buffer is clearing...\n");
	
	for(i=0;i< buffsize; i++)
		*(ptrBuf+i) = 0;
		
	printf("buffer clearing is finished.\n");
}

	


//////////////////////////////////////////////////////////
//         Configure functions
//

void UART_ChangeConsole(void)
{
	int ch;
	//guide, change console for debug
	printf("Select Debug port(Console)\n");
	printf("after enter number, please change uart cable to adquete port as below\n");	
	printf("then press Enter one more time\n");		
	printf(" [COM 2port -Uart1]               [COM1 port-Uart0]\n");		
	printf("                [1] Default                     [0]");	
	ch = GetIntNum();
	ch = (ch ==0)? 0 :1;
	Console( (unsigned int)ch);//for debug port	

	getchar();
}


void UART_Selectport(void)
{
	unsigned char ch;

	printf("Select TxChannel(0~3) [D=0] : ");
	ch = (unsigned char)GetIntNum();
	//ch =0;
	g_UART_portTx	 = ( ch >3 )? 0 : ch;	
	
	printf("Select RxChannel(0~3) [D=0] : ");
	ch = (unsigned char)GetIntNum();
	//ch =0;
	g_UART_portRx	 = ( ch >3 )? 0 : ch;		
}


void UART_Selecttransfermode(void)
{
	printf("Select Tx test  : 0. disable  1. enable[D] ");	
	g_UART_bTXtest	 = ( GetIntNum() == 0)? 0 : 1;
	printf("Select Rx test  : 0. disable  1. enable[D] ");		
	g_UART_bRXtest	 = ( GetIntNum() == 0)? 0 : 1;	
}


void UART_Configure(void)
{

	int tmp;	
	

	printf("Select Data transfer size  : [0] 10byte, [1]1024byte, [2]1048574byte(1Mbyte-2byte)  [3]16777215byte(16Mbyte-1byte) [Enter] - set your own value]");		
	tmp=GetIntNum();
	switch(tmp )
	{
		case 0: 		g_UART_RXdatasize = 10; 		g_UART_TXdatasize = 10;  break;
		case 1: 		g_UART_RXdatasize = 1024; 	g_UART_TXdatasize = 1024; break;
		case 2: 		g_UART_RXdatasize = 1048574;	g_UART_TXdatasize = 1048574; break;
		case 3: 		g_UART_RXdatasize = 16777215;	g_UART_TXdatasize = 16777215; break;
		default: 		
		printf("enter : ");
		tmp=GetIntNum();		
		g_UART_RXdatasize = tmp;		g_UART_TXdatasize = tmp;		
		break;
	}	
	printf("data size : %d byte \n", g_UART_RXdatasize);

	printf("Select baudrate  : [0] 110, [1] 115200, [2]4,000,000  [Enter] - set your own value]");		
	tmp=GetIntNum();
	switch(tmp )
	{
		case 0: 		g_UART_baudrate = 110; 		break;
		case 1: 		g_UART_baudrate = 115200; 	break;
		case 2: 		g_UART_baudrate = 4000000;	break;
		default: 		
		printf("enter : ");
		tmp=GetIntNum();		
		g_UART_baudrate = tmp;		
		break;
	}	
	printf("baudrate : %d byte \n", g_UART_baudrate);	
	
	// Select UART FIFO mode
	printf("\n\nSelect FIFO Mode 0. no FIFO[D]  1. FIFO mode\n Choose : ");
	tmp = GetIntNum();
	if ( tmp == 1) 	g_UART_EnableFifo = 1;
	else 		 	g_UART_EnableFifo = 0;

	g_UART_TxTrig =0; //for not affecting to other bit
	g_UART_RxTrig =0;
	if(g_UART_EnableFifo)
	{
		if(g_UART_bTXtest)
		{
			printf("\n\nSelect FIFO Size(Tx[byte])\n 0. Empty  1. 16   2. 32  3. 48[D] \n Choose : ");
			tmp = GetIntNum();
			g_UART_TxTrig = ( (tmp>=0)&&(tmp<4)  )? tmp : 3 ;
		}

		if(g_UART_bRXtest)
		{
			printf("\n\nSelect FIFO Size(Rx[byte])\n 0. 1  1. 8   2. 16  3. 32[D] \n Choose : ");
			tmp = GetIntNum();
			g_UART_RxTrig = ( (tmp>=0)&&(tmp<4)  )? tmp : 3 ;		

			printf("Select RXTimeOuten : 0. disable  1. enable[D] ");	
			g_UART_RXTimeOuten	 = ( GetIntNum() == 0)? 0 : 1;

		}


	}
	else
		g_UART_RXTimeOuten =0;
	
	if(g_UART_bRXtest)
	{
		printf("\n\nSelect Rx DMA mode \n");
		printf("0. Demand    1. Handshake[D] :\n Choose : ");
		tmp = GetIntNum();
		if (tmp == 0)	g_UART_DmaRxDMD_HS = 0; // demand
		else 			g_UART_DmaRxDMD_HS = 1; // handshake

		printf("\n\nSelect Transfer unit \n");
		printf("0. Single[D]   1. burst(4) : \n Choose : ");
		tmp = GetIntNum();
		if (tmp == 1)	g_UART_DmaRxTSZ = 1; // burst
		else 			g_UART_DmaRxTSZ = 0; // single
	}

	if(g_UART_bTXtest)
	{
		printf("\n\nSelect Tx DMA mode \n");
		printf("0. Demand    1. Handshake[D] :\n Choose : ");
		tmp = GetIntNum();
		if (tmp == 0)	g_UART_DmaTxDMD_HS = 0; // demand
		else 			g_UART_DmaTxDMD_HS = 1; // handshake

		printf("\n\nSelect Transfer unit \n");
		printf("0. Single[D]   1. burst(4) : \n Choose : ");
		tmp = GetIntNum();
		if (tmp == 1)	g_UART_DmaTxTSZ = 1; // burst
		else 			g_UART_DmaTxTSZ = 0; // single
	}	
}
	

⌨️ 快捷键说明

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