AnsweredAssumed Answered

AD7794 Offset Register Values Query

Question asked by euler_lagrange on Dec 17, 2015
Latest reply on Jan 7, 2016 by euler_lagrange



I am working with an AD7794 ADC Device at the moment and i'm currently investigating whether or not the Offset Register Value drifts with Temperature (25C to 150C).  Before I put in the Code to output the Offset Value I thought I would check over the Datasheet and Check the Values I read from the Offset Register at 25C.


The Datasheet clearly says that the default (Power On/Reset) value should be 0x800000 but when I read from the Offset Register for CH0 - CH5 I get the following values:


CH0 = 0x88FFFF

CH1 = 0x89FFFF

CH2 = 0x8AFFFF

CH3 = 0x8BFFFF

CH4 = 0x8CFFFF

CH5 = 0x8DFFFF

Now, the first thing that stands out to me is that CH3/4/5 all share the same Offset Register - therefore I expected them to all be the same value?

So...  my first question to anyone with more experience than me is - are those values garbage or do they look reasonable?  I suspect they are garbage.  Which leads me onto the next question...

Below is the psuedo code for how I am reading the Offset Register Value for CH0 (CH1 - 5 are the same but with a different CONFIG to represent the Channel Number).

Does this seem logical and am I doing anything incorrect?

AD7794AT_SPI1_ENABLE;                                                            //Turn on the ADC Device


AD7794Config.CONFIG = AD7794_CONF_GX;                              //AD7794_CONF_GX = 0b0000000000000000 - Basically set for CH0

AD7794_Send_Command_Write(AD7794_COMM_WR_CONF);     //Set comms register for a write command  to Configuration Register

AD7794_Set_Config(AD7794Config.CONFIG);                              //Send config to Configuration Register       

AD7794_Send_Command_Write(AD7794_COMM_WR_MODE);     //Set comms register for a write command to Mode Register

AD7794_Set_Mode(AD7794_MODE_SINGLESHOT);                    //AD7794_MODE_SINGLESHOT = 0b0011001000011010

AD7794_Send_Command_Read(AD7794_COMM_RD_OFFSET);     //Set comms register for a Read from the Offset Register

Read_Register();                                                                           //Perform a 24bit read from the Offset Register

AD7794AT_SPI1_DISABLE;                                                            //Turn off the ADC Device

I have also tried an Internal Zero and Full Scale Calibration on the device and I still read the same values from the Offset Registers - I get the feeling I'm not quite doing something right but I can't see what it can be?  Anyone have any ideas?