Version 7

    Contents

     

     

    Disclaimer

     

    Redistribution and use of this article or any images or files referenced in it, in source and binary forms, with or without modification, are permitted, provided that the following conditions are met:

     

    • Redistribution of article must retain the above copyright notice, this list of conditions, link to this page and the following disclaimer.
    • Redistribution of files in binary or source form must reproduce the above copyright notice, this list of conditions, link to this page, and the following disclaimer in the documentation and/or other materials provided with the distribution, for example, Readme file.

     

    All information posted here is hosted just for education purposes and provided AS IS. In no event shall the author, element14, or any other 3rd party be liable for any special, direct, indirect, or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of information published here.

     

    Intro

     

    Analog-to-digital converters are electronic devices used to measure analog world values and convert them into digital code, which can be processed by digital processors and computers. Usually input signal is related to voltage, which is converted into code by various ADC topology methods. Many applications today, be it industrial controller or smartphone have number of ADCs integrated, providing way to interface with sensors. This allows data like voltage, current, temperature, pressure, humidity and many others to be processed by digital controllers and building responsive system.

     

    There are many different ADC types. For most of use cases ADC blocks integrated in microcontrollers and SOC are already good enough. These are cheap, easy to interface and does not take space on PCB, it’s almost free additive of digital ASICs. Still, in some other areas, much higher precision or higher speed is required, making use of separate discrete ADC chips viable. In the past, an ADC providing 8 or 10-bit resolution was good to measure common variety of signals.
    br/>Standalone Δ-Σ ADCs are usually best choice to do low-speed high-precision measurements, providing required accuracy and resolution. This type ADC often can come with stable integrated voltage references, PGA and current sources for various sensor applications. Resolution for most ICs is in 16-24 bits range, with very good noise and DC performance.

     

    In this review new greatest solution in data converter world, 32-bit Δ-Σ ADC from Texas Instruments is covered and tested, using ADS1262 evaluation kit package. This kit was received from element14’s RoadTest program and will be evaluated thru some possible scenarios of use. This is a starter platform, relatively affordable for most hobbyists and instrumentation professionals, who looking into high-precision measurements.

     

    This is first article in series, with introduction to kit, overview of market offerings for ultra-high 32-bit resolution analog to digital converters, construction features and usage approach for TI ADS1262EVM-PDK. We will briefly compare specs of highest resolution ADC from TI and competitors and get ready with set of practical experiments to test performance of this 32-bit ADC.

     

    Worth to mention, that some parameters of such high-precision device would be extremely hard to test without expensive specialized equipment. I’ll put my best effort to ensure accuracy and usability of obtained results. To aid this task multiple high-performance bench DMMs and sources will be used. If we think for a second, 1 LSB of 32-bit A/D output of 2.5VDC full-scale signal is equal to 0.581 nanovolts (2.5 / 232). This is far-far down in the levels of thermal noise in practical circuit. Compare this to 2.4 mV LSB in “usual” 10-bit ADC system!

     


    Table 1: Resolution versus resolved voltage

     

    Resolution over 24 bits in past were only achievable by expensive and complex multislope integrating discrete ADCs (used almost in every 6½-digit+ DMM). For example, industry standard long-scale 8½-digit HP 3458A provide 28-bit conversion data from it’s $1300 USD worth custom integrating A/D converter, with help of trimmed ultrastable resistor networks, proprietary semiconductor ASIC tech and fast logic.

     

    Theoretical limits are shown above are based on ideal ADC case, which is not a quite accurate with respect of real-world devices and physics. Down at this level of resolution thermal effects, matching inaccuracy, noise pickup from surrounding circuits and fields limiting performance to much lower levels. It’s not like you can buy one of these ADC’s, connect usual voltage reference from the shelf and get good 8½-digit readings.

     

    Due to practical issues of having this wide dynamic range require lot of design effort. Careful design must be done to achieve even 5½-digit stable results. Some of these issues would be covered and discussed later, some are not, but these are some of reasons why there are only a few 7½-digit and 8½-digit instruments exist, and all of them are using slow and expensive discrete integrating A/D converters. Most of those instruments were designed back in 90's, and still stand up to today's standards. Compare than to modern digital technology advancement, when every few years new smartphone hits the shelves, making stuff just from last year obsolete and useless. There are no unimportant detail when it comes to precision analog design.

     

    Having all this said, does it make 32-bit ADC useless? Let’s test and see!

    High-resolution ADC comparison

     

    As of today (November 2015) there are only two vendors can sell 32-bit ADC chip. It’s Texas Instruments which we will study and test later, and Analog Devices. Let’s take a look on what these guys have to offer:

    Texas Instruments ADS1262 Analog Devices AD7177-2
    Block diagram (zoomable)
    ADC Type32-bit Δ-Σ32-bit Δ-Σ                              
    Output rate2.5 SPS to 38.4 kSPS5 SPS to 10 kSPS
    Channel rate10 kSPS/channel (100 µs settling)
    ENOB max speed15.6 bits at 38.4 kSPS19.1 bits at 10 kSPS            
    ENOB mid speed21.1 bits at 7.2 kSPS20.2 bits at 2.5 kSPS          
    ENOB min speed26.0 bits at 2.5 SPS24.6 bits at 5 SPS              
    INL ±12 ppm of FSR±3.5 ppm of FSR                        
    Channels amount5 differential or 11 single-ended2 fully differential channels or 4 single-ended
    Analog input range±VREF (AVSS-0.3 < VREF < AVDD+0.3)±VREF (AVSS < VREF < AVDD1)
    Analog input current±2nA (buffered)±30nA (buffered)      
    Input buffersPGA, 1/2/4/8/16/32True rail-to-rail analog and reference
    Analog voltage referenceInternal 2.5V or up to 3 external inputsInternal 2.5 V reference or external
    Internal VREF TC±6 ppm/°C max±5 ppm/°C max            
    Noise 0.1 Hz to 10 Hz0.145µV(RMS)4.5µV(RMS)
    ClockingInternal 7.3728 MHz, Ext 8MHzInternal or external, 16MHz          
    PSRR,CMRRPSRR 90dB, CMRR 110dB@60HzPSRR 95dB, CMRR 95dB@DC, 120dB@50/60Hz    
    Power requirementsAVDD = 5V, DVDD = 2.7 to 5VAVDD1 = 5 V, AVDD2 = IOVDD = 2.5 V to 5 V
    Onboard temperature sensorYes, 420µV/KYes, 470µV/K
    Onboard current source50/100/250/500/750/1000/1500/2000/2500/3000 µA10µA
    GPIOMultiplex with analog inputs2, dedicated pin
    Temperature range-40°C to +125°C-40°C to +105°C        
    Digital interfaceSPI       SPI, QSPI, MICROWIRE, and DSP compatible  
    MSRP$9.10 USD $23.75 USD                            
    DatasheetRev.BRev.A, PDF
    Eval.board kit costADS1262EVM-PDK, $199 USD for kitEVAL-AD7177-2, $59 USD for AD module + $99 USD for controller

    Table 2: Specification comparison of 32-bit ADCs

     

    TSSOP package is possible to hand solder with little care and wave reflow soldering iron tip. There are also lot of prototype boards available for this packages as well.

     

    Feeling dizzy with all this INL, ENOB, temperature coefficient terms? It may be well worth to read few articles on ADC parameters and specifications, such as TI E2E Blog : Is ADC accuracy different from resolution?TI E2E Blog : ADC Total unadjusted error explained, TI E2E Blog : Trying to find ADC non-linearity? Look under the carpet.

     

    Also great practical paper from TI, Best of Baker’s Best: Precision Data Converters – Delta-Sigma ADCs can be recommended. It covers principles and key properties of ADC. Also similar The Best of Baker’s Best – Amplifiers eBook focus on amplifiers, hosted on TI website as well.

     

    The ADS1263 IC variant is based on same design, but have additional auxiliary 24-bit Δ-Σ ADC, which can be used for monitoring signal on lower gain, or for compensation/ranging purposes. As shown in functional block diagram, both ADS1262 and ADS1263 feature eleven analog inputs, configurable as ten single-ended inputs, five differential inputs, or any combination. Analog inputs support next functions:

     

    Function / operation mode  Pins
    External reference input 1AIN0+AIN1
    External reference input 2AIN2+AIN3
    External reference input 3AIN4+AIN5
    Two current sources for excitationAny analog input
    Level shift (bias to middle supply level)AINCOM
    GPIO mode             AIN3-AIN9, AINCOM
    Sensor current source Any analog input
    Test signal output     AIN6, AIN7

    Table 3: Inputs configuration and related pins

     

    After input multiplexer, signal is fed into a high-impedance programmable gain amplifier (PGA). PGA have low voltage and current noise. Gain can be programmed from 1 V/V to 32 V/V in binary steps. The PGA can be also completely bypassed, to allow the input range to extend below ground level when using single-voltage power supply. The PGA has voltage over-range monitors, to alert user when it’s out of spec conditions.

     

    The programmable sensor bias available to use a small test current for detection of a failed sensor or incorrect sensor connection, if this function is used (for example in measuring thermocouples or RTDs). The ADC core operates with the internal +2.500 VDC reference, or with up to three external reference inputs. The external reference inputs are continuously monitored for low or missing voltage. The REFOUT pin provide buffered +2.500 VDC (±10mADC drive capability) internal voltage reference output for monitoring or external analog circuits use.

     

    TI also provide handy Excel calculator to aid engineers calculating proper configuration and proper input signal parameters for front end design.

     


    Image 1: TI ADS126X calculation Excel toolkit

     

    Texas Instruments ADS1262EVM-PDK Kit

     


    Image 2: EVM package exterior

     

    Kit received in rather large box, with lots of packing and protection foam to keep contents safe. There is very little chance that anything will get damaged even with rough shipping services. This could also drive shipping cost bit higher than expected, if shipped internationally.

     

    Box contents:

    • Universal 100-240V mains brick, +6V 3.0A
    • Texas Instruments MMB0 Rev.D main interface board
    • Texas Instruments ADS126XEVM Rev.A
    • Standard USB Type-B cable

     


    Image 3: Power supply and mains plugs adapters

     

    Power supply having funky interchangeable plugs to fit universal regions, with two exactly same US-type ones. Perhaps one is extra? Taiwan is using same sockets as US, so pretty standard stuff.

    Before we go into details, it may be worth to mention, TI have another, more specialized evaluation kit for ADS1262/ADS1263 exists, but not available for sale:

     

     

    PDK Hardware

     


    Image 4: Assembled base-board MMB0 and ADS126XEVM module

     

    Digital section, MMB0

     


    Image 5,6: Boards overview, top and bottom sides

     

    Both boards are interconnected via three regular pitch 2.54mm pin headers, with digital, analog and power signals routed from main interface MMB0 board. This main board supports various ADC and DAC evaluation modules, so same test environment can be used for every specific application.

     


    Image 7,8: USB interface, DC power input jack and power status LEDs

     

    USB port is only for digital data connection, and does not carry power to any parts of PDK, so do not expect things to work with just USB cable plugged in. Power delivered from separate DC jack, which accepts +6VDC. Inner pin of DC jack is positive, no surprises here. Use of DC jack instead of USB power is due to requirements of low noise power supply for ADC, to reduce chance of unwanted noise coupling to sensitive ADS1262. Noisy USB power supply from PC can easily upset such 32-bit ADC evaluation kit, so extra care was taken by TI.

     

    Onboard TMS320VC5507PGE DSP used only as interfacing bridge, and not doing any math or filtering work. All data processing and math is done on PC software side. This approach have own both positive and negative sides. It's mainboard MMB0 supports many different EVM boards with various ADC and DACs, at increase of overall cost. TI opted for single but versatile design with versatile on-board DSP chip, to fit future modules and aid development. Some engineers which consider using TMS320 DSP+ADC/DAC may find this useful, as they get both pieces in one package.

     


    Image 9,10: TI TMS320 DSP and MMB0 logo artwork

     

    Few more photos of board powered and ADC module attached:

     


    Image 11,12: Power LEDs operation and input signal terminal blocks

     

    Power presence status is monitored by four green LEDs in bottom right corner, allowing to quickly determine status and operation of mainboard power supplies. There are no activity or other LEDs except single-digit 7-segment LED.

     

    Analog section, ADS126XEVM

     


    Image 13: ADS126XEVM module, top component side

     

    Add-on plugin with ADC chip and on-board ±2.5V supplies. It is FR4 4-layer PCB, with good quality and nice silkscreen around all parts and test points. Assembly quality is very good, no bodges or jump wires present.

    Board also have two switches to set operation mode.

     

    Switch locationFunction
    S1, near crystalSelect between JP2 external clock input or onboard 7MHz crystal X1
    S2, near JP4Select single supply +5VDC or dual supply ±2.5VDC operation

    Table 4: Module switch configuration

     


    Image 14: ADS126XEVM module, bottom component side

     

    Bottom side of PCB have only linear supplies U2, U3 and U4 and some decoupling capacitors and resistors. Pin headers from top duplicated with SMT female headers, so board signals are routed thru. Handy for integration on custom breadboards and test PCBs.

     

    PDK Software

     

    Bundled software is based on NI LabView, including source project files, with all it’s pro’s and con’s. It’s rather large package (~200MBytes!), so make sure to have space for it. Installer does not ask for installation path, it’s stuck to hardcoded C:/Program files (x86)/ADCPro. Application itself is 32-bit executable.

     

    To my regret, that did not work right away, even though MMB0 baseboard was correctly detected in device manager and all drivers successfully installed. That's on main development machine, which also had LabView and python environments in place. PDK software just refused to see connected board, showing exactly same messages with or without actual USB connection. Exactly same happen on secondary system (Win7 ×64, LabView 2013 installed as well).

     

    Other system (Win7 ×64) without LabView, just plain OS – worked fine, and MMB0 was detected and accepted it’s firmware. Then second device was discovered, and I had to install USBStyx driver manually, using OS’s device manager. After this steps EVM environment was activated and ready to work.


    Image 15,16: ADCPro unable to detect and expected result in software

     

    LabView often is tricky and not very reliable in operation, as even after just ~10 minutes of fiddling with various tool settings I got it to crash with error:

     


    Image 17,18: Random errors and crashes in ADCPro

     

    No further operation was possible until application was closed and reopen again. Sometimes it was just hanging without any error message.

     

    Anyhow, let’s see what software allows us to do, when it works. Configuration of ADC and capturing data is simple and intuitive. For data analysis three main “tests” are available:

    • Data monitor – just shows counts and HEX codes.
    • FFT – Plot frequency dB/dBfs FFT chart with basic AC analysis (SNR,THD,SINAD,dB power,SFDR)
    • Histogram – Samples distribution histogram, with basic DC analysis (StDev,Codes(peak),Mean,ENOB,Noise free bits)
    • Scope – Plots time/voltage diagram, just like oscilloscope, with FSR or Auto amplitude scale and horizontal sample count axis

     

    Wish there could be simple version of DMM-style monitor as well to show converted voltage in big bright letters, with fast realtime single or continuous acquisition refresh setting. Given existing LabView application complexity making that plugin would be matter of few minutes. That could be handy for sensor tweaking and adjustment, as existing continuous acquisition speed is extremely slow, as it takes multiple data samples in all modes.

     


    Image 19: Long sampling warning with default 30 second setting

     

     

    And for sake of old computers, ancient Windows 2000 is not supported by PDK software, throwing non-stop errors when trying to load ADS126XEVM plugin in ADCPro. I had Windows 2000 SP4 on my Tektronix scope when I tried this.

    Overall, would be great to have TI better release simple example software and firmware code templates for Linux & ARM environment, in GCC and Python implementations. That would help open source community to get started in no time, and also would solve beginner firmware interfacing issues of embedded ARM projects. NI LabView is not the best choice for starters.

     

    Interfacing ADC

     

    Texas Instruments ADS1262 using standard 3-wire SPI interface. This interface is easy to implement, can run up to few tens of MHz and reliable to operate. Chip select signal controls multi-device SPI bus operation, disabling ADS1262’s interface when not needed.

     

    Related signals map for digital interface is described below:

     

    ADS1262 PinSignal nameFunctionActive typeDirectionNotes        
    Pin 9STARTStart conversion inputRising edgeInputTie low if SPI commands used      
    Pin 10CSChip select inputLow levelInputDOUT will be in HIZ, can be tied low
    Pin 11SCLKSPI Clock inputFalling edgeInputPlace series resistance to reduce ringing
    Pin 12DIN (MOSI)SPI Data input to ADCInputPlace series resistance to reduce ringing
    Pin 13DOUT/DRDY (MISO)SPI Data output to MCU + Data readyOutputPlace series resistance to reduce ringing
    Pin 14DRDYADC Conversion readyFalling lowOutputGoes low when ADC conversion is complete
    Pin 20RESET/PWDNRESET inputActive lowInputIf low >65536 Fclk ADC enters power down mode

    Table 5: Digital pins definition of ADS1262

     

    DRDY and START signals are not required to work with ADC, but it is a good practice to use them, so MCU would not run SPI transfers and processing when data is not ready.

     

    EVM module have J1 header with both TOP (male pins) and BOTTOM (female sockets) connectors:

    PinSignal nameDirectionDescriptionDescriptionDirectionSignal namePin
    J1.1NCReservedNot connectedTrigger ADC conversionInput,CTRLSTARTJ1.2
    J1.3SCLKInput,SPISPI Interface clock inputNot connectedReservedGNDJ1.4
    J1.5NCReservedNot connectedReset or power down inInputRESET/PWDNJ1.6
    J1.7CSInput,SPISPI chip select inputNot connectedReservedNCJ1.8
    J1.9NCReservedNot connectedDigital groundGroundGNDJ1.10
    J1.11DINInput,SPISPI Data input, MOSINot connectedReservedNCJ1.12
    J1.13DOUT/DRDYOutput,SPISPI Data out MISO/ ReadyNot connectedReservedNCJ1.14
    J1.15DRDYOutputConversion complete/ReadySerial EEPROM ClockBidir,I2CSCLJ1.16
    J1.17NCReservedNot connectedDigital groundGroundGNDJ1.18
    J1.19NCReservedNot connectedSerial EEPROM DATABidir,I2CSDAJ1.20

    Table 6: Port definition J1 (both TOP/BOTTOM pins)

     


    Schematics 1: Interface connector J1

     

    Power to ADC or onboard regulators provided via J5 header in middle bottom side of the ADS126XEVM module:

     

    PinSignal nameDirectionDescriptionDescriptionDirectionSignal namePin
    J5.1NCReservedNot connectedNot connectedReservedNCJ5.2
    J5.3+5V inputPower in pos+5V to AVDD or +2.5V LDO-5V to -2.5V LDOPower in neg-5VJ5.4
    J5.5GNDGroundModule groundModule groundGroundGNDJ5.6
    J5.7NCReservedNot connectedNot connectedReservedNCJ5.8
    J5.9+3.3V inputPower in dig+3.3V to DVDD digitalNot connectedReservedNCJ5.10

    Table 7: Port definition J1 (both TOP/BOTTOM pins)

     


    Schematics 2: Power connector J5

     

    Interfacing with Raspberry Pi

     

    Also it’s possible to interface ADS1262 using SPI in Python. While I did not tried this yet, it should be rather simple for any python-programmer. Setting hardware config up to work with spidev library is very fast task.

     

    Interfacing with MCU

     

    As a test environment, generic MCU Embedded Artists’ LPCXpresso Base Board with LPC1768 module was used. MCU will be accessing ADC thru one of available SPI interfaces and communicate resulting conversions data into voltage readout math and data logs.

     

    For debug and data logging onboard USB-UART bridge and PuTTY terminal freeware program is used, with port U22 connected to PC.

     

    Hardware connections:

     

    Base board and LPC1768 LPCXpresso module are supplied with schematics, so it’s not a problem to connect all our devices together. I used SSP1 port on MCU.

     


    Schematics 3: MCU SPI isolation interface

     

    ADUM4151 SPI isolator IC was used to avoid possible ground and power noise pickup from digital control and host PC. This will also allow to have battery powered option for ADC, with floating input signals, without risk of unwanted ground currents.

    Large dot-matrix vacuum-fluorescent display with 256×64 dots resolution will be used to display measurements and auxiliary data, such as ADC channel selected, reference voltage settings, gain settings and temperature in further experiments. It’s connected to MCU’s port as defined in table below

     

    MCU PortVFD signal
    P2.4  Data bit 0
    P2.5  Data bit 1
    P2.6  Data bit 2
    P2.7  Data bit 3
    P2.8  Data bit 4
    P2.9  Data bit 5
    P2.10  Data bit 6
    P2.11  Data bit 7
    P0.28  CS
    P0.27  WR
    P2.13CD
    P2.12RD

    Table 8: VFD parallel interface connection to MCU

     

    Software/firmware code examples for MCU and ADS1262

     

    You can download test mercurial repository from here. It already have IAR ARM v7.50 project, with everything ready for LPCXpresso LPC1769 and ADS1262EVM operation.

     

    If one not familiar with mercurial DVCS, feel free to execute git-like command:


    $ hg clone http://dev.xdevs.com/hg/ads1262_demo/

    After all connections and hardware interfacing done, first step is to write some low-level code to use MCU’s SPI interface block to write/read data into interface. Using ADS126X library taken from TI’s Reference Design with AC Bridge Excitation, simple modify it and adopt for specific MCU (LPC1768/LPC1769):

     

    unsigned char ADS126xXferByte(unsigned char cData) {
         while(SSP_GetStatus(LPC_SSP1, SSP_STAT_BUSY));          // Wait for SSP1 to become free 
       SSP_SendData(LPC_SSP1, cData);                          // Send byte cData 
       while(SSP_GetStatus(LPC_SSP1, SSP_STAT_BUSY));          // Wait for SSP1 to become free 
       return SSP_ReceiveData(LPC_SSP1);                       // Receive data and return
    }

     

    This is transfer byte function, using SSP1 hardware interface block and pins P0.6, P0.7, P0.8, P0.9.

    Chip select for ADC can be controlled as GPIO manually as well, with simple function:

    void set_adc_START(uint8_t state) { 
        if (0 == state)  
          ADS_START_DEASSERT; 
        else if (1 == state)  
          ADS_START_ASSERT;  
       else    
        assert(0);        //Aborts program, incorrect parameter received
    }

    Macros ADS_START_ASSERT and ADS_START_DEASSERT are just wraps for CMSIS’s GPIO_SetValue and GPIO_ClearValue functions for GPIO P0.0.

     

    Rest of code is pretty much intact, taken from _adc2_demo.c, adc2_demo.h, ADS126x.c, ADS126x.h_ and console.c, console.h files from TI’s demo app. I removed or deactivated ADC2 related functions and blocks, as we have ADS1262, not dual-ADC ADS1263 chip.

     

    Now, going to higher level, we need to prepare register data and initialize our ADS1262 before any data sampling can be done, like so:


    uint8_t AdcRegData[ADS126x_NUM_REG];                            //Stores the register read values
    uint8_t WriteRegData[ADS126x_NUM_REG];                          //Stores the register write values
    ADS126xReadRegister(ID, ADS126x_NUM_REG, AdcRegData);           //Read ALL registers

    /* Configure Register Settings */

    WriteRegData[ID] = AdcRegData[ID];                              //ID
    WriteRegData[POWER] = (AdcRegData[POWER] & ~RST) | INTREF;      //POWER (RESET = 0, INTREF = 1)
    WriteRegData[INTERFACE] = STATUS | CRC_ON;                      //INTERFACE (STATUS & CRC bytes ON)
    WriteRegData[MODE0] = MODE0_DEFAULT_VALUE;                      //MODE0 (reset to default)
    WriteRegData[MODE1] = AdcRegData[MODE1];                        //MODE1
    WriteRegData[MODE2] = (AdcRegData[MODE2] & ~BYPASS) | GAIN_2;   //MODE2 (BYPASS OFF, GAIN1 = 32 V/V)
    WriteRegData[INPMUX] = MUXP_AIN6 | MUXN_AIN7;                   //INPMUX (AINP1 = AIN1, AINN1 = AIN2)
    WriteRegData[OFCAL0] = OFCAL0_DEFAULT_VALUE;                    //OFCAL0 (reset to default)
    WriteRegData[OFCAL1] = OFCAL1_DEFAULT_VALUE;                    //OFCAL1 (reset to default)
    WriteRegData[OFCAL2] = OFCAL2_DEFAULT_VALUE;                    //OFCAL2 (reset to default)
    WriteRegData[FSCAL0] = FSCAL0_DEFAULT_VALUE;                    //FSCAL0 (reset to default)
    WriteRegData[FSCAL1] = FSCAL1_DEFAULT_VALUE;                    //FSCAL1 (reset to default)
    WriteRegData[FSCAL2] = FSCAL2_DEFAULT_VALUE;                    //FSCAL2 (reset to default)
    WriteRegData[IDACMUX] = MUX2_NO_CONM | MUX1_AINCOM;             //IDACMUX (IDAC1MUX = AINCOM)
    WriteRegData[IDACMAG] = MAG2_OFF | MAG1_500uA;                  //IDACMAG (IDAC1MAG = 500 uA)
    WriteRegData[REFMUX] = RMUXP_AIN4 | RMUXN_AIN5;                 //REFMUX (REFP = AIN0, REFN = AIN3)
    WriteRegData[TDACP] = TDACP_DEFAULT_VALUE;                      //TDACP (reset to default)
    WriteRegData[TDACN] = TDACN_DEFAULT_VALUE;                      //TDACN (reset to default)
    WriteRegData[GPIOCON] = CON6_AIN09 | CON5_AIN08;                //GPIOCON (Enable GPIOs on AIN8 & AIN9)
    WriteRegData[GPIODIR] = GPIOCON_DEFAULT_VALUE;                  //GPIODIR (reset to default)
    WriteRegData[GPIODAT] = DAT5_AIN08;                             //GPIODAT (Biases bridge with + polarity)
    ADS126xWriteRegister(ID, ADS126x_NUM_REG, &WriteRegData[0]);    //Write ALL registers

    Now we can try to read 16 samples from ADC:


    char outString[256];
        char tempString[256];
        uint8_t i = 0;
        uint16_t ADC1count = 0                                          //Data conversion counters
        uint8_t AdcRegData[ADS126x_NUM_REG];                            //Stores the register read values
        uint8_t WriteRegData;                                           //Stores register write value


        uint8_t ADC1_Bytes[16];


        set_adc_START(0);                                               //Set START low
        ADS126xReadRegister(ID, ADS126x_NUM_REG, AdcRegData);           //Read ALL registers
        WriteRegData = (AdcRegData[MODE2] & ~DR_MASK) | DR_60_SPS;      //MODE2
        ADS126xWriteRegister(MODE2, 1, &WriteRegData);                  //Configure ADC1 data rate
        set_adc_START(1);                                               //Set START high


        while((ADC1count < MinNumADCReadings) && (ADC2count < MinNumADCReadings)) {
            for(i = 0; i < 16; ++i) {                   //Clear Data Arrays
                ADC1_Bytes[i] = 0;
            }


            WaitForDRDY();                              //Wait for ADC to ready data
            set_adc_CS(0);                              // Chip select active
            ADS126xXferByte(RDATA1);                    //Send RDATA1 command
            for(i = 0; i < 16; ++i) {
                ADC1_Bytes[i] = ADS126xXferByte(0);
                if (ADC1_Bytes[0] & ADC1_NEW) {             //ADC1 Data New?
                    ADC1count++;
                }
            };
            set_adc_CS(1);                              // Chip select deactive
    }

        set_adc_START(0);                               //Set START low


        strcpy(outString,"\r\nADC1count = 0x");  hex2asc(&ADC1count,4,2,tempString,1);
        strcat(outString,tempString);
        strcat(outString,"\r\nADC2count = 0x");  hex2asc(&ADC2count,4,2,tempString,1);
        strcat(outString,tempString);
        strcat(outString,"\r\n");
       
        print2Console(outString);

    Our samples are now available in ADC1_Bytes[i] variable array.

     

    Test setup

     

    Accurate testing and verification of high-resolution ADC is not a simple task. It require stable and precision instrumentation, with good low-noise performance and cross checking, to make sure artifacts or signal variations are not coming from instruments itself, but from device under test. We talking microvolts and ppm-level (0.0001%) values here, so it would not be cheap to test. Some of gear I used during experiments with this ADS1262EVM:

     

    • Keithley 2001 DMM (7½-digit, calibrated Feb/2014)
    • Keithley 2002 DMM (8½-digit)
    • HP 3458A DMM (8½-digit, calibrated to Keithley 2001 in Jan/2016)
    • Keithley 2400 SMU (±200V, ±1A SMU, calibrated Feb/2014)
    • Keithley 2510 TEC SMU (±10V, ±5A TEC Controller, calibrated Jun/2015)
    • Keithley 182M sensitive voltmeter (6½-digit nanovoltmeter)
    • LTZ1000A xDevs.com’s KX voltage reference (7VDC output, 0.05 ppm/K)
    • EDC MV106 DC Voltage standard (0-10VDC output, 30ppm, TC=1.2ppm/K)
    • Modified HP 3245A Universal DC/AC source (6½-digit precision voltage/current generator DC to 1MHz)
    • xDevs.com X1801 ultra-low noise battery supply

     

    Not everything will be used every time, so more details and connections are discussed below in specific experiments.

     

    I prepared couple of experiments with this ADC, to evaluate it’s performance and capabilities. How much noise-free digits we can have in readings, after all conversion work done? 24-bit Σ-Δ ADCs were suitable for easy 4½,5½-digit readings, so it’s interesting to see what new 32-bit chip can offer.

     

    As comparison, same tests performed with high-performance integrating type ADC, using pair of industry standard 7½- and 8½-digit DMMs. ADCs used in these instruments provide 27/28-bit readings, are expensive, difficult to test and require many selected parts. Cost of designing such ADC easily go up in tens thousands $USD, often involving custom ASIC development and careful component selection. So it’s interesting to see how new $10 USD chip can compete. Of course, DMM consist of many other function blocks, which are absent on single ADC chip, but some careful cross-references still can be made.

     

    Experiment 1 : Out of the box measurement

     

    Let’s first see what ADS1262 can do, without any external devices or sensors attached. One of common conditions – is zero stability, which is often also important for low-level signal measurements. As with every analog circuit, ADC front-end have always some parasitic voltage and current offsets, which are visible by non-zero code even with dead ground short present on input channel pins. It’s important to have these offsets stable and constant in time, so we can deduct this error value from our reading, using simple math in software.

     

    Zero stability and noise

     

    With minimum amount of external gear we can do quick testing of zero voltage stability, noise and offsets. This is done by soldering copper short wire to ground directly at ADS1262 AIN pins and module ground. This is test for dual-polarity supply due to signal levels involved.

     


    Image 20: Zero noise performance with MMB0 connected and LabView PDK

     

    With MMB0 and bundled LabView software, ADC with zero at input able to reach 25 bits of ENOB, with 22 noise free bits. This is good result, matching specification claims and already providing better RAW data than 24-bit ADC could do, so less noisy readings can be taken even with such a basic setup.

     


    Image 21: Experiment 1 connections and setup

     

    Here are some low level DC voltage signal measurements, still using only EVM kit without any additional modifications or shielding.

     

    Results are listed on graphs below. X-axis marks are seconds, blue chart on Y-axis is measured value (VDC). Additional red scale on right side shows ppm deviation. (0.1% being equal 1000ppm)

    Voltage source is EDC MV106 DC voltage standard, which is verified to be stable to ~5ppm level. No input divider or attenuation used. First test, 1VDC input, PGA gain set to 2.

     


    Image 22: +1VDC voltage chart

     

    There is some signal scatter on the first section of the graph, indicating stray airflows over EVM board. After covering module with plastic box, readings became more stable (can see this from 12K seconds in middle). Few times wires were fiddled around, causing jumps at 17100 and 24100 seconds. Overall graph span is 7.2 hours, with readings window within 150ppm. With just simple moving average or median filtering this will let us to have stable 5½ digit measurements.

    Second test, lower voltage, 1 mVDC, PGA gain set to 8. Graph scale is in millivolts.

     


    Image 23: +0.001VDC voltage chart

     

    Things are bit worse with 1000 times less voltage signal. First 10000 seconds some setting was happening, due temperature change around circuit. Further readings remained stable within 1500ppm corridor. This is still able to give us nice 5½-digit readings, with 1mV level signal. Most of handheld DMMs have this as least significant digit.

     

    Now even lower, 100µVDC with PGA set to 16. Graph scale is in millivolts.

     


    Image 24: +0.0001VDC voltage chart

     

    Going even lower, to 100µV things get bit off, and results urge for calibration. But even without calibration, using integrated reference, our readings dropped to 98 µV average. Readings drop after 90K seconds are due to cable position change. Triboelectic effects, thermal EMFs and shielding become important down at microvolts.

     

    And lowest signal, 10µVDC, right down to noise, with PGA set to 32. Graph scale is in millivolts.

     


    Image 25: +0.00001VDC voltage chart

     

    At mere 10 µVDC result was 6.5µV average, which is too much of an error. It is now difficult to be sure, if it’s input signal have noise, or ADC itself with PGA contribute error into conversion data. Just indication, how hard it can be to measure something at 10µV.

     

    Device under testInput signalSetting             CSV-datalog         HistogramStd.DevRMS value
    TI ADS1262 ADC+10 µVDCAIN0,AIN1 Differential, 2.5SPS FIR4, CHOP ONCSV2.67788E-72.80775E-9
    TI ADS1262 ADC+100 µVDCAIN0,AIN1 Differential, 2.5SPS FIR4, CHOP ONCSV4.00219E-76.28593E-9
    TI ADS1262 ADC+1 mVDCAIN0,AIN1 Differential, 2.5SPS FIR4, CHOP ONCSV4.23272E-75.24112E-9
    TI ADS1262 ADC+1 VDCAIN0,AIN1 Differential, 2.5SPS FIR4, CHOP ONCSV6.18829E-59.96740E-5

    Table 9: Low-voltage signals test results

     

    Overall, I’m impressed, even with 1mV signal we can get 5½-digit readings without a single extra penny spent on parts or any amplifiers.

     

    Zero input performance

     

    Now time to do one more test, zero input performance. This will tell us how noisy is ADC itself, removing errors from reference or input signal instability. Output code is taken at two different gains, A=1 and A=32 and sampling speeds 10 SPS and 2 SPS to evaluate noise performance. Zero voltage test with inputs shorted also tested on 8½-digit Keithley 2002 and 8½-digit HP 3458A DMMs to give comparison with state-of-art integrating ADC performance.

     

    This time only ADC module is used without MMB0, and located in metal can to provide good shielding and to avoid possible airflow. This is important, as even little 0.1°C temperature gradient over PCB can cause thermal voltages in hundreds of microvolts. PCB and component pins are forming many thermocouples across signal path, due to difference in used metals.

     


    Image 26: Zero measurement setup

    Summary table with test setups and results involved in this experiment:

    Device under testInput signalSetting     CSV-datalog         HistogramStd.DevRMS value
    TI ADS1262 ADCZero, input shortedAIN0,AIN1 DifferentialCSV+1.13049E-7+3.02082E-10
    TI ADS1262 ADC±Gain=32, CHOP ONAIN0,AIN1 DifferentialCSV3.68621E-98.20724E-15
    HP 3458A DMMZero, input shortedRange 100mV, NPLC10, 5Hz, AZ ONCSV+7.2252E-8+5.93032E-12
    HP 3458A DMMZero, input shortedRange 100mV, NPLC50, AZ ONCSV  3.34488E-81.17252E-12
    HP 3458A DMMZero, input shortedRange 100mV, NPLC100, AZ ONCSV3.16788E-88.93156E-14
    HP 3458A DMMZero, input shortedRange 1V, NPLC20, 2.5Hz, AZ ONCSV1.35463E-74.56924E-11
    Keithley 2002 DMMZero, input shortedRange 1V, NPLC10, 5Hz, AZ ONCSV  2.12681E-71.14349E-10
    Keithley 2001 DMMZero, input shortedRange 1V, NPLC10, 5Hz, AZ ONCSV  3.30339E-72.75974E-10

    Table 10: Zero short noise test results

     

    Zero noise performance puts ADS1262 into close proximity with expensive 7½-digit DMM, so with good front-end design and attenuation, it is possible to design and build very good measuring system, with 6½-digit stable scale resolution. With some bits of smart math and filtering even 7½-digit values should be within reach.

     

    Integrated PGA does not contribute much noise, and with calibration it allow to measure low amplitude signals, saving a lot of trouble on front end design, which often need use of very expensive resistors and careful precision operational amplifier design, like we can see in HP 3458A or Keithley 2002. And only special-purpose instruments, such as nanovoltmeters can go voltage ranges below 100mV, while ADS1262 can actually offer better noise performance on even lower voltages scale, compared to even 8½-digit HP 3458A (which cost more than USD $9700 new!).

     

    Experiment 2 : Testing internal reference

     

    Because ADS1262’s voltage reference is accessible from external pin, we can connect precision DMM and monitor stability of this voltage reference output. This can help us in temperature dependence evaluation and overall impact on absolute accuracy from internal reference stability. HP 3458A, Keithley 2510 and DIY thermal chamber was used for this experiment.

     

    Knowing how stable internal reference is, designer can decide if better reference required in specific application, or internal source is stable enough (for example, in case of ratiometric measurements between two signals, where only short-term stability is important).

     

    Internal reference temperature stability

     


    Image 27: Measurement setup for experiment 2

     

    This experiment will help us to check actual reference voltage deviation, from variance of ambient temperature. Block diagram of this test setup is as below:

     

    • EVM located in foam chamber box to allow control over ambient temperature
    • TEC module with heatsink and small fan located in chamber box
    • TEC SMU controlling temperature in chamber box from +20°C to +65°C using Honeywell HEL-705 platinum RTD as sensor
    • HP 3458A DMM measuring REFOUT internal reference from ADS1262, using GPIB pod and Raspberry Pi
    • ADS1262 measuring it’s own temperature sensor using internal reference

     

    Initial data without controlled box temperature, over 20-hour test period:

     


    Image 28: Initial temperature stability chart, no temperature control

     

    Blue line on graph is internal ADS1262 temperature, measured by chip itself, and orange are REFOUT output measurement by Keithley 2002 DMM. Extra scale, marked in green indicate µV/V deviation of reference voltage.

     


    Image 29: Simple DIY temperature chamber

     

    Now I will use Keithley 2510 TEC SourceMeter to control temperature inside Styrofoam box with ADC module. Module itself is in same cast metal box, but this time with 40W TEC mounted on it’s bottom. Another side of TEC is attached to small fansink with +5V DC fan. Temperature sensor for feedback is fixed on ADS1262 pin header, to provide good thermal coupling. This is ultimately will be the point, to which SMU will try to maintain chamber temperature.

     


    Image 30: Test for experiment 2 in progress

     

    Expected stability of internal reference voltage to be less than 6 ppm/K, with hysteresis no more than 50 ppm. Effect of changing reference voltage and ADC temperature changes can be measured as well, by using ADC to sample known stable DC voltage signal. Or in this case, reference output REFOUT was measured using external precision DMM (which is tested to be stable better than 1 ppm/day), while ADC was configured to measure it's own temperature.

     


    Image 31: Initial temperature coefficient test with temperature ramp down

     

    Initial reference voltage changed with rate 6.16 ppm/°C, but later temperature change from +41°C to +32°C observed much better rate 1.45ppm/°C. Sawtooth-type variation of reference voltage indicate better shielding attention requirement, as TEC is pumped with ~20W of power each time, coupling noise into ADS and circuits around.

     

    If absolute accuracy and stability is first priority, thermally stabilized reference sources like Linear LM399 or Linear LTZ1000 can be used. Both of these provide very stable ~7VDC, and some attenuation circuit would be required to bring reference voltage down to ADS1262 levels. Example of such circuit is shown on schematics below:

     


    Schematics 4: ± 2 VDC ultra-stable voltage reference

     

    Module M1, based on ultra-zener LTZ1000 provides stable +7 VDC which can have long-term stability about 1 ppm/year. This voltage is accurately divided by U1 resistor network (Linear LT5400A-3, matched to 0.01% with 0.2ppm/K matching TCR, long-term stability <2ppm/2khr). This brings voltage down to 2 VDC, which is buffered by U2 low-noise opamp. Precision metal foil resistor network R3 and opamp U3 providing inverted -2 VDC output. This circuit provides ±2VDC reference suitable to drive ADS1262. It is crucial to use stable resistors in this circuit, as ultimately main contribution of error would be from resistors, not the active parts.

     

    ADC system with this external reference can have great accuracy, which would be limited by ADS1262 ADC stability. Initial calibration for exact voltage levels would be also required, as LTZ1000 have absolute accuracy only 1%. We will build this circuit and have some experiments and measurements with it on follow-up Part 2 article.

     

    Conclusion, kit scoring and verdict

     

    Many readers may say, why spend so much effort in testing, while specifications of TI ADS1262 are already very good? Well, one of purposes why I applied this EVM kit and ADS1262 is to build portable precision null-meter, to compare various voltage references and DC standards.

     

    High-end expensive 8½-digit DMMs like HP 3458A or Keithley 2002 are not usually available for many engineers. EE hobbyists mostly do have more popular 6½-digit bench DMMs such as Keithley 2000 HP/Agilent/Keysight  34401A34401A or similar Rigol Fluke DMMs. These engineers usually have no ability to accurately calibrate or even test these meters, leave alone comparing DC voltage/current standards with high enough accuracy.

     

    Building accurate null-meter based on 32-bit low-noise ADS1262 is one of practical tasks which would really benefit from external stable voltage reference, as this means that calibration would be required only once during initial assembly and test. Then such kit can be sent to different people, with high confidence in accuracy and results. In a way, it can be used as voltage transfer tool between different instruments. More details on practice to be covered in next second part article, which is coming soon.

    EVM Features and construction

     

    Assembly quality is top notch, as expected from reference design. All parts are easily accessible for soldering and probing. No BGA or CSP packages used.
    EVM kit in review allowed us to demo few aspects of long-scale ADC and prototype few ideas. Use and connections to ADS1262 EVM were easy even for beginners. Solid A mark on performance.

    Performance

     

    With given test results, TI ADS1262, as one of 32-bit all-in-one ADC products, there is nothing to complain about. Using simple SPI interfacing and control, it is possible to create very nice 5½-digit capable measurement setup. This brings new level of resolution into relatively low-cost measurement applications and more new possibilities in instrumentation performance. With proper design care, good power supply and decent input attenuation design, it is not hard to achieve even better performance.

    Bundled software examples

     

    Provided software examples are rather unfriendly, especially for not experienced engineer. It’s not obvious path to locate C source-code examples for ADS126x ADC, which is hidden in another validation kit, TIPD188, not the ADS1262EVM-PDK. Lack of support with modern popular platforms, such as Raspberry Pi may require extra time to get all toolkit set and ready with ADS1262. Hopefully this article can help to fill the present void. Taking a half-point back here, A-.

     

    Bundled LabView ADCPro application is not really usable. Software supplied with reference evaluation platform must be ready to work right from the box, no exceptions. If there is reference software with EVM, it should work on usual embedded development machine, which can have common versions of LabView, python and GCC environments already installed. If it does not work at all, or break other tools operation, it’s a problem.

     

    It could be better not to include any pre-compiled software at all, only source project and templates. In that case user would use his own programs to talk with hardware, hence simple SPI interface is not a problem even for beginners. But instead of testing actual ADC performance and features, in my case I wasted whole day and had to debug this LabView connection issues on 4 different computers, and broke my existing development LabView environment just to get TI ADCPro functional.

     

    Quick search online reveals also number of other users on TI E2E forums, having similar issues with ADCPro. Firmware and MCU library is somewhat hidden in another EVM kit documentation, not the EVM in review. Some of code pieces, like definitions for ADS1262 and functions (e.g. ADS126xREADandWRITE, ADS126xShutdown, ADS126xWake) are not implemented in library. Feels bit beta-test code condition.

     

    So overall verdict on software and examples – solid point lost right here, no questions asked. B.

    Price point

     

    EVM kit is designed with support of various analog plugins and modules, allowing use of same programming environment across different ADCs/DACs. The only con is the fact that MMB0 baseboard and ADC module itself come in single package, making up for $200 USD price tag, which seems a bit too high. There are no precision sensors or external references included, which could justify that cost better. If user can have option of buying ADS126XEVM module separately from MMB0, that would save the cost issue, as not always USB-based interface board with DSP is required. That applies also to engineers who already have other TI EVMs, which may included MMB0.

    Also software examples primarily based on LabView, which starts at $999USD for limited base package version. Would love to see more open software examples/templates, even plain C/Python code would do the job well. So taking a half-point off here for hidden cost, which results mark A-.

     

    Total score

     

    Features : A (100%)
    Performance : A (100%)
    Software : B (50%)
    Pricing : A- (75%)

     

    Anyone who is looking into using new 32-bit ADC chips, and not mind writing some lines of C/Python code can choose ADS1262EVM-PDK. It would be a good choice as evaluation platform. While price might be a considering factor, decent PCB with power supplies and interfacing connectors offered, eliminating need of hardware prototyping and soldering.

     

    For system designers which plan to use ADS1262 or ADS1263 in their design, it might be easier to get chip itself and design in directly into product or prototyping board. TSSOP package used for these ADCs is not that hard to solder with usual iron, and there is need to write own firmware/software code anyway, unless you really have a LabView professional nearby on standby, to reuse TI’s libraries for every specific application.

     

    Literature

     

    TI ADCPro v2.0.1 PDK kit software
    TI ADS1262EVM plugin for ADCPro
    TI E2E : Riding the rails: Understanding PGA input range requirements
    Integrated diagnostics apply system reliability features at the ADC device level
    TIPD188 Firmware source code example