EVAL-ADHV4710 no-OS Example Project

See projects/eval-adhv4710 (doxygen) for the Doxygen documentation.

Supported Evaluation Boards

Overview

The ADHV4710 and ADHV4711 are high voltage, high precision amplifiers controlled over an SPI interface. The two parts are variants of the same device and share the same register map and control logic; they differ only in the value reported by the product-version (chip-id) register (CTRL_REG_26): 0x46 for the ADHV4710 and 0x47 for the ADHV4711. A single no-OS driver (drivers/amplifiers/adhv4710) supports both variants, selected at initialization time.

The firmware initializes the amplifier, configures its overcurrent (source and sink), overvoltage (positive and negative) and overtemperature protection limits, and then periodically polls the alarm status register, reporting any triggered protection over UART and re-enabling the amplifier from a latched shutdown.

Applications

  • High voltage signal conditioning

  • Piezoelectric transducer and MEMS driving

  • Programmable power supplies

  • Automated test equipment (ATE)

Selecting the Device Variant

The driver distinguishes the two parts through the id field of struct adhv4710_init_param, using enum adhv4710_type:

enum adhv4710_type {
        ID_ADHV4710,
        ID_ADHV4711,
};

At initialization the driver reads CTRL_REG_26 and validates it against the expected product-version value for the selected variant (returning -ENXIO on mismatch). The variant used by the example is a build-time Kconfig option (Device variant under the eval-adhv4710 configuration menu), which defaults to the ADHV4710. It maps to the ADHV4710_DEV_ID macro consumed in the Project Common Data Path.

To build for the ADHV4711, select it interactively via menuconfig (ADHV4710 -> ADHV4711) after configuring the build:

cmake --build build/eval-adhv4710-adhv4710_example-ad-apard32690-sl \
   --target menuconfig

Alternatively, set the option in the project defconfig (projects/eval-adhv4710/adhv4710_example.conf) before building:

CONFIG_EVAL_ADHV4710_VARIANT_ADHV4711=y

Hardware Specifications

Board Connections

The evaluation board is controlled over a 4-wire SPI interface plus a GPIO used for hardware reset. The example also toggles a user LED to indicate liveness. The SPI, reset and LED pins are defined in the Project Platform Configuration Path.

No-OS Build Setup

Please see: No-OS Build Guide

No-OS Supported Examples

The initialization data used in the example is taken out from the Project Common Data Path.

The macros used in Common Data are defined in platform specific files found in the Project Platform Configuration Path.

ADHV4710 example

The adhv4710_example initializes the UART console and the SPI interface, performs a hardware reset of the amplifier, and initializes the device for the variant selected by ADHV4710_DEV_ID. It then clears the shutdown latch, enables all alarm latches, programs the nominal quiescent current, and configures the overcurrent (source and sink), overvoltage (positive and negative) and overtemperature protection limits from the user-defined values in common_data.h.

In its main loop the example periodically reads the alarm status register (CTRL_REG_14), prints any triggered protection over UART, clears the latched alarm flags, and re-enables the amplifier from shutdown when required, toggling the user LED each cycle.

No-OS Supported Platforms

Maxim Platform

Used Hardware

Connections

Connect the evaluation board to the MAX32690 SPI pins (CS, MOSI, MISO, SCLK), the reset GPIO and ground/power as configured in the platform files.

Build Command

For toolchain setup and prerequisites, see the Maxim CMake build guide.

Available variant: adhv4710_example. Available board: ad-apard32690-sl (MAX32690). See the combination list with python tools/scripts/no_os_build.py list --project eval-adhv4710.

# point MAXIM_LIBRARIES at the Maxim SDK Libraries directory
export MAXIM_LIBRARIES=~/MaximSDK/Libraries
# Windows (PowerShell):
#   $env:MAXIM_LIBRARIES = "C:\MaximSDK\Libraries"

cd no-OS

# configure and build the project
python tools/scripts/no_os_build.py build \
   --project eval-adhv4710 --variant adhv4710_example --board ad-apard32690-sl

# build and flash (OpenOCD from the Maxim SDK)
python tools/scripts/no_os_build.py build \
   --project eval-adhv4710 --variant adhv4710_example --board ad-apard32690-sl \
   --probe openocd --flash

# clean rebuild
python tools/scripts/no_os_build.py build \
   --project eval-adhv4710 --variant adhv4710_example --board ad-apard32690-sl --clean