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.

AFE4300: AFE4300 ADC not starting up (RDY pin unchanged)

Part Number: AFE4300

Hello,

 

I have a problem in getting the AFE4300 start the ADC measurement. I started with a new board that was designed using reference design on TI. Am trying to communicate with the board through an Arduino UNO.

 

These are what has happened

 

  1. I was able to establish the communication with the AFE4300 on SPI. I have monitored the SPI Clock and data on the CRO and its fine.
  2. I was able to write to the device control registers and also read the data back (I have again written the data back after reading) and all the data seems to be fine.
  3. The device front end is powered up. I have done this by checking the VLDO which measures ~1.7V.
  4. I have connected a 50mV input to INP1 and INM1 of Wight measurement inputs using a potential divider. The potential divider is excited by 1.7V VLDO.
  5. After this I expect to see RDY(BAR) giving pulses to indicate ADC measurement ready. But I do not see anything on RDY pin (It always stays HIGH)
  6. Following is code snippet of how am writing to the AFE registers. (NOTE: write and read registers are implemented using SPI calls)

 

   Serial.println("Initializing weigh scale");

    writeRegister(DEVICE_CONTROL_1,0x6005); //Power up weigh scale signal chain

    Serial.println(readRegister(DEVICE_CONTROL_1)); //Read to check

    writeRegister(DEVICE_CONTROL_1,0x6005); //Write back

   

    writeRegister(ADC_CONTROL_REGISTER,0x4140); //Differential measurement mode, 128 SPS   

    Serial.println(readRegister(ADC_CONTROL_REGISTER)); //read to check

    writeRegister(ADC_CONTROL_REGISTER,0x4140); // Write back

   

    writeRegister(ADC_CONTROL_REGISTER_2,0x0000); //ADC selects output of weigh scale

    Serial.println(readRegister(ADC_CONTROL_REGISTER_2));        //Read to check

    writeRegister(ADC_CONTROL_REGISTER_2,0x0000);                    //Write back

   

    writeRegister(WEIGHT_SCALE_CONTROL,0x0000); //Gain = 1 DAC Offset = 0

    Serial.println(readRegister(WEIGHT_SCALE_CONTROL));            //Read to check

    writeRegister(WEIGHT_SCALE_CONTROL,0x0000);                       //Write back

      

    writeRegister(BCM_DAC_FREQ,0x0040); //Frequency = default

    writeRegister(DEVICE_CONTROL_2,0x0000);

    writeRegister(IQ_MODE_ENABLE,0x0000); //Disable IQ mode

    writeRegister(ISW_MATRIX,0x0000); //Channels IOUTP1 and IOUTN0

    writeRegister(VSW_MATRIX,0x0000); //Channels VSENSEP1 and VSENSEN0

 

Any leads would be of great help

 

Regards,

Shankar

  • Hi Shankar,

    This is because ADC is powered down. Change your "ADC_CONTROL _REGISTER1" setting as:

    writeRegister(ADC_CONTROL_REGISTER1,0x41C0);

    Regards,
    Prabin
  • Hello Prabin,

    I would try this but its strange if this works because according to the datasheet ADC_PD is a power down pin and it powers down ADC when we write 1 to it and powers it up in continuous mode when we write 0 to it. This is the extract from datasheet (page 21).

    Bit 7 ADC_PD: ADC Powerdown
    This bit powers down the ADC_PGA and the ADC. By default, the ADC is powered down (ADC_PDN = '1').
    For continuous convesion mode, this bit must to set to '0'.
    For single-shot mode, this bit must be set to ‘1’ along with bit 15. During single-shot conversion mode, the device
    automatically powers up the ADC, triggers one ADC conversion, and then powers down the ADC.

    Anyways I will try it and post my response.

    /////////////////////////////////////////////////////////////////////////////////////////////////

    Tested with changes (writeRegister(ADC_CONTROL_REGISTER1,0x41C0);) .. As expected the ADC is not ON. 

    Please suggest what else can be looked in to

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    regards,

    Shankar

  • Hi Shankar,

    You are correct ADC_PDN bit should be 0.
    Are you giving 1MHz clk to the device ?

    Regards,
    Prabin
  • Hello Prabin,

    Yes, I am giving exactly 1MHz using a 1MHz crystal oscillator I have also checked and verified this on the Scope.

    By the way one more thing. The MAX Voltage rating is it applicable for clock as well? The clock that is generated has HIGH at 5V am worried about voltage levels!

    Regards,
    Shankar

  • Hi Shankar,

    What is the part number of oscillator that you are using?
    Yes, max voltage rating also applies for CLK. So reduce the level to AVDD.
    Can you also try same register settings with all the register read commented.

    Regards,
    Prabin.

  • Hello Prabin,

    Problem seems to be with my level shifter modules that I was using to shift the voltage levels form 5V to 3.3V. For a brief period, I ran the AFE4300 at 5V direct  (I know am not supposed to do this but as a last option, I tried it) and it triggered the ADC I got pulses on RDY pin and I also read decent values on ADC when I put a 20mV across INM1 and INP1. 

    Am as of now looking at any decent replacement for Arduino UNO that can generate 3.3V instead of 5V.

    Another question, the load cell that I intend to use has a rating of 10V to 15V for excitation, but the VLDO available on board is only 1.7V. How do we deal with this? Can we excite the load cell with external power source?

    Regards,

    Shankar

  • Hi Shankar,

    Glad to know that you found the issue.
    For the question regarding excitation of the load cell, you can refer to following post.
    e2e.ti.com/.../1259489

    Regards,
    Prabin