I am trying to configure the AD7134 in 4-Wire SPI Control Mode with an ESP32-S3. According to the documentation and Analog, the AD7134 and AD4134 are interchangeable with minimum differences. So I tested this with AD7134 and AD4134.

I call out for help, as multiple days of testing and crawling through forums and online resources did not lead to solving the issue and I am running out of ideas to test.

Settings and Setup:

  • the communication chain looks as follows: ESP32-S3 -> Voltage Level Translator (3V3 <-> 1V8) -> AD7134 (or AD4134); a 24 MHz Logic Analyzer is used to visualize signals (runs at 12 MHz and connected to the 1V8 ADC side)
  • ADC is in Master mode
  • SPI-Mode: 0
  • Clock-Speed: 2 MHz
  • CPHA = CPOL = 0 (in Logic Analyzer)
  • DEVICE_STATUS register reads back: 0b0001 1000 (ok, as far as I understand)
  • SPI Error (0x47) and INTERNAL_ERROR (0x42) both read back 0b0000 0000 all the time (no errors)

Problem / Current Output: Basically, I can communicate with the ADC via 4-wire SPI and can write to some registers as expected. For example, to the SCRATCH_PAD or to the VCMBUF_CTRL register. When I read these registers after writing, I find exactly what I put there. In case of VCMBUF_CTRL register I can also measure the correct voltage, which I set before via this register. So basic communication works from my understanding.

Note the ADC convention are as follows R = Read = 1; W = Write = 0

So far so good.

However, on some (important) registers I cannot seem to write/change the register entries. I did not test all registers, but it does not properly work for at least INTERFACE_CONFIG_A register, INTERFACE_CONFIG_B register and, as shown in the following, it also does not work on DATA_PACKET_CONFIG register (zoom in to see my comments and the error)

From the screenshot you can see, that the register values do not change, even though I wrote something into them (and these bits in the register are also not some reserved/blocked bits). I really cannot find an explanation for this behavior. I hope this is a software/setting issue. From the working registers I believe that the hardware part is fine so far, but please correct me if you have other ideas or doubts.

Tested already without success:

  • changing the order of registers does not help; the registers which I cannot write on remain the same, independent of when I try to write on them (according to Analog the order to write into registers is also irrelevant)
  • note that the readings on PDN and RESET during writing/reading are due to cross-talk in the Logic Analyzer (not visible in direct measurement with oscilloscope)
  • \$\begingroup\$ The mode control pin PIN/SPI must be defined at power up. Is it possible, that you set this pin too late and the device is in standalone mode, providing only a subset of the functionality? \$\endgroup\$
    – Jens
    Nov 7, 2022 at 4:46
  • \$\begingroup\$ Thank you for your comment. The PIN/SPI is hardwired to the digital supply (set to high). So this should define SPI control. Let me update the post by including a schematic. \$\endgroup\$
    – Maxim
    Nov 7, 2022 at 6:29
  • \$\begingroup\$ In addition to that, the ADC seems to be in SPI mode, as the programmable Vcm voltage (which works fine) is an exclusive feature of SPI control. \$\endgroup\$
    – Maxim
    Nov 7, 2022 at 7:07

1 Answer 1


After many cumbersome hours of testing and checking the datasheet and the no-os drivers online all over again, we tested and later found the following passage in the datasheet: enter image description here

So even though Analog said, there is no specific order for writing the register, this seems to be a mandatory first step to do: at least once change to high performance mode and then (if desired) change back to low power mode. We are checking right now if there are other constraints, which helped to get the ADC running.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.