AD559XR Console Application

Supported Hardware

Supported Devices:

Supported Evaluation Boards:

Supported Carrier Boards:

Introduction

The AD5592R/ AD5593R offer 8-Channel, 12-Bit, configurable ADC/DAC with on-chip reference and either SPI (AD5592R) or I2C interfaces (AD5593R). This page gives an overview of using the AD5592R/AD5593R firmware example with SDP-K1 EVAL board. The firmware example comprises 3 layers of software (from top to bottom): Console Application Layer, Device No-OS Layer and Platform Drivers (Mbed-OS) layer.

The application layer uses the ADI Console Libraries to create console-based User Interactive (UI). The middle layer of No-OS device library has device specific APIs to interface with AD5592R/93R devices. These APIs allows direct access to device register map in order to read/write device registers. The bottom layer of Platform Drivers is responsible for Low Level Interface. The platform drivers use mbed-os libraries to access low level peripheral (like GPIOs, SPI, I2C, etc). The devices from AD5592R/AD5593R family use SPI and I2C communication interfaces respectively.

The Mbed Platform simplifies the overall software development process by providing the low-level driver support. This reduces the hardware dependency as any Mbed enabled board can be used with same firmware with little modifications (changing a pin mapping).

Interface Diagram

The EVAL-AD5592R is connected to SDP-K1 through the on-board default 120-pin SDP connector. Meanwhile, the EVAL-AD5593R is connected using the K1’s Arduino Header and jumper cables.

Both evaluation boards have 8 I/O pins available on the SMB connectors - I/O 0-7. These connectors are analog inputs or outputs depending on whether the I/Ox pin is configured as ADCs or DACs, or as digital inputs or outputs if the I/Ox pin is configured as a GPIO.

The SDP-K1 is connected to PC through USB cable and appears as a USB disk device. The firmware can be loaded into SDP-K1 board through this USB interface from PC, by copying a firmware image file onto the USB disk.

Hardware Connections

The SDP-K1 is powered by the USB connection to a PC. The SDP-K1 appears as a USB serial device, and the host PC creates a serial or COM Port that can be connected to connect by Terminal software such as Teraterm, Putty, etc. The serial port assigned to a device can be found using the Device Manager for a Windows based OS.

The EVAL-AD5592R-1SDZ can be connected to the SDP-K1 using the 120-way header and is used for the SPI signals. A separate VDD power supply connection is required, either 5V or 3.3V. This can be wired from the corresponding pin on the SDP-K1 Arduino power header to the J2-1 ‘VDD’ screw terminal.

  • If using the on-board ADR431 external reference, a 5V supply is required to provide enough headroom for the reference.

  • If using the AD5592R internal reference, a 3.3V supply is sufficient.

For the firmware example code set the links as follows

  • LK1-B, selects external VDD supply on J2-1

  • LK3-A, selects ADR431 as reference

  • LK11-A, selects 3.3V from SDP as Vlogic supply

  • LK2, LK4 to LK9, LK20 - when fitted, connects pull down resistor to ground. Remove link depending on how the I/O pins are configured and used.

The EVAL-AD5593RSDZ can be connected to the SDP-K1 using fly wires from the Arduino header to the signal pins available on J5 and other headers. The VDD power supply connection can be either 5V or 3.3V. This can be wired from the corresponding pin on the SDP-K1 Arduino power header to the J2-1 ‘VDD’ screw terminal.

  • If using the on-board ADR431 external reference, a 5V supply is required to provide enough headroom for the reference.

  • If using the AD5592R internal reference, a 3.3V supply is sufficient.

The connections to be made between the SDP-K1 and the EVAL-AD55923RSDZ are as follows:

SDP-K1 Arduino Header

EVAL-AD5593RSDZ

SCL/D15

J5-2 ‘SCLK’

SDA/D14

J5-3 ‘SDI’

5V or 3.3V

J2-1 ‘VDD’

3.3V

J1-1 ‘EXT_LOGIC’

GND

J5-10 ‘GND’

For the firmware example code set the links as follows

  • LK1-B, selects external VDD supply on J2-1

  • LK3-A, selects ADR431 as reference

  • LK11-B, selects external Vlogic supply on J1-1

  • LK2, LK4 to LK9, LK20 - when fitted, connects pull down resistor to ground. Remove link depending on how the I/O pins are configured and used.

Build Guide

Build Prerequisites

Prior to building a firmware project, it is required to set up an environment so that the build process may find the necessary tools (compiler, linker, SDK etc.). Use the following steps to prepare your environment for building firmware projects for respective platform.

  • Clone Precision Converters Firmware repository with the –recursive flag (not needed if building with web IDE for Mbed platform):

git clone --recursive https://github.com/analogdevicesinc/precision-converters-firmware
  • If however you’ve already cloned the repository without the –recursive flag, you may initialize all the submodules in an existing cloned repo with:

git submodule update --recursive --init
  • Install Make in the root of ‘C’ drive without any spaces in the installation path. The path must be C:\GnuWin32\…. Add this path into the system environmental path variable (as shown in below screenshot).

  • Install Git and add a path of C:\Program Files\Git\usr\bin\ directory into system environmental path variable (please verify your git installation path is correct).

  • Install Mbed CLI 1 as per guide here.

  • Install GNU Arm Embedded compiler (for the development, 9-2019-q4-major version is used) and add a path of GNU Arm Embedded Toolchain bin directory into the system environmental path variable (as shown in below screenshot).

  • Configure the compiler location with Mbed CLI. This can be carried out by running the mbed config -G GCC_ARM_PATH <path-to-your-gcc-compiler> in Command Prompt. For example you can run mbed config -G GCC_ARM_PATH “C:\Program Files (x86)\GNU Tools ARM Embedded\9 2019-q4-major\bin” in command prompt. It will set mentioned compiler path to all the Mbed Projects.

