Wiki

This version (06 Jul 2023 12:43) was approved by Pratyush Mallick.

AD719x IIO Application

Introduction

This page gives an overview of using the ARM platforms supported (default is Mbed) firmware example with Analog Devices AD719x Evaluation board and SDP-K1 controller board. This example code leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate the AD719x device by providing a device debug and data capture support.

IIO oscilloscope is used as client application running on Windows-os, which is ADI developed GUI for ADC data visualization and device debug. The interface used for communicating client application with firmware application (IIO device) is UART (Note: SDP-K1 can also support high speed VirtualCOM port @1Mbps or higher speed for faster data transmission). The firmware application communicates with IIO device using ADI No-OS drivers and platform drivers low level software layers. SDP-K1 is used as controller board, on which IIO firmware application runs and using above software libraries, the IIO firmware communicates with IIO device.

This code has been developed and tested on SDP-K1 Controller Board using the on-board SDP-120 Headers. However, same code can be used without or with little modifications on any Mbed enabled board which has Arduino Header Support on it, such as STM32-Discovery, STM32-Nucleo, etc.
26 Dec 2022 09:51 · Janani Sunil
26 Dec 2022 10:39 · Janani Sunil

Hardware Connections

Jumper Settings: SDP-K1: Connect the VIO_ADJUST jumper on the SDP-K1 board to 3.3V position to drive SDP-K1 GPIOs at 3.3V

EVAL-AD719X:

  • Stack the EVAL-AD719X-ASDZ on the Arduino connectors of the SDP-K1 board.
  • Connect a male-to-male jumper wire between D8 and D12 on Arduino connectors.
  • Set the LK7 and LK8 jumper headers to 3.3V.
  • Set LK12 jumper header to position

For data transmission to IIO client, VirtualCOM Or UART serial communication is used. SDP-K1 by default uses the VCOM serial interface for higher speed data transmission.

SDP-K1 is powered through USB connections from the computer. SDP-K1 acts as a Serial device when connected to PC, which creates a COM Port to connect to IIO Oscilloscope GUI running on windows-os. The COM port assigned to a device can be seen through the device manager for windows-based OS.

SDP-K1 can support high speed VirtualCOM port USB interface, so by default VCOM is configured as default interface in the firmware. The interface can be set to UART by defining macro “USE_PHY_COM_PORT” in the app_config.h file.

*Note: Actual COM port number for your device may not be the same as shown above. Therefore, always check your SDP-K1 serial COM port number before connecting to IIO client.

26 Dec 2022 10:42 · Janani Sunil

Software Downloads

MBED Firmware

This section briefs on the usage of MBED firmware. This also explains the steps to compile and build the application using mbed and make based build.

Source code is hosted here:

Build Guide for Precision Converters MBED firmware (Use below link):

26 Dec 2022 18:38 · Janani Sunil

Libiio: IIO Library

This library provides an abstracted library interface to communicate IIO device and IIO client application (IIO Oscilloscope) without worrying about the low level hardware details. Download and install below Libiio windows installer in your computer.

Libiio installer for Windows (Use below link):

26 Dec 2022 10:20 · Janani Sunil

IIO Oscilloscope (Client)

This is a GUI (Graphical User Interface) based IIO client application for data visualization and device configuration/debugging. The data from IIO devices (ADCs/DACs) is transmitted over Serial/Ethernet/USB link to IIO Oscilloscope client through the abstracted layer of “libiio”. Download and install below IIO Oscilloscope windows installer in your computer.

IIO Oscilloscope installer for Windows (Use below link):


26 Dec 2022 10:22 · Janani Sunil
26 Dec 2022 10:50 · Janani Sunil

Evaluating AD719x Using IIO Ecosystem

Ensure that hardware connection has been made properly in between Controller Board (SDP-K1) and ADC Eval board. Also ensure all software's (IIO firmware, Libiio windows installer and IIO Oscilloscope windows installer) are downloaded and installed in your computer before trying to communicate with the device.
26 Dec 2022 10:52 · Janani Sunil

Running IIO Oscilloscope (Client)

Open the IIO Oscilloscope application from start menu and configure the serial (UART) settings as shown below. Click on refresh button and AD719X device should pop-up in IIO devices list.

Click 'Connect' and it should by default open the data ‘Capture’ window. You can drag aside or close this window to see the main ‘Debug and DMM’ tab window.

Configure/Access Device Attributes (Parameters)

The IIO Oscilloscope allows user to access and configure different device parameters, called as 'Device Attributes“. There are 2 types of attributes:

  1. Device Attributes (Global): Access/Configure common device parameters.
  2. Channel Attributes (Specific to channels): Access/Configure channel specific device parameters.

How to read and write attribute:

  • To 'Read' an attribute, simply select the attribute from a list or press 'Read' button on left side.
  • To 'Write' an attribute, select attribute value in the 'value field' and press 'Write' button.

