AnsweredAssumed Answered

AD5933 status register value never change

Question asked by dhanarajshanmugam on Jul 16, 2018
Latest reply on Jul 20, 2018 by Snorlax

Hi,

I am using AD5933 with my STM32 board. AD5933 is placed in different PCB hence I am connecting them using wires. 

 

Present situation is, I am able read/write any registers and verify it is correctly read/written. But can not instruct the AD5933 to start temperature measurement or start impedance measurement. Status register never changing the values based on the instructions.

I am supplying 5V to AD5933. Any thoughts?

 

My initialization register values:

uint8_t control_byte_h = (MEASURE_TEMPERATURE << CONTROL_FUNC_SELECT_POS) | (VOLT_1V << CONTROL_OPVOLT_POS) | (PGA_X5 << CONTROL_PGA_GAIN_POS);

i.e control_byte_h = 0x96;
uint8_t control_byte_l = (EXTERNAL_SYSCLK << CONTROL_SYSCLK_POS_L) | (NO_RESET << CONTROL_RESET_POS_L);

i.e control_byte_l = 0x08;

ad5933_reg_accss.data[0] = control_byte_h;
ad5933_reg_accss.data[1] = control_byte_l;
ad5933_reg_accss.regIndex = AD5933_CONTROL_REG;
ad5933_set_reg(&ad5933_reg_accss);
control_reg_read = ad5933_read_control_reg();
//Here control_reg_read = 0x9608;

After a while I read the status register before reading the temperature register,

float ad5933_read_temperature(void) {   
  float temp = -1;  
  uint32_t adc_conts;  
  int8_t repeat = 2;   

  ad5933_start_temperature_conv();     
  while(repeat >= 0){    
    repeat --;    
    osDelay(AD5933_TEMPERATURE_CONV_TIME);               

    /* POLL STATUS REGISTERTO CHECK IFTHE DFT CONVERSION IS COMPLETE.*/    
    /*Note that the data in these registers is valid only if Bit D1 in the status register is set,       
      Indicating that the processing at the current frequency point is complete.*/    
    status_reg_read = ad5933_read_statusReg();    
    if((status_reg_read & STATUS_TEMP_MEAS_COMPLETED) != 0)     {      
      ad5933_reg_accss.regIndex = AD5933_TEMPERATURE_DATA_REG;      
      adc_conts = ad5933_read_Reg(&ad5933_reg_accss);      
      temp = (float)(adc_conts / 32);    
    }  
  }   
  return temp;
}

Status register values always 0x70. 

Outcomes