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.

ADS131E08: SPI_DOUT have no data output

Part Number: ADS131E08

We  always  set SPI_CS Low,   SPI_CLk and SPI_DIN have signal from cpu..  but  ADS131E08  SPI_DOUT have data output, we don't know what causes this? 

  • Hi Chen Lin,

    A month or so ago you were using the ADS131E08EVM-PDK. Were you getting proper DOUT at that time? Have you gotten your own board back now and experiencing this problem with new hardware? Can you provide a schematic and details on how you are configuring the device?
  • 1、Cpu comfigure four wire SPI,  cpu can  read ads131e08  id register;

    2、Cpu comfigure three wire SPI,   CS of ads131e08  connect GND ,DOUT of  ads131e08 have no data output ,at the moment , CLK and RX of can ads131e08 received  signals from CPU。

    static int ads131e08_init(struct ads131e08 *ads131e08)

    {
    int ret = 0,i = 0;
    u8 buf = 0;

    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_SDATAC, 0, 0);
    ret = ads131e08_sendreset(ads131e08);
    if(ret){
    dev_err(ads131e08->dev, " write reset error\n");
    return ret;
    }
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_WAKEUP, 0, 0);

    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_SDATAC, 0, 0);
    if(ret){
    dev_err(ads131e08->dev, " write sdatac error\n");
    return ret;
    }
    usleep_range(2,3);
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_STOP, 0, 0);

    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_WREG,
    ADS131E08_CFG1, (void *)&reg_init.cfg1);

    usleep_range(2,3);
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_WREG,
    ADS131E08_CFG2,(void *)&reg_init.cfg2);

    usleep_range(2,3);
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_WREG,
    ADS131E08_CFG3, (void *)&reg_init.cfg3);

    usleep_range(2,3);
    for(i = 0; i < 8; i++){
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_WREG,
    ADS131E08_CH1SET+i, (void *)&reg_init.chnset);
    if(ret){
    dev_err(ads131e08->dev, " init CH%dSET error\n",i+1);
    return ret;
    }
    }

    usleep_range(2,3);
    ret = ads131e08_cmd_control(ads131e08, ADS131E08_CMD_RREG,
    ADS131E08_ID, (void *)&buf);
    if(ret < 0){
    dev_err(ads131e08->dev, " read id register error\n");
    return ret;
    }else{
    dev_info(ads131e08->dev, " devid is = 0x%2.2x\n",buf);
    if(buf == 0){
    return -1;
    }
    }

    ads131e08_reg_dump(ads131e08);

    ret = gpio_direction_output(ads131e08->pdata->adc_start_gpio,1);
    if (ret < 0) {
    dev_err(ads131e08->dev,"fail to assert adc_start_gpio %d\n", ret);
    return ret;
    }

    return ret;
    }

  • Whether ads131e08 support three line SPI?
  • Hi Chen Lin,

    The serial interface on the ADS131E08 has a reset feature which is activated when /CS is taken high, so it is not a true 3-wire SPI device. You can review sections 9.5.2.1 and 9.5.2.2 for more details.