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.

ADS1292: ADS1292 RESP2 register

Part Number: ADS1292

Hello All,

I have programmed ADS1292 registers as shown below. The test voltage across channel 1 is 0.23 v. If I program the device to have Vref of 2.42 V  channel1 saturates (reads 7FFFFFh). Changing Vref to 4.033  Ch1  starts reading erroneously (1.19 v). I have tried continuous conversion as well. Thinking OFFSETCAL command will help my reading, I change RESP2 default value to  83h, but doing so,  I get all zeros from both channels regardless of input voltage. 

Thanks,

Hamid 

  writeRegister(config1Address, 0x86);  //single shot conversion 500sps
  writeRegister(config2Address, 0xA0);  // 0x80 Vref = 2.42v , 0xA0 Vref = 4.033v
  writeRegister(LOFFaddress,0x10);   
  writeRegister(CH1SETaddress, 0x10); // bit7 = 1 (power down), gain = 1 001, 0000 normal electrode input (default)
  writeRegister(CH2SETaddress, 0x10); // gain = 1 normal electrode input (default)
  writeRegister(RLD_SENSaddress,0x00);
  writeRegister(LOFF_SENSaddress,0x00);
  writeRegister(LOFF_STATaddress,0x00);
 /* writeRegister(RESP1address,0x02);
  writeRegister(RESP2address,0x83); // calib on*/
  writeRegister(GPIOaddress,0x00);

  • Hi Hamid,

    Your register configuration looks fine to me. Are the reported output values being calculated by the MCU or with an oscilloscope directly at the output? Please show SPI communication at the output of the device. I recommend using the BIOFAQ to verify that the device is still functional, and code to voltage conversion if necessary. 

    https://e2e.ti.com/support/data-converters/f/73/p/772058/2855202

  • Hi Alex,

    Thank you for your response. I have changed config2 content to 0xA0 so the internal reference is enabled and set to 2.42. The values are being calculated by MCU. Here is an example of SPI output: 

    byte1 = 19, byte2 = 63, byte3 = EC

    V(MCU) = 0.48003579

    We are using Table 10 to calculate voltage (V = Vref * ADCcount/(2*23-1).  For more details on this, please see the function below. 

    I can write to and read from registers so the device is responsive. Changing reference voltage for instance  (config2 register) I do see changes reflected at VREF pin.  Looking at the two channel readings,  they do trend correctly with the input voltage, however they are almost 2.4 times less than the actual value.  Revisiting BIOFAQ page all steps check with one exception. 

    Probing internal voltage pins Vref and Vcap1 are indeed 2.42 and 1.19 volt as expected, VCAP2 however reads 5.229 v. not 1.65 v. (AVDD = 3.3 V and AVSS = 0). 

    1. VREF = VREFP – VREFN 
    2. VCAP1 = AVSS + 1.2 V
    3. VCAP2 = (AVDD + AVSS) / 2

    // this function combines 3 ADC bytes to one and calculates voltage
    double bytes2volts(uint8_t b1, uint8_t b2, uint8_t b3, double Vref){
      unsigned long bs = ((b1 << 16)|(b2 << 8)|b3 );    // combined all bytes into one bs
      double v = double(bs)*Vref/(pow(2,23)-1)*Vref;
      //Serial.println("\n V=");
      //Serial.print(v,9);
      return v; 
    }

  • Hi Alex,

    Given your experience with this device, can you please let me know what might cause VCAP2 read 5.2 V instead of AVDD/2? 

    Regards,

    Hamid 

  • Hi Hamid,

    As stated in the post, this voltage should be mid-supply of 1.65V. It is possible that the device has been damaged or that the voltage is being measured incorrectly.