Building a project

Once the build enviornment is setup, follow the guide below to build your project and generate executable file (.bin/.hex)

  • Clone the Precision Converters Firmware repository into Keil Studio using “File->clone…” menu.

  • Once the project repository is imported, wait until all library dependencies are imported as shown in below screenshot. Now, open the ‘.medignore’ file present in the root directory of repository. Add comment syntax (two forward slashes) in front of the project name which you want to build. This will ignore all other projects and build only the comment syntax selected project.

  • Select the target device (default used for development is SDP-K1) and click on ‘Clean build’ option to build the project. After a successful build a binary will be downloaded to your computer- store this on your drive. Drag and drop this binary to the USB drive hosted by your controller board to flash the MCU.

Note

If you intend to build different project, then modify the .medignore file in the root directory as mentioned in step2 and clean build project as mentioned in step3

  • Open Git bash and change current directory to project directory (eg. precision-converters-firmware/projects/ad4130_iio directory) which you want to build.

  • Type make on the git bash command prompt to build a project.

  • After successful build, binary file will be created into the Project_Name/build directory.

  • If you want to clean build, type make reset on git bash command which deletes all generated build files for the given project.

Note

Default TARGET_BOARD is SDP_K1 and COMPILER is GCC_ARM. Current Make based build only support GCC_ARM Compiler.

  • By default project is built for “SDP_K1” Board and “GCC_ARM” Compiler. If you want to build for other Mbed Board, For example If you want to build the project for “DISCO_F769NI” Board then run make TARGET_BOARD=DISCO_F769NI command in git bash command prompt. If you want to clean build, run make reset TARGET_BOARD=DISCO_F769NI command to delete the generated build files for the given project.

  • Open the respective project directory by navigating into the “precision_converters_firmware/projects/” folder.

  • In the “STM32” folder present within the project directory, double click and open the .ioc file present within.

  • Click on the “Generate Code” option seen on the top right corner

  • Upon successful generation of drivers for the selected MCU, the autogenerated files would be seen in the same directory where the .ioc file was present. Double click and open the “.project” file seen in the list of files

  • After the project is loaded to the STM32CubeIDE, unfold the adxxxx_iio project seen in the project explorer, right click the “app” folder, select “Settings” under the “C/C++ Build” section on the left pane and un-check the “Exclude resources from build” checkbox. This would ensure that the project specific files are included by the build system

  • In order to choose STM32 platform in the firmware, select the “ACTIVE_PLATFORM” as “STM32_PLATFORM” in the app_config.h from the respective project. Alternately , add compiler flag “ACTIVE_PLATFORM=value of STM32_PLATFORM in app_config.h” for selecting stm32 platform.

  • Add compiler flags “-u _printf_float” to the project settings.

  • Program by clicking on the “Run adxxxx_iio” option seen or by performing a copy->paste option of the .hex file seen in the STM32/Debug folder

Running a project

Once the firmware build is successful and binary file is generated, copy the generated binary into USB drive hosted by your MCU board (e.g. USB drive hosted by SDP-K1 board on windows). This will flash the binary file into MCU present on the controller board. Programming might vary based on the tools used for building a project. The ‘Project Build’ section above talks about this exception at the end of all build steps.

Quick Start

If you have some familiarity with the Mbed platform, the following is a basic list of steps required to start running the code, see below for more detail:

  • Connect the AD5592R/AD55593R EVAL-board to the SDP-K1 controller board.

  • Connect the SDP-K1 controller board to your computer over USB.

  • Go to the link provided above in the ‘Build Guide’ section and import code into Keil Studio Web IDE.

  • Ensure SDP-K1 controller board is selected (top right of online-compiler page).

  • Compile the code.

  • After a successful compile a binary will be downloaded to your computer - store this on your drive.

  • Drag and drop this binary to the USB drive hosted by your controller board.

  • Start up a serial terminal emulator (e.g., Tera Term)

  • Find the com-port your controller board is connected on and select it.

  • Set the baud-rate for 230400

  • Reset the controller board and connect.

  • Use the menu provided over the terminal window to access the evaluation board.

Note

Selecting between the AD5592R and AD5593R is done in app_config.h file by commenting or uncommenting ID_AD5592R/ID_AD5593R as the ACTIVE_DEVICE

If the AD5592R/93R is not provided with an external voltage reference, or the on-board voltage reference is not powered, enable the internal reference under [s] General Settings

Using the Firmware

The AD5592R/93R firmware example is configured to have following serial settings:

  • Baud rate: 230400

  • Data bits: 8-bits

  • Parity: None

  • Stop bits: 1

Configure your serial terminal (Tera Term) for below settings:

The AD5592R Main Menu looks like below (with Tera Term):

The firmware is designed to be intuitive to use, and requires little explanation, simply enter the letter corresponding to the required command and follow the on-screen prompts.

The console menu application provides the following main features:

  • Configure each of the 8 I/O channels as ADCs, DACs, ADCs and DACs, GPI or GPO.

  • Enable/Disable general settings such as the Pre-charge buffer or change the ADC/DAC Gain.

  • Write voltage values to channels configured as DACs.

  • Read values in a conversion sequence from channels set as ADCs and included in a conversion sequence.

  • Read status of channels set as GPIO Inputs and toggle status of channels set as GPIO Outputs.

  • Perform software reset.

  • Read die temperature.

It is hoped that the most common functions of the AD5592R and AD5593R devices are coded, but it’s likely that some special functionality is not implemented.

Support

Feel free to ask questions in the EngineerZone