AD4692 no-OS Example Project

See projects/ad4692_ardz (doxygen) for the Doxygen documentation.

Contents

Supported Evaluation Boards

Overview

The EVAL-AD4692-ARDZ is an Arduino-compatible evaluation board for the AD4692 family of compact, Easy Drive, 16-bit MUX SAR ADCs. These devices combine per-channel accumulators, a flexible channel sequencer, and an internal oscillator with five selectable operating modes, making them well suited for space-constrained precision measurement applications such as optical transceiver modules and multi-channel control loops.

The evaluation board connects to a host MCU via the Arduino shield interface. These examples target the AD-APARD32690-SL rapid prototyping platform, which is built around the MAX32690 microcontroller.

The following devices are supported and share the same project:

Device

Channels

Max Sample Rate

AD4692

16

1 MSPS

AD4691

16

500 kSPS

AD4694

8

1 MSPS

AD4693

8

500 kSPS

To select the target device, change the id field in ad4692_ip inside common_data.c.

Applications

  • Optical transceiver module monitoring

  • Multi-channel industrial control loops

  • Precision instrumentation

  • Data acquisition systems

No-OS Build Setup

Please see: https://wiki.analog.com/resources/no-os/build

No-OS Supported Examples

The initialization data used in the examples is taken from: Project Common Data Path

The operating mode is selected via the mode field in ad4692_ip in common_data.c. The default is AD4692_MANUAL_MODE, which works for all three examples. Refer to the AD4692 driver documentation for a description of all five operating modes and their hardware requirements.

Basic example

Initializes the AD4692 and reads two channels using ad4692_get_ch(), printing the raw values over UART. ad4692_get_ch() handles sequencer configuration, sampling, and readback internally for every operating mode.

For oscillator-driven modes (CNV Burst, Autonomous, SPI Burst) the example first sets the internal OSC to 500 kHz. No additional setup is required for Manual or CNV Clock modes.

To build and run:

make EXAMPLE=basic TARGET=max32690
make run TARGET=max32690

IIO example

Launches an IIOD server on the board so that any LibIIO client can connect, configure the ADC, and stream data. Data acquisition uses the submit_buffer path, which is compatible with all five operating modes and does not require a hardware trigger.

If you are not familiar with ADI IIO Application, please take a look at: IIO No-OS

If you are not familiar with ADI IIO-Oscilloscope Client, please take a look at: IIO Oscilloscope

To connect from a host once the board is running:

iio_info -u serial:/dev/ttyUSB0,57600,8n1

To build and run:

make EXAMPLE=iio_example TARGET=max32690
make run TARGET=max32690

IIO trigger example

Extends the IIO example with a hardware trigger driven by the GPIO0 output of the AD4692. In every non-manual operating mode the device asserts GPIO0 at the end of each conversion sequence (as DATA_READYb in CNV Clock, CNV Burst, and SPI Burst modes; as ADC_BUSY in Autonomous mode). Both signals produce a falling edge at conversion complete, which fires the MAX32690 GPIO interrupt and invokes the IIO trigger handler to read and push the accumulated channel data.

Note

AD4692_MANUAL_MODE is not compatible with this example because the IIO driver does not register a trigger handler for manual mode. All other modes work correctly.

The trigger is configured for a falling-edge interrupt on the GPIO0 pin (P3.0 on the MAX32690, connected to the DREADY/BUSY signal of the EVAL-AD4692-ARDZ).

To build and run:

make EXAMPLE=iio_trigger_example TARGET=max32690
make run TARGET=max32690

No-OS Supported Platforms

Maxim Platform

Used hardware

Connections

The EVAL-AD4692-ARDZ plugs directly into the Arduino-compatible headers of the AD-APARD32690-SL. The following MAX32690 peripherals are used:

Function

MAX32690 Peripheral

Notes

SPI (MOSI/MISO/SCK/CS)

SPI4, CS0

Mode 3 (CPOL=1, CPHA=1), up to 1 MHz

RESET

P1.6 (GPIO)

Active-low hardware reset

DREADY / ADC_BUSY

P3.0 (GPIO input / IRQ)

Interrupt source for trigger example

CNV (PWM)

PWM2

Required for CNV Clock and CNV Burst modes only

UART (debug)

UART0

57600 baud, 8N1

Build commands

# Basic example (default)
make EXAMPLE=basic TARGET=max32690

# IIO example
make EXAMPLE=iio_example TARGET=max32690

# IIO trigger example
make EXAMPLE=iio_trigger_example TARGET=max32690

# Flash to board
make run TARGET=max32690

# Clean build artifacts
make reset TARGET=max32690