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.

ADS131A04: ADS131A04

Part Number: ADS131A04

Tool/software:

Ran into a strange issue when configuring ADS131A04 data converters in chained mode and I though this would be worth sharing.

My configuration:

Two ADS131A04 ADCs sharing the same SPI_CLK, MISO, MOSI, DRDY lines.

First ADS131A04 configured with M0 set to IOVDD, Asynchronous interrupt mode. M1 and M2 tied to ground.

Second ADS131A04 configured with M0 floating, synchronous slave mode. CS wired to DONE line of the first ADC. M1 and M2 tied to ground.

I have a function generator running at 16MHz providing a common clock input line (pin 25) to both parts for testing. This clock signal is always on as it will be in the eventual design.

Configuration of all registers is working correctly. I'm able to write and read every register correctly. I'm using 24 bit mode so my MCU master is sending 6-byte packets via SPI. After the first 3 bytes are sent, the first ADC pulls the DONE line low to select the second ADC. This is all working just as the datasheet says. I'm using the parts in dynamic frame mode without any CRC or hamming.

The instant I write to the ADC_ENA register, the data packet size changes. Through trial and error, I discovered that I have to supply NULL bytes for every channel enabled in the first ADC. If I enable all 4 channels, this means 12 NULL bytes before I send the command to enable the second ADC. The same goes for the subsequent WAKEUP and LOCK commands. From the programming sides, the outgoing WRITE REGISTER commands are different once you enable channels on the first ADC.

Is this described anywhere in the datasheet or in an addendum? This is a very unusual feature or aspect of operating that deserves a callout.

rgds,

Gary

  • Hi Gary,

    I will check the details and get back to you soon.

    BR,

    Dale

  • Hi Gary,

    Thanks for your patience.

    The ADS131A04 datasheet states that 'To send commands to specific devices, send the respective command of the device when that device is selected for communication', and also you have to send SCLKs/NULLs for the first ADC, then send SCLKs/NULLs for the next ADC as shown in the following timing from the ADS131A04 datasheet:

    BR,

    Dale

  • Hi Dale,

    Thanks for the reply.  

    When the devices are initially powered, all ADC channels are disabled.  

    Users are going to set the clock register and other system registers before enabling ADC channels.  In this case, selecting the slave device for commands does not require the use of NULL bytes.

    When the first ADC channels are enabled, even if that device is LOCKED or in STANDBY, you need NULL bytes to access the second ADC.

    A single sentence calling out that difference would be incredibly helpful to users.   As of now, the datasheet has vague text plus timing diagrams that one has to piece together to understand this behavior.

    best,

    Gary

  • Hi Gary,

    Thanks for your suggestion. I will let the system engineer know and we will make it clear if have a change to update the datasheet.

    BR,

    Dale