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

📄 xiaobiao.c

📁 msp430和nrf905的例子,联系qqliuyong007@163.com
💻 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 + -