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

📄 hw_acces.c

📁 usb host在ARM7上的实现
💻 C
字号:
/****************************************************************************/
/*	includes																*/
/****************************************************************************/
#include "HostStack.h"


//****************************************************************************
// 函数名称:read_register_burst_char
// 输入参数:register_address,寄存器地址
//			 data,数据存放指针
//			 length,数据长度
// 输出参数:无
// 功能描述:突发读处理
//****************************************************************************
void read_register_burst_char( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	unsigned short	tmp;
	int				i;
	int				odd;

	disable();
	odd		= length & 0x0001;
	if ( odd )		length	&= ~0x1;		
	outcommand( register_address );
	for ( i = 0; i < length; i += 2 )
	{	tmp		= indata();
		*(data + i + 1)		= tmp >> 8;
		*(data + i + 0)		= tmp & 0x00FF;
	}
	if ( odd )
	{	tmp	= indata();
		*(data + i + 0)		= tmp & 0x00FF;
	}
	enable();
}
	

//****************************************************************************
// 函数名称:write_register_burst_char
// 输入参数:register_address,寄存器地址
//				   data,数据存放指针
//				   length,数据长度
// 输出参数:无
// 功能描述:突发写处理
//****************************************************************************
void write_register_burst_char( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	unsigned short	tmp;
	int				i;
	disable();
	register_address	|= 0x80;
	outcommand( register_address );
	for ( i = 0; i < length; i += 2 )
	{
		tmp		= (*(data + i + 1) << 8) | *(data + i);		/*  swap bytes  */
		outdata( tmp );		
	}
	enable();
}

/*
void read_register_burst_int( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	int		i;

	outcommand( register_address );
	
	for ( i = 0; i < length; i++ )
		*data++		= indata();
}


void write_register_burst_int( unsigned short register_address, unsigned short *data, unsigned short length  )
{
	int		i;

	register_address	|= 0x80;

	outcommand( register_address );
	
	for ( i = 0; i < length; i++ )
		outdata(  *data++ );
}

*/

//****************************************************************************
// 函数名称:read_register32
// 输入参数:register_address
// 输出参数:tmp,读回的寄存器的值
// 功能描述:读ISP1160/ISP1161 32位寄存器
//***************************************************************************
unsigned long read_register32( unsigned short register_address )
{
	unsigned long		tmp;
	disable();
	outcommand( register_address );
	tmp		 = indata();
	tmp		|= ((unsigned long)indata() << 16);
	enable();
	return ( tmp );
}

//****************************************************************************
// 函数名称:write_register32
// 输入参数:register_address
//				   value,写入的值
// 输出参数:无
// 功能描述:写ISP1160/ISP1161 32位寄存器
//***************************************************************************
void write_register32( unsigned short register_address, unsigned long value )
{
	register_address	|= 0x80;
	disable();
	outcommand( register_address );
	outdata( (unsigned short)(value & 0x0000FFFF) );
	outdata( (unsigned short)(value >> 16)        );
	enable();
}

//****************************************************************************
// 函数名称:read_register16
// 输入参数:register_address,需要的寄存器地址
// 输出参数:读回的寄存器数值
// 功能描述:读ISP1160/ISP1161 16位寄存器
//****************************************************************************
unsigned short read_register16( unsigned short register_address )
{
	unsigned short	tmp;
	disable();
	outcommand( register_address );
	tmp	= indata();
	enable();
	return ( tmp );
}

//****************************************************************************
// 函数名称:write_register16
// 输入参数:register_address,需要的寄存器地址
//				   value,需写入的值
// 功能描述:写ISP1160/ISP1161 16位寄存器
//****************************************************************************
void write_register16( unsigned short register_address, unsigned short value )
{
	disable();
	register_address	|= 0x80;
	outcommand( register_address );
	outdata( value );
	enable();
}

⌨️ 快捷键说明

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