📄 hw_acces.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 + -