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

📄 test.c

📁 该软件源程序示范了如何在嵌入式系统中实现USB-OTG协议
💻 C
📖 第 1 页 / 共 2 页
字号:
						 count_error = 0;
                       	for(count_rdwr=0; count_rdwr<0x0400; count_rdwr++)
						{       
                         chipid = Hal4Sys_Read(0x03);
                         chipid = (chipid<<8)|Hal4Sys_Read(0x02);
						 if(chipid !=0x1302)
						 {
							  Hal4Sys_ResetPCBA(); 
							  printf("Chip ID=0x%04x ",chipid);
                              count_error++;
						 }
						}
                         printf("Product ID error times=0x%04x\n",count_error++);

						 count_error = 0;
                       	for(count_rdwr=0; count_rdwr<0x0400; count_rdwr++)
						{       
                         chipid = Hal4Sys_Read(0x15);
                         chipid = (chipid<<8)|Hal4Sys_Read(0x14);
						 if(chipid !=0x0100)
						 {
                              Hal4Sys_ResetPCBA();
							  printf("Ver ID=0x%04x  ",chipid);
                              count_error++;
						 }
						}
                         printf("Ver ID error times=0x%04x\n",count_error++);

                         reg_test(0x04,0x55,0xaa);
                         reg_test(0x12,0x54,0xaa);
                         reg_test(0x16,0x55,0xaa);
                         reg_test(0x18,0x55,0xa8);

                         reg_test(0x06,0x55,0xaa);
                         reg_test(0x0a,0x55,0xaa);
                         reg_test(0x0c,0x55,0xaa);

                         reg_test(0x0e,0x55,0xaa);
                         reg_test(0x1A,0x55,0xaa);
                         reg_test1(0x1C,0x55,0xaa);
                         reg_test1(0x1D,0x55,0xaa);
                         reg_test1(0x1E,0x55,0xaa);
                         reg_test1(0x1F,0x55,0xaa);
                        cprintf("Please select: ");
						break;
				case 'i':
				case 'I':T_Main_Menu();
	    				Latch_int(1);
	    				Latch_int(2);
	    				Latch_int(4);
	    				Latch_int(8);
	    				Latch_int(16);
	    				Latch_int(32);
	    				Latch_int(64);
	    				Latch_int(128);
						break;
				case 's':
				case 'S':T_Main_Menu();
                       printf("Pls input I2C clk delay= 0x");
					    ad1 = input();
                        printf("%01x", ad1);
					    ad2 = input();
                        printf("%01x\n", ad2);
                        speed = (ad1<<4)|ad2;
                        cprintf("Please select: ");
						break;
				default:T_Main_Menu();
	    				break;
				}
			}

         if(Hal4Sys_Get_Int())
			fn_usb_isr();
	} 
}
void reg_test(UCHAR addr,UCHAR data,UCHAR data1)
{
						count_error = 0;
                        Hal4Sys_Write(0xff, addr+1);
                       	for(count_rdwr=0; count_rdwr<0x0a00; count_rdwr++)
						{  
                         Hal4Sys_Write(0xff, addr+1);							
						 Hal4Sys_Write(data, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=data)
						 {
                         count_error++;
						 Hal4Sys_ResetPCBA(); 
						 }

                         Hal4Sys_Write(data, addr+1);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=0)
                         count_error++;

						 Hal4Sys_Write(data1, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=data1)
                         count_error++;

                         Hal4Sys_Write(data1, addr+1);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=0)
						 {
                         count_error++;
						 Hal4Sys_ResetPCBA(); 
						 }
						}
                        printf("set reg    0x%02x",addr);
                        printf("      clear reg  0x%02x ",addr+1);
						if(count_error)
                        printf("   error times=0x%04x\n",count_error);
						else
						{
	                    	textattr(0x02);
                            printf("   PASS\n");
                            textattr(0x03);
						}

}

void reg_test1(UCHAR addr,UCHAR data,UCHAR data1)
{
						count_error = 0;
                        Hal4Sys_Write(0x00, addr);
                       	for(count_rdwr=0; count_rdwr<0x0a00; count_rdwr++)
						{  
                         Hal4Sys_Write(0x00, addr);							
						 Hal4Sys_Write(data, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=data)
						 {
                         count_error++;
						 Hal4Sys_ResetPCBA(); 
						 }

                         Hal4Sys_Write(00, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=0)
                         count_error++;

						 Hal4Sys_Write(data1, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=data1)
                         count_error++;

                         Hal4Sys_Write(00, addr);
						 chipid=Hal4Sys_Read(addr);
						 if(chipid !=0)
						 {
                         count_error++;
						 Hal4Sys_ResetPCBA(); 
						 }
						}
                        printf("set reg    0x%02x",addr);
                        printf("      clear reg  0x%02x ",addr);
						if(count_error)
                        printf("   error times=0x%04x\n",count_error);
						else
						{
	                    	textattr(0x02);
                            printf("   PASS\n");
                            textattr(0x03);
						}

}

UCHAR input(void)
{
    UCHAR temp, key;
	do{
		key = 0;
		if( bioskey(1) )
		{
		    key = bioskey(0);
			key &= 0xff;
			switch(key)
			{
				case '0':
                        temp = 0;
						break;

				case '1':
                        temp = 1;
						break;
				case '2':
                        temp = 2;
						break;
				case '3':
                        temp = 3;
						break;
				case '4':
                        temp = 4;
						break;
				case '5':
                        temp = 5;
						break;
				case '6':
                        temp = 6;
						break;
				case '7':
                        temp = 7;
						break;
				case '8':
                        temp = 8;
						break;
				case '9':
                        temp = 9;
						break;
				case 'a':
                        temp = 10;
						break;
				case 'b':
                        temp = 11;
						break;
				case 'c':
                        temp = 12;
						break;
				case 'd':
                        temp = 13;
						break;
				case 'e':
                        temp = 14;
						break;
				case 'f':
                        temp = 15;
						break;
				default:
	    				break;
				}
		}
			}while(!key);
            return temp; 
} 

   

void Latch_int(UCHAR int_bit)
{

    Hal4Sys_Write(0xFF, CLR_INT_LATCH); 
 

    if(Hal4Sys_Get_Int())
    	printf("int latch initial fail\n");
	else
    	printf("int latch initial ok\n");

	Hal4Sys_Write(int_bit, SET_INT_LATCH); 

    if(Hal4Sys_Get_Int())
    	printf("Vbus_det_int interrupt pass\n");
	else
    	printf("Vbus_det_int interrupt fail\n");
}
                         	

⌨️ 快捷键说明

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