📄 xiaobiao.c
字号:
//参数设置
const unsigned char CheckAddr[10]=
{ 0xbf,0x20,0x9e,0x82,0x83,0x84,0x85,0xa9,0x9f,0xaa};
const unsigned long CheckData[10]=
{
VADC,
HFconst,
Irechg,
Is1,
Is2,
Is3,
Is4,
Failvoltage,
Istartup,
EaddMode
};
//功率增益校正
unsigned short Pgain(float i)
{ double n;
unsigned short q;
n=(-i)/(1+i);
if(n>=0) q=(unsigned short)(n*_23_bit);
else q=(unsigned short)(_24_bit+n*_23_bit);
return q;
}
//相校正
unsigned short Phsreg(float i)
{
double n;
unsigned short q;
n=acos((1+i)*0.5)-pi/3;
if(n>0) q=(unsigned short)(n*_23_bit);
else q=(unsigned short)(_24_bit+n*_23_bit);
return q;
}
//电压校正
unsigned short Ugain(float i,unsigned long u)
{
double m,n;
unsigned short q;
m=u/100;
n=i/m-1;
if(n>=0) q=(unsigned short)(n*_23_bit);
else q=(unsigned short)(_24_bit+n*_23_bit);
return q;
}
//电流校正
unsigned short Igain(float i,unsigned long dianliu)
{
double m,n;
unsigned short q;
m=dianliu/1000;
n=i/m-1;
if(n>=0) q=(unsigned short)(n*_23_bit);
else q=(unsigned short)(_24_bit+n*_23_bit);
return q;
}
void ATT7022Reset(void)
{
SPI_PDIR |= SPI_AREST;
SPI_POUT |= SPI_AREST;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
SPI_POUT &=~SPI_AREST;
spi_write_parameter(0xD3,0);
spi_write_parameter(0xC3,0);
}
void adjATT7022(void)
{ unsigned long a[3][2],b[3][5],c[3],d[3];
int j;
ATT7022Reset();
//读出写入寄存器的值
for(j=0;j<3;j++)
{ for(i=0;i<2;i++)
a[j][i]=Pgain(Pgainerr[j][i]);
for(i=0;i<5;i++)
b[j][i]=Phsreg(Phsregerr[j][i]);
c[j]=Ugain(Ur[j],SPI.U[j]);
d[j]=Igain(Ir[j],SPI.I[j]);
}
//参数设置
for(i=0;i<10;i++)
{
spi_write_parameter(CheckAddr[i],CheckData[i]);
}
//写入校表数据
for(j=0;j<2;j++)
{
for(i=0;i<3;i++)
spi_write_parameter((0x86+i+3*j),a[i][j]);
}
for(j=0;j<3;j++)
{
for(i=0;i<5;i++)
spi_write_parameter(0x8c+i+5*j,a[j][i]);
}
for(i=0;i<3;i++)
{
spi_write_parameter(0x9b+i,c[i]);
spi_write_parameter(0xa6+i,d[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -