新闻  |   论坛  |   博客  |   在线研讨会
ATT7022 SPI底层驱动
0750long | 2009-05-10 10:43:06    阅读:4132   发布文章

ATT7022 SPI底层驱动

 

rar

Att7022通过SPI接口与控制器连接,ATT7022提供测量电压、电流,有功功率、无功功率、有功电能,无功电能,频率,相角,基波谐波等信息,是为三相电能表而设计的,下面是ATT7022的读写操作,和一些底层驱动。具体文档请参看数据手册。控制器lpc2000系列

 

 

void Att7022_Init(void)
{
 PINSEL0 &= ~((0x0f << 8) + (0x03 << 12) + (0x03 << 14) + (0x03 << 16) );
 
 IO0DIR = ( IO0DIR & ~SCLK ) | SCLK;     // 时钟
 IO0DIR = ( IO0DIR & ~MISO ) ;      // 输入
 IO0DIR = ( IO0DIR & ~MOSI ) | MOSI;    // 输出
 IO0DIR = ( IO0DIR & ~nCS )  | nCS;      // 片选
  
  IO0SET = nCS;
  
}

 

uint32 SpiWrite( uint8 wCmd, uint32 data )
{
 uint8 i;
 uint32 iRet;
  
 IO0SET = nCS;
 IO0CLR = SCLK;
 IO0CLR = nCS;       // 打开SPI
                         
 wCmd = wCmd | 0x80;                    // 最高位置位,表示为写操作
 for( i = 0; i < 8; i++ )               // 发送一个字节的数据
 {
  IO0SET = SCLK;SpiDelay(1);
  if( wCmd & 0x80 )                  // 高位在前进行发送
  {
   IO0SET = MOSI;
  }
  else
  {
   IO0CLR = MOSI;
  }
  IO0CLR = SCLK;SpiDelay(1);
  wCmd = wCmd << 1;
 }

 SpiDelay(1);
 for( i = 0; i < 24; i++ )             // 发送24位的数据
 {
  IO0SET = SCLK;SpiDelay(1);
  if( data & 0x800000 )            // 高位在前进行发送
  {
   IO0SET = MOSI;
  }
  else
  {
   IO0CLR = MOSI;
  }
  IO0CLR = SCLK;SpiDelay(1);
  data = data << 1;
 }

 IO0SET = nCS;                         // 关闭SPI口
 return iRet;
}

uint32 SpiRead( uint8 rCmd )
{
 uint8 i;
 uint32 iRet;

 IO0SET = nCS;
 IO0CLR = SCLK;
 IO0CLR = nCS;                         // 打开SPI
 for( i = 0; i < 8; i++ )               // 发送一个字节的数据
 {
  IO0SET = SCLK;SpiDelay(1);
  if( rCmd & 0x80 )                  // 高位在前进行发送
  {
   IO0SET = MOSI;
  }
  else
  {
   IO0CLR = MOSI;
  }
  IO0CLR = SCLK;SpiDelay(1);
  rCmd = rCmd << 1;
 }

 SpiDelay( 10 );
 iRet = 0;
 for( i = 0; i < 24; i++ )              // 接收24位的数据
 {
  iRet = iRet << 1;
  IO0SET = SCLK;SpiDelay(1);
  if( IO0PIN & MISO )
  {
   iRet = iRet + 0x01;
  }
  IO0CLR = SCLK;SpiDelay(1);
 }
 IO0SET = nCS;                         // 关闭SPI口


 return iRet;
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客