This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1118的初始化问题

Other Parts Discussed in Thread: ADS1118, ADS1118EVM

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

  • 你可以下载ADS1118EVM Source Code  

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

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

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

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

  • 那个是用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);

      }