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.

ADS8691: Device configuration and register maps

Part Number: ADS8691

I am trying to change the RANGE_SEL_REG register to 0001 for +/-10.24V but when I send the write commands it does not change. I read back the address and it says I changed it but the output is still +-12.288. I tried breaking down and sending the command in binary and then reading it back and it still says I am writing to the register with no change. I have tried writing 16 bit 1 to address 15h with the 16 bit write command, and 8 bit 1 to the address 14h with the LSB write command. For the 14h LSB write the command I send is ‭1101 0100 0010 1000 0000 0000 0000 0001‬. For the 15h 16 byte write command I send 1101 0000 0010 1010 0000 0000 0000 0001. I have also tried that same write command with the address 14h, 1101 0000 0010 1000 0000 0000 0000 0001. With all of these I send the read command to the same address and it returns 1, but the input range is still +-12.288. My setup is a teensy 3.6 MCU driving the adc and serial printing the conversion data values, with a precision voltage calibrator hooked up to the signal inputs of the ADC. Everything else seems to work fine.

  • Hello Noah,

    Welcome to E2E forum.

    Since the register address is 8-bit, a “0” should be added prior to the register address to have a 9-bit address:      0_0001_0100b for address 14h.

    Half-word write command (two bytes of input data are written into the specified address), address=14h as an example:

                    Data frame:         <11010_00> <0_0001_0100> <0000 0000> <0000 0001>

                                    -->            1101 0000 0001 0100 0000 0000 0000 0001

    Please try this command and check the result.

    Thanks.

    Best regards

    Dale

  • That did the trick thank you! I understand the LSB gets ignored because of memory alignment, but it is a bit misleading to have a 9 bit address instead of 8 and say "LSB of the 9-bit address is always ignored and considered as 0b" perhaps this could be clarified in some way for the future. Thanks again!

  • Hi Noah,

    Thanks for your feedback, I'm glad this has solved your issue.

    The description for "LSB of the 9-bit address is always ignored and considered as 0b" in datasheet because:

    • To write/read both byte 0 and byte 1(or byte 2 and byte 3) in one command, the low byte address (byte 0 or 2) should be used. If the address of byte 1 or 3 is given, the LSB (bit 0) will be ignored, because it is a 16 bit address now.

    we will make it clear when update the datasheet next time, thanks.

    Best regards

    Dale