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

📄 rwreg.c

📁 飞利浦公司usb2.0芯片isp1581的通用驱动代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2000 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:        rdreg.c
   // Author:           Qian Jiang
   // Created:          17 Aug, 2000
   // Modified:
   // Revision: 		0.0
   //
   //*************************************************************************
   //
   //*************************************************************************
   */

#include <stdio.h>
#include <string.h>
#include <bios.h>
#include <dos.h>
#include <conio.h>

#include "BasicTyp.h"
#include "common.h"

#include "usb200.h"

#include "HAL4Sys.h"
#include "ISP1581.h"
#include "isr.h"
#include "mainloop.h"
#include "verify.h"
#include "rwreg.h"

#define true 1
#define false 0

void test_chipid(void)
{
	unsigned short j;

	j = ISP1581_ReadChipID();
	cprintf("chip id = %x, chip revsion = %x \r\n", j);
}

void test_addren(void)
{
	unsigned char i, j;

	while(i)
	{
		ISP1581_SetAddressEnable(i, 0x80);
		j = ISP1581_GetAddress();
		if(j != (i | 0x80))
		{
			cprintf("test address register failed, write = %x, read = %x, \r\n", i, j);
			if (key2go() != 'c')
			{
				return;
			}
			else
				i <<= 1;
		}
		else
			i <<=  1;
	}
	cprintf("test address register passed\r\n");
	return;
}

void test_epmaxsize()
{
unsigned short i=0x1, j;
unsigned char epindex, error, errorall, eptemp;
	errorall = 0;
	for(epindex = 0x10; epindex <= 0x1f; epindex ++)
	{
		i = 0x1;
		while(i)
		{
			ISP1581_SetEPMAXSize(epindex,i);
			j = ISP1581_GetEPMAXSize(epindex);
			if(j != i)
			{
				cprintf("test max endpoint size register failed, epindex = %x write = %x, read = %x, \r\n", epindex,i, j);
				error = 1;
				errorall = 1;

				if(key2go() != 'g')
				{
					return;
				}
			}

			if (i < 0x1000)
			{
				i <<= 1;
			}
			else
			{
				i = 0;
				if(error)
				{
				cprintf("test max endpoint size register for ep%x failed\r\n", epindex);
				error = 0;
				}
			}
		}

		if(errorall==0)
		{
			cprintf("test max endpoint size register for ep%x passed\r\n", epindex);
		}
	}

}

void test_eptype(void)
{
unsigned char i=0x1, j;
unsigned char epindex, error, errorall;
	error = 0;

	for(epindex = 0x10; epindex <= 0x1f; epindex ++)
	{
		while(i)
		{
			ISP1581_SetEndpointConfig(epindex, i);
			j = ISP1581_GetEndpointConfig(epindex);

			if(j != i)
			{
				cprintf("test endpoint type register failed, write = %x, read = %x, \r\n", i, j);
				error = 1;

				if(key2go() != 'g')
				{
					return;
				}
			}

			if (i < 0x10)
			{
				i <<= 1;
			}
			else
			{
				i = 0;
			}

		}
	}

	if(error == 0)
	{
		cprintf("test endpoint type register passed\r\n");
	}
}

void test_mode(void)
{
	unsigned char i= 0x1, j, error = 0;
	
	while(i)
	{
		ISP1581_SetMode(i);
		j = ISP1581_GetMode();
		if(j != i)
		{
			cprintf("test endpoint mode register failed, write = %x, read = %x, \r\n", i, j);
			if(key2go() != 'g');
			{
				error = 0;
				return;
			}
		}

		if(i == 0x08)
			i <<= 2;
		else
			i <<= 1;
	}
	if(error)
		cprintf("test endpoint mode register failed/partially passed\r\n");
	else
		cprintf("test endpoint mode register passed\r\n");
}

