微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1118的初始化问题

ADS1118的初始化问题

时间:10-02 整理:3721RD 点击:

您好,我采用的是ADS1118采集外部传感器的数据给MCU,MCU是STM32,请给我一个ADS1118这个IC的初始化代码,谢谢

你可以下载ADS1118EVM Source Code  

不过这个不是STM32的,你看着参考一下吧,按照数据手册上的时序要求的寄存器描述,这个芯片不复杂的

您好,您刚我把那个程序贴出来我看一下 可以把 ,我的电脑上完全打不开,电脑限制装软件,谢谢

好的

6746.sbac117.zip

这个好像不是用C写的,你参考下边这个吧

2438.ADS1118_Grace.zip

您好,那是用什么软件打开的,可以把那个软件发我嘛  谢谢

那个是用labview写的吧,我这里没有这个软件的,你可以百度一下

您好,我在网上找了一个程序修改了一下,用printf函数打印到串口上,数据一直是0,不知道什么原因,麻烦看一下,谢谢

void ADS1118_ADS_Config(unsigned int temp_config_value)
{
  unsigned int Config_Value;
  Config_Value = temp_config_value;
  CS_L; // Set CS low
  delay_us(1600); // Wait for slave to initialize
  ADS1118_WriteSPI(Config_Value,1);

  delay_us(1600); // Wait for slave to initialize
  CS_H; // Set CS high
}

/*ת»»(дÈëconfig¼Ä´æÆ÷)*/
void ADS1118_WriteSPI(uint config,unsigned char mode)
{
  
  uint temp;
  uchar bit_ctr;
   CS_L;
  // MOSI_L;//DINÀ­µÍ,µ½clkΪ¸ß(µÍ)ʱÊäÈë
  if(mode==1)temp = config | 0x8000;//mode==1,¶ÁÊý¾Ý²¢¿ªÊ¼Ï´Îת»»(OSλÖøß)
  // __delay_cycles(20);//µÈ´ýOSÖøߺóÊý¾ÝµÄת»»(860sps)
  // temp &=0x7FFF;//OSÖÃ0ת»»Íê³É
  for(bit_ctr=0;bit_ctr<16;bit_ctr++) // 16λÅäÖÃÈëconfig,DINºó¿ªÊ¼×ª»»
  {
    SCLK_L; // ..then set SCK low again
    delay_us(50);
    if(temp&0x8000)
    MOSI_H;
    else
    MOSI_L;
    SCLK_H; // Set SCK high..
    delay_us(50);
    temp = (temp << 1);
    // if(MISO) temp++;
  }
  SCLK_L;
  delay_us(200);
  CS_H;
  delay_us(200);
}

/*½«Êý¾Ý¶Á³ö£¨DOUT)*/
uint ADS1118_ADS_Read(void)
{
  unsigned int Data=0;
  int i;
  int a[16];
  uint Config_Value;
  ADS1118_WriteSPI(0x75EA,1);
  CS_H;//????
  delay_us(200);//ÑÓʱµÈ´ý
  CS_L;
  delay_us(1600);
  SCLK_H;

  if(!MISO)
  {//Èç¹ûDRDYΪµÍ,ת»»Íê³É,Ôò¿ªÊ¼¶ÁÈ¡
    for(i=0;i<16;i++)
    {
      SCLK_L;
      delay_us(50);//clk¸ßÑÓʱ
      if(MISO) a[i]=1;
      else a[i]=0;
      SCLK_H;
      delay_us(50);//clkµÍÑÓʱ
      Data=Data*2+a[i];
    }
    }
  delay_us(1600);
  CS_H;
  return Data;
}

主函数main中是这样的

u8 value;
 u8 Volt_Value;
 delay_init(72);      //ÑÓʱ³õʼ»¯
 NVIC_Configuration();
  uart_init(9600);
 SPIx_Init();
 SPIx_SetSpeed(8);
 ADS1118_ADS_Config(0x85eb);
 while(1)
 {
    delay_ms(800);
   value = ADS1118_ADS_Read(); //0.512V
   printf("value = %d\n\r",value);
    Volt_Value = value*0.512/32768; 

   printf("Volt_Value %f\n\r\n\r",Volt_Value);

  } 

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top