AD7091R-2/-4/-8 no-OS Example Project
Supported Devices
Supported Evaluation Boards
Overview
The ad7091r-2, ad7091r-4, and AD7091r-8 are 2-/4-/8-channel, ultra low power power dissipation, successive approximation register (SAR) analog-to-digital converter (ADC). The AD7091R-2/-4/-8 ADCs are multichannel versions of AD7091r. The AD7091R-2/AD7091R-4/AD7091R-8 operates from a single 2.7 V to 5.25 V power supply.
See complementary documentation at https://wiki.analog.com/resources/tools-software/uc-drivers/ad7091r8.
Hardware Specifications
Use the test points for interfacing the EVAL-AD7091R-xSDZ with the microcontroller.
The instructions below describe how to set up EVAL-AD7091R-xSDZ with MAX78000FTHR.
The evaluation board default configuration is intended to work with EVAL-SDP-CB1Z so it must be adapted to connect to a different platform.
EVAL Board Jumper Links
For the jumper links, use the following configuration:
Link |
Link Position |
LK1 |
B |
LK2 |
B |
LK3 |
B |
LK8 |
A |
LK9 |
B |
LK11 |
A |
EVAL Board Soldering Links
Use a soldering iron to change a few soldering links.
Unsolder R126 (enable drive CS through CS test point)
Unsolder R127 (enable drive SDI through SDI test point)
Unsolder R128 (enable drive CONVST through CONVST test point)
Unsolder SL19 (enable drive SCLK through SCLK test point)
Unsolder SL20 (enable drive SDO through SDO test point)
Power VDD and Vdrive supplied with MAX78000FTHR 3.3V pins.
Solder R68 points together (enable drive the RESET pin through RESET test point)
Unsolder LK13 and LK14 from position A and solder them in position C (tie MUX_OUT with ADC_IN).
Unsolder SL09 and SL10 from position A and solder each of them to position B to allow the VIN7 signal to bypass the input buffer.
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 out from: Project Common Data Path
The macros used in Common Data are defined in platform specific files found in: Project Platform Configuration Path
Basic example
This is a simple example which initializes the ad7091r-2/-4/-8 selected device and performs analog to digital conversions in a while loop with a period of 1s. The data is printed on the serial interface.
In order to build the basic example project, add the following configuration in Makefile
# Force select an example by assigning y for enabling.
BASIC_EXAMPLE = y
Alternatively, one can set the desired example flag when calling the compiler to make it build the project with the specified example.
# Builds the project's basic example.
make BASIC_EXAMPLE=y
IIO example
This project is actually a IIOD demo for EVAL-AD7091R-xSDZ device series. The project launches a IIOD server on the board so that the user may connect to it via an IIO client running in the microcontroller. Using IIO-Oscilloscope, the user can configure the ADC and view the measured data in the Digital Multi Meter tab (DMM).
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
The No-OS IIO Application together with the No-OS IIO ad7091r8 driver take care of all the back-end logic needed to setup the IIO server.
This example initializes the IIO device and calls the IIO app as shown in: IIO Example
This example supports single-shot ADC readings. At each read request, the ad7091r8 driver writes to the channel register (address 0x01) to set the desired channel for conversion, does a dummy conversion to allow the channel sequencer to update, then does the another conversion to get the date for the requested channel. Before every transfer during an ADC read procedure, the CONVST line is pulsed either to update the channel sequencer or to trigger an actual ADC read. The CONVST pin is not pulsed if only reading or writing to configuration registers.
In order to build the IIO project make sure you have the following configuration in the Makefile
# Select the example you want to enable by choosing y for enabling and n for disabling
BASIC_EXAMPLE = n
IIO_EXAMPLE = y
Alternatively, one can set the desired example flag when calling the compiler to make it build the project with the specified example.
# Builds the project with a simple IIO example.
make IIO_EXAMPLE=y
IIO timer trigger example
This example extends the IIO example by enabling faster data capture rates triggered by a hardware timer.
Using IIO-Oscilloscope, the user can configure the ADC and view the measured data on a plot.
The captures happen at a predefined sample rate which is defined by the timer configuration at build time. The timer settings can be modified to reach slower or faster sample rates.
The initialization data used in the timer is taken out from platform parameter files under subdirectories of Project Platform Configuration Path
The initialization of IIO device, buffer, and IIO app is done in: IIO Timer Trigger Example
The hardware timer periodically triggers an interrupt that runs a callback function. That callback function calls the IIO app which in turn calls the trigger handler in the ad7091r8 driver. The ad7091r8 trigger handler then runs the ADC to get samples from each enabled channel and pushed the data to a buffer which is latter delivered to the application.
In order to build the IIO project make sure you have the following configuration in the Makefile
# Select the example you want to enable by choosing y for enabling and n for disabling
BASIC_EXAMPLE = n
IIO_TIMER_TRIGGER_EXAMPLE = y
Alternatively, one can set the desired example flag when calling the compiler to make it build the project with the specified example.
# Builds the project with an IIO example supporting buffered captures.
make IIO_TIMER_TRIGGER_EXAMPLE=y
No-OS Supported Platforms
Maxim Platform
Used hardware:
EVAL Board and Microcontroller Connections
There are a number of connections to make between the ADC evaluation board and the microcontroller.
EVAL-AD7091R-xSDZ test point |
Pin Function |
MAX78000FTHR Pin function (Pin number) |
CS |
Chip Select |
SS0 (P0_11) |
SCLK |
Serial Clock |
SCLK (P0_7) |
SDO |
Serial Data Out |
MISO (P0_6) |
SDI |
Serial Data In |
MOSI (P0_5) |
RESET |
ADC Reset |
GPIO (P0_19) |
CONVST |
Conversion Start Signal |
GPIO (P1_6) |
VDRIVE (J4) |
Digital Supply Voltage Input |
3.3V (pin 2) |
GND (J4) |
Digital Supply Voltage Ground |
GND (pin 4) |
VDD (J9) |
Power Supply Input |
3.3V (pin 2) |
GND (J9) |
Power Supply Ground |
GND (pin 4) |
Build Command
# to delete current build
make reset
# to build the project
make PLATFORM=maxim TARGET=max78000
# to flash the code
make run
# to debug the code
make debug