void test_intcfg()
{
	unsigned char i= 0x1, j, error = 0;

	while(i)
	{
		ISP1581_SetIntConfig(i);
		j = ISP1581_GetIntConfig();
		if(j != i)
		{
			cprintf("test interrupt config register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}
		
		i <<= 1;
	}
	
	if(error)
	{
		cprintf("test interrupt config register failed/partial passed\r\n");
	}
	else
	{
		cprintf("test interrupt config register passed\r\n");
	}
}

void test_intmask()
{
	unsigned short i=1, j, error = 0;

	while(i)
	{
		ISP1581_SetIntEnableLow(i);
		j = ISP1581_GetIntEnableLow();
		if(j != i && i != 0x200 && i != 0x80)
		{
			cprintf("test interrupt maskl register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		i <<= 1;
	}

	while(i)
	{
		ISP1581_SetIntEnableHigh(i);
		j = ISP1581_GetIntEnableHigh();
		if(j != i)
		{
			cprintf("test interrupt maskh register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		if(i < 0x40)
			i <<= 1;
		else
			i = 0;
	}

	if(error)
		cprintf("test interrupt mask register failed/partial passed\r\n");
	else
		cprintf("test interrupt mask register passed\r\n");
}

void test_dcount(void)
{
unsigned char i=0x1, j;
unsigned char epindex, error = 0;
	for(epindex = 0x10; epindex <= 0x1f; epindex ++)
	{
		ISP1581_SetEPIndex(epindex);
		while(i)
		{
			ISP1581_SetDCount(i);
			j = ISP1581_GetDCount();
			if(j != i)
			{
				cprintf("test EP%x data counter register failed, write = %x, read = %x, \r\n",epindex, i, j);
				error = 1;
				if(key2go() != 'g')
					return;
			}

			i <<= 1;

		}
	}

	if(error)
		cprintf("test data counter register failed/partial passed\r\n");
	else
		cprintf("test data counter register passed\r\n");
}

void test_dmacount(void)
{
	unsigned short i=0x1, j;
	unsigned char error=0;

	while(i)
	{
		ISP1581_SetDMACounterLow(i);
		j = ISP1581_GetDMACounterLow();
		if(j != i)
		{
			cprintf("test dma counter registerh failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		i <<= 1;
	}
	
	while(i)
	{
		ISP1581_SetDMACounterHigh(i);
		j = ISP1581_GetDMACounterHigh();
		if(j != i)
		{
			cprintf("test dma counter registerh failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		i <<= 1;
	}

	if(error)
		cprintf("test dma counter register failed/partial passed\r\n");
	else
		cprintf("test dma counter register passed                                      \r\n");
}

void test_dmacfg(void)
{
	unsigned int i=1, j;
	unsigned char error  = 0;
	while(i)
	{
		ISP1581_SetDMAConfig(i);
		j = ISP1581_GetDMAConfig();
		if(j != i && (i != 0x80 | i != 0x40))
		{
			cprintf("test dma config register failed, write = %x, read = %x, \r\n", i, j);
			key2go();
			error = 1;
			if(key2go() != 'g')
				return;
		}

		i <<= 1;
	}
	if(error)
		cprintf("test dma config register failed/partial passed\r\n");
	else
		cprintf("test dma config register passed\r\n");
}

void test_dmahdcfg(void)
{
	unsigned char i=1, j, error = 0;

	while(i)
	{
		ISP1581_SetDMAHDCfg(i);
		j = ISP1581_GetDMAHDCfg();
		if(j != i)
		{
			cprintf("test dma hardware config register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		i <<= 1;
	}
	if(error)
		cprintf("test dma hardware config register failed/partial passed\r\n");
	else
		cprintf("test dma hardware config register passed\r\n");
}

void test_dmaintmask(void)
{
	unsigned char i=1, j, error = 0;

	while(i)
	{
		ISP1581_SetDMAIntMask(i);
		j = ISP1581_GetDMAIntMask();
		if(j != i)
		{
			cprintf("test dma hinterrupt mask register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		if (i < 0x40)
			i <<= 1;
		else
			i = 0;
	}
	if(error)
		cprintf("test dma interrupt mask register failed/partial passed\r\n");
	else
		cprintf("test dma interrupt mask register passed\r\n");
}

void test_dmaep(void)
{
	unsigned char i=1, j, error = 0;

	while(i)
	{
		ISP1581_SetDMAEP(i);
		j = ISP1581_GetDMAEP();
		if(j != i)
		{
			cprintf("test dma endpoint register failed, write = %x, read = %x, \r\n", i, j);
			error = 1;
			if(key2go() != 'g')
				return;
		}

		if (i < 0x40)
			i <<= 1;
		else
			i = 0;
	}

⌨️ 快捷键说明

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