📄 uarttest.c
字号:
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 + -