Post Go back to editing

AD7616 Failed Serial Communication

Category: Hardware
Product Number: AD7616
Software Version: Custom Microcontroller Software

I am working on a project involving reading sensor data using an AD7616 in Software Serial mode. There are 3 problems that I have encountered: There is never any value returned in response to a read register command, the ADC appears to not change register contents in response to a write register command, the values that are returned from a conversion are inconsistent for a consistent input voltage. We have verified the electrical configuration of our PCB for Software Serial mode, that is HW_RNGSEL = 00, SER/PAR = 1, SER1W = 1. We use the internal reference with REFSEL = 1. The undriven analog input pins hover at around 2V. When the pins are driven and a conversion is done (asserting CONVST and waiting for BUSY) the result does correspond to the input voltage, but the slope of the output is very inconsistent, going from around 1000 counts for a 1V increase to less than 500 counts for the same increase. When I try to write to the channel register to change which channel is being selected it has no effect. When I read any register the result is always 0. The setup algorithm is to first reset the ADC, do a dummy conversion, then right to the range registers to the change to +- 5V (which seems to have no effect). Then read conversion results from all channels, by writing to the channel register followed by a CONVST. Please let me know any potential issues with either the setup or the algorithm that could be causing these issues.

  • Yes we tried writing to the registers in the sample which I previously posted. We try to write all the voltage range registers to 0xAAAA for a +- 5V range, but as you can see the values all remain as the default values. We have also written other registers which also has no effect. As we are now using the eval board and have followed the jumper configuration to put it in software mode. In regards to whether or not there is a bug in the drivers, I can't really say given that we aren't using the drivers. However, the spi mode that works for arduino is 2 and the one which is provided there is 3. We have thoroughly gone through the debugging guide you have provided and all the voltages on the eval board look exactly correct.

  • Hi sam,

    Why 0xAAAA? It should be addressing+AA, being addressing either add 4,5,6 or 7?



  • Apologies that was a miscommunication on my part, we are writing 0xAA to the registers 4, 5, 6, 7.

  • Understood. Had to ask just in case.

    Now, you can read the memory map default values so you are succesfully in Software mode, however you cannot write. That only leaves me to ask about timings on the write operation or wrong addressing (that seems correct). Have you checked different SPI modes for writing (for the sake of testing) .

    Can you compare side-by-side the scope shot of the eval board write frame to your software write frame, just to make sure. Checking timings and edges.