Using DMM Tab to Read DC Voltage on Input Channels

DMM tab can be used read the instantaneous voltage applied on analog input channels. Simply select the device and channels to read and press start button.

*Note: The voltage is just instantaneous, so it is not possible to get RMS AC voltage or averaged DC voltage. Also, when using DMM tab, do not access/use the Data Capture or Debug tab as this could impact data capturing. Both DMM scan and data capture uses different methods of conversion. The DMM data is read using single conversion, while data capture uses continuous conversion mode of operation.

Data Capture from IIO Device

To capture the data from AD719x IIO device, simply select the device and channels to read/capture data. The data is plotted as “ADC Raw Value” Vs “Number of Samples” and is just used for Visualization. The data is read as is from device without any processing. If user wants to process the data, it must be done externally by capturing data from the Serial link on controller board.

*Note: The DMM or Debug tab should not be accessed when capturing data as this would impact data capturing. Both DMM scan and data capture uses different methods of conversion. The DMM data is read using single conversion, while data capture uses continuous conversion mode of operation.

More info here: Data Capture using IIO App

Time Domain Plot

*Note: When enabling more than 4 channels, the number of samples should be decreased to 200 to avoid timeout in the IIO oscilloscope.

Frequency Domain Plot

*Note: Max 4096 samples can be selected for plotting frequency domain response due to limited buffer size in the firmware.


Python Environment and Scripts

Data capture, device calibration, etc. can be achieved with python based IIO clients, using 'pyadi-iio' library. A possible option using ADI's pyadi-iio library in python has been demonstrated in the forthcoming sections. The python scripts are provided along with firmware package.

Setting-up Python Environment

  • Please install python into your local machine. The python scripts are developed and executed using python 3.8.0 version, so recommend using version 3.8.0 or beyond. Download python
  • Once python is installed, make sure the environment path (on windows machine) is set properly. You can verify if python is installed properly by typing “python --version” command on command line tool such as gitbash, command prompt, power shell, etc.
  • Install the “pyadi-iio” python package by executing command “python -m pip install pyadi-iio”. Detailed guide on installing it is available in Python Interfaces for ADI Hardware

* Make sure to install additional support packages by running requirements.txt file using command “python -m pip install -r requirements.txt” from “scripts/” directory.”

Modifying/running Python Scripts

  • All python scripts specific to ad719x IIO firmware are stored into “scripts” folder present in the project directory.
  • Ensure that the firmware is compiled with the noise testing mode, using the macros in the app_config.h file.

  • Update the ‘uri’ interface in script according to COM port assigned to your device (sdp-k1). Default COM port is set to COM16 in all scripts.
  • Update the ‘device_name’ variable to match with the device name in the compiled firmware.

  • Enable the channel and size of the sample block for noise analysis.

Output Obtained from the Python Script While executing the ad719x_rms_50hz_test.py, the command prompt requests for the number of samples to be entered by the user. This should be multiple of defined sample block size. On successful completion of capturing n samples, the noise data is displayed on the windows and the data points are stored in a csv as adc_data_capture.csv in the folder where the script is present.

{{:resources:tools-software:product-support-software:ad719x_iio_python_2.png|}}


AD719x Firmware Structure

app_config.h

This file can be used to:

  • Select the active platform using macro “ACTIVE_PLATFORM_MBED” (Only Mbed is supported)
  • Select UART baud rate (for physical UART port) using “IIO_UART_BAUD_RATE” macro. Default is 230400.
  • Select burst capture mode or continuous capture mode using “DATA_CAPTURE_MODE” macro.
  • Select the active device by defining as “DEV_AD7193”. Default is AD7193
  • Uncomment the “BIPOLAR_MODE” macro to enable bipolar mode. Default is Unipolar mode.
  • Uncomment the “DIFFERENTIAL_INPUT” macro to enable differential input. Default is Pseudo differential input.

ad719x_user_config.c/.h

These files define the user configurations for the AD719X, such as SPI parameters (frequency, mode, etc) and other init parameters used by No-OS drivers to initialize AD719X device (gain, data output rate, reference voltage etc).

ad719x_data_capture.c

This file implements the data capturing logic for the AD719x device. The data capturing can be done using normal burst mode or continuous mode.

ad719x_iio.c

This file defines getter/setter functions for all the device and channel specific attributes (related to AD719X devices) to read/write the device parameters. The majority of device specific functionality is present in this module.

No-OS Drivers for AD719x

The no-OS drivers provide the high level abstracted layer for digital interface of AD719x devices. The complete digital interface (to access memory map and perform data read) is done in integration with platform drivers. The functionality related with no-os drivers is covered in below 2 files:

  1. ad719x.c
  2. ad719x.h
resources/tools-software/product-support-software/ad719x_mbed_iio_application.txt · Last modified: 06 Jul 2023 08:44 by Pratyush Mallick