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

📄 ads1247.c

📁 ADS1247 模拟IO口程序
💻 C
字号:
#include "msp430x24x.h"
#include "ads1247.h"

unsigned char S_value[4] = {0x01,0x00,0x30,0x07};
void delay_AD(int num)
{
  int i;
  
  for (i= 0; i < num ; i++)
    _NOP();
}


void ADS_WriteByte(unsigned char WriteData)
{
  unsigned char i;   
  ADS_CS_0;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (WriteData & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;       
    ADS_SCLK_1;   
    WriteData = WriteData << 1 ;     
    ADS_SCLK_0;
  }   
  ADS_CS_1; 
}

unsigned char ADS_ReadByte(void)
{
  unsigned char i ;   
  unsigned char ReadData ;   
  ADS_CS_0;   
  ReadData = 0 ;   
  for(i = 0 ; i < 8 ; i++)   
  {   

    delay_AD(10);
    ADS_SCLK_1;
    ReadData = ReadData << 1;   
    ReadData |= (P2IN & ADS_Dout) >> 5;
    delay_AD(10);
    ADS_SCLK_0;
  }   
  ADS_CS_1;   
  return(ReadData);   
}

void ADS_Reset()
{
  ADS_WriteByte(Reset);
  delay_AD(3000);
}

void ADS_Sleep()
{
  ADS_WriteByte(Sleep);
  delay_AD(1000);
}

void ADS_Wakeup()
{
  ADS_WriteByte(WakeUp);
  ADS_SCLK_1;   
  _NOP();    
  ADS_SCLK_0;  
  delay_AD(1000);
}

void ADS_Init(void)
{ 
  //Multiplexer Control Register 0
  WriteReg_S(Reg_MUX0 | 0x40 , 0x00 , 0x01);
  
  //Bias Voltage Register
  WriteReg_S(Reg_VBias | 0x40 , 0x00 , 0x00);  
  
  //Multiplexer Control Register 1
  WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x70);  //0x30 
  
  //System Control Register 0
  WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x78);   //0x77

  //IDAC Control Register 0
  WriteReg_S(Reg_IDAC0 | 0x40 , 0x00 , 0x08); 
}

char WaiteRDY(void)   
{   
  unsigned int iint ;  
  iint = 0 ;
  ADS_CS_0;
  
  //while((P2IN & ADS_Dout) == 0x20);
  while((P2IN && ADS_Dout) == 0x20);
  ADS_CS_1;  
  return 0;
}


unsigned long ReadAdADSConversionData(void)   
{ 
  unsigned char iint = 0;
  unsigned char i;
  unsigned char WriteData = 0x12;
  unsigned long ConvertData = 0;
  
  while ((P2IN & ADS_Dout) == 0x20)
  {
    iint++;
  }

  ADS_CS_0;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (WriteData & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    WriteData = WriteData << 1 ;     
    ADS_SCLK_0;
  }
  
  ADS_Din_1;
  
  for(i = 0 ; i < 24 ; i++)
  {   
    ADS_SCLK_1;
    ConvertData = ConvertData << 1;
    ConvertData |= (P2IN & ADS_Dout) >> 5;
    ADS_SCLK_0;
  }  
  ADS_CS_1;
  return(ConvertData);
}

unsigned char ReadReg(unsigned char Address,unsigned char number)
{  
  unsigned char i ;   
  unsigned char ReadData = 0; 
  ADS_CS_0;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (Address & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    Address = Address << 1 ;     
    ADS_SCLK_0;
  }
  
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (number & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    number = number << 1 ;     
    ADS_SCLK_0;
  }
  
  ADS_Din_1;
  
  for(i = 0 ; i < 8 ; i++)   
  {   
    ADS_SCLK_1;
    ReadData = ReadData << 1;   
    ReadData |= (P2IN & ADS_Dout) >> 5;
    ADS_SCLK_0;
  }
  ADS_CS_1;   
  return(ReadData); 
}

void WriteReg_S(unsigned char Address,unsigned char number,unsigned char data)
{
  unsigned char i ;   
  ADS_CS_0;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (Address & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    Address = Address << 1 ;     
    ADS_SCLK_0;
  }
  
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (number & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    number = number << 1 ;     
    ADS_SCLK_0;
  }
  
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (data & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    data = data << 1 ;     
    ADS_SCLK_0;
  }
  ADS_Din_1;
  ADS_CS_1;
}

void WriteReg_S_4(unsigned char Address,unsigned char number)
{
  unsigned char i,j;   
  unsigned char Tmp;
  ADS_CS_0;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (Address & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    Address = Address << 1 ;     
    ADS_SCLK_0;
  }
  
  Tmp = number;
  for(i = 0 ; i < 8 ;i++)   
  {   
    if (Tmp & 0x80)
      ADS_Din_1;   
    else 
      ADS_Din_0;      
    ADS_SCLK_1;   
    Tmp = Tmp << 1 ;     
    ADS_SCLK_0;
  }
  

  for (j = 0; j < number; j++)
  {
    Tmp = S_value[j];
    for(i = 0 ; i < 8 ;i++)   
    {   
      if (Tmp & 0x80)
        ADS_Din_1;   
      else 
        ADS_Din_0;
      ADS_SCLK_1;
      Tmp = Tmp << 1 ;
      ADS_SCLK_0;
    }
  }
  ADS_Din_1;  
  ADS_CS_1; 
}

⌨️ 快捷键说